Define get_proc_addr in Cygwin-w32 build
* src/w32common.h (get_proc_addr, DEF_DLL_FN, LOAD_DLL_FN): Move definitions here from src/w32.h. * src/decompress.c [WINDOWSNT]: * src/gnutls.c [WINDOWSNT]: * src/image.c [WINDOWSNT]: * src/json.c [WINDOWSNT]: * src/lcms.c [WINDOWSNT]: * src/w32font.c [WINDOWSNT]: * src/w32uniscribe.c: * src/xml.c [WINDOWSNT]: Include w32common.h.
This commit is contained in:
parent
21397837ea
commit
36de7bd7b0
10 changed files with 38 additions and 33 deletions
|
@ -30,6 +30,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
|
|||
|
||||
#ifdef WINDOWSNT
|
||||
# include <windows.h>
|
||||
# include "w32common.h"
|
||||
# include "w32.h"
|
||||
|
||||
DEF_DLL_FN (int, inflateInit2_,
|
||||
|
|
|
@ -58,6 +58,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
|
|||
|
||||
# ifdef WINDOWSNT
|
||||
# include <windows.h>
|
||||
# include "w32common.h"
|
||||
# include "w32.h"
|
||||
# endif
|
||||
|
||||
|
|
|
@ -77,6 +77,7 @@ typedef struct x_bitmap_record Bitmap_Record;
|
|||
|
||||
/* We need (or want) w32.h only when we're _not_ compiling for Cygwin. */
|
||||
#ifdef WINDOWSNT
|
||||
# include "w32common.h"
|
||||
# include "w32.h"
|
||||
#endif
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
|
|||
|
||||
#ifdef WINDOWSNT
|
||||
# include <windows.h>
|
||||
# include "w32common.h"
|
||||
# include "w32.h"
|
||||
|
||||
DEF_DLL_FN (void, json_set_alloc_funcs,
|
||||
|
|
|
@ -34,6 +34,7 @@ typedef struct
|
|||
|
||||
#ifdef WINDOWSNT
|
||||
# include <windows.h>
|
||||
# include "w32common.h"
|
||||
# include "w32.h"
|
||||
|
||||
DEF_DLL_FN (cmsFloat64Number, cmsCIE2000DeltaE,
|
||||
|
|
33
src/w32.h
33
src/w32.h
|
@ -164,10 +164,6 @@ extern void reset_standard_handles (int in, int out,
|
|||
/* Return the string resource associated with KEY of type TYPE. */
|
||||
extern LPBYTE w32_get_resource (const char * key, LPDWORD type);
|
||||
|
||||
/* Load a function from a DLL. Defined in this file. */
|
||||
typedef void (* VOIDFNPTR) (void);
|
||||
INLINE VOIDFNPTR get_proc_addr (HINSTANCE handle, LPCSTR fname);
|
||||
|
||||
extern void release_listen_threads (void);
|
||||
extern void init_ntproc (int);
|
||||
extern void term_ntproc (int);
|
||||
|
@ -245,33 +241,4 @@ extern ssize_t emacs_gnutls_push (gnutls_transport_ptr_t p,
|
|||
const void* buf, size_t sz);
|
||||
#endif /* HAVE_GNUTLS */
|
||||
|
||||
|
||||
|
||||
/* Load a function address from a DLL. Cast the result via "VOIDFNPTR"
|
||||
to pacify -Wcast-function-type in GCC 8.1. */
|
||||
INLINE VOIDFNPTR
|
||||
get_proc_addr (HINSTANCE handle, LPCSTR fname)
|
||||
{
|
||||
return (VOIDFNPTR) GetProcAddress (handle, fname);
|
||||
}
|
||||
|
||||
/* Define a function that will be loaded from a DLL. The variable
|
||||
arguments should contain the argument list for the function, and
|
||||
optionally be followed by function attributes. For example:
|
||||
DEF_DLL_FN (void, png_longjmp, (png_structp, int) PNG_NORETURN);
|
||||
*/
|
||||
#define DEF_DLL_FN(type, func, ...) \
|
||||
typedef type (CDECL *W32_PFN_##func) __VA_ARGS__; \
|
||||
static W32_PFN_##func fn_##func
|
||||
|
||||
/* Load a function from the DLL. */
|
||||
#define LOAD_DLL_FN(lib, func) \
|
||||
do \
|
||||
{ \
|
||||
fn_##func = (W32_PFN_##func) get_proc_addr (lib, #func); \
|
||||
if (!fn_##func) \
|
||||
return false; \
|
||||
} \
|
||||
while (false)
|
||||
|
||||
#endif /* EMACS_W32_H */
|
||||
|
|
|
@ -50,4 +50,34 @@ extern int os_subtype;
|
|||
/* Cache system info, e.g., the NT page size. */
|
||||
extern void cache_system_info (void);
|
||||
|
||||
typedef void (* VOIDFNPTR) (void);
|
||||
|
||||
/* Load a function address from a DLL. Cast the result via VOIDFNPTR
|
||||
to pacify -Wcast-function-type in GCC 8.1. The return value must
|
||||
be cast to the correct function pointer type. */
|
||||
INLINE VOIDFNPTR
|
||||
get_proc_addr (HINSTANCE handle, LPCSTR fname)
|
||||
{
|
||||
return (VOIDFNPTR) GetProcAddress (handle, fname);
|
||||
}
|
||||
|
||||
/* Define a function that will be loaded from a DLL. The variable
|
||||
arguments should contain the argument list for the function, and
|
||||
optionally be followed by function attributes. For example:
|
||||
DEF_DLL_FN (void, png_longjmp, (png_structp, int) PNG_NORETURN);
|
||||
*/
|
||||
#define DEF_DLL_FN(type, func, ...) \
|
||||
typedef type (CDECL *W32_PFN_##func) __VA_ARGS__; \
|
||||
static W32_PFN_##func fn_##func
|
||||
|
||||
/* Load a function from the DLL. */
|
||||
#define LOAD_DLL_FN(lib, func) \
|
||||
do \
|
||||
{ \
|
||||
fn_##func = (W32_PFN_##func) get_proc_addr (lib, #func); \
|
||||
if (!fn_##func) \
|
||||
return false; \
|
||||
} \
|
||||
while (false)
|
||||
|
||||
#endif /* W32COMMON_H */
|
||||
|
|
|
@ -29,6 +29,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
|
|||
#include "coding.h" /* for ENCODE_SYSTEM, DECODE_SYSTEM */
|
||||
#include "w32font.h"
|
||||
#ifdef WINDOWSNT
|
||||
#include "w32common.h"
|
||||
#include "w32.h"
|
||||
#endif
|
||||
|
||||
|
|
|
@ -36,6 +36,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
|
|||
#include "composite.h"
|
||||
#include "font.h"
|
||||
#include "w32font.h"
|
||||
#include "w32common.h"
|
||||
|
||||
struct uniscribe_font_info
|
||||
{
|
||||
|
|
|
@ -31,6 +31,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
|
|||
#ifdef WINDOWSNT
|
||||
|
||||
# include <windows.h>
|
||||
# include "w32common.h"
|
||||
# include "w32.h"
|
||||
|
||||
DEF_DLL_FN (htmlDocPtr, htmlReadMemory,
|
||||
|
|
Loading…
Add table
Reference in a new issue