diff --git a/src/lib/evil/evil_api.h b/src/lib/evil/evil_api.h new file mode 100644 index 0000000000..673bb1d2d0 --- /dev/null +++ b/src/lib/evil/evil_api.h @@ -0,0 +1,24 @@ +#ifndef EVIL_API_H +#define EVIL_API_H + +#ifdef EVIL_API +#error EVIL_API cant be already defined +#endif + +#ifdef _MSC_VER +# ifndef EVIL_DLL +# define EVIL_API +# elif defined(EVIL_BUILD) +# define EVIL_API __declspec(dllexport) +# else +# define EVIL_API __declspec(dllimport) +# endif +#else +# if __GNUC__ >= 4 +# define EVIL_API __attribute__ ((visibility("default"))) +# else +# define EVIL_API +# endif +#endif + +#endif diff --git a/src/lib/evil/evil_dlfcn.h b/src/lib/evil/evil_dlfcn.h index 22f48b72ca..a55d591443 100644 --- a/src/lib/evil/evil_dlfcn.h +++ b/src/lib/evil/evil_dlfcn.h @@ -2,6 +2,7 @@ #define __EVIL_DLFCN_H__ +#include "evil_api.h" #include @@ -142,7 +143,8 @@ struct Dl_info * * @ingroup Evil_Dlfcn */ -EAPI void *dlopen(const char* path, int mode); +EVIL_API void *dlopen(const char* path, int mode); + #ifndef HAVE_DLOPEN # define HAVE_DLOPEN 1 #endif @@ -168,7 +170,7 @@ EAPI void *dlopen(const char* path, int mode); * * @ingroup Evil_Dlfcn */ -EAPI int dlclose(void* handle); +EVIL_API int dlclose(void* handle); /** * @brief Get the address of a symbol. @@ -192,7 +194,8 @@ EAPI int dlclose(void* handle); * * @ingroup Evil_Dlfcn */ -EAPI void *dlsym(void* handle, const char* symbol); +EVIL_API void *dlsym(void* handle, const char* symbol); + #ifndef HAVE_DLSYM #define HAVE_DLSYM 1 #endif @@ -221,7 +224,8 @@ EAPI void *dlsym(void* handle, const char* symbol); * * @ingroup Evil_Dlfcn */ -EAPI int dladdr (const void *addr, Dl_info *info); +EVIL_API int dladdr(const void *addr, Dl_info *info); + #ifndef HAVE_DLADDR #define HAVE_DLADDR 1 #endif @@ -248,7 +252,7 @@ EAPI int dladdr (const void *addr, Dl_info *info); * * @ingroup Evil_Dlfcn */ -EAPI char *dlerror (void); +EVIL_API char *dlerror(void); #endif /* __EVIL_DLFCN_H__ */ diff --git a/src/lib/evil/evil_eapi.h b/src/lib/evil/evil_eapi.h deleted file mode 100644 index 2ee7f8466c..0000000000 --- a/src/lib/evil/evil_eapi.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef EVIL_EAPI -#define EVIL_EAPI - -#ifdef EAPI -# undef EAPI -#endif - -#ifdef EFL_BUILD -# ifdef DLL_EXPORT -# define EAPI __declspec(dllexport) -# else -# define EAPI -# endif -#else -# define EAPI __declspec(dllimport) -#endif - -#endif diff --git a/src/lib/evil/evil_fcntl.c b/src/lib/evil/evil_fcntl.c index dd23b7b838..eabfeed046 100644 --- a/src/lib/evil/evil_fcntl.c +++ b/src/lib/evil/evil_fcntl.c @@ -2,6 +2,8 @@ # include "config.h" #endif /* HAVE_CONFIG_H */ +#include + #include #include @@ -10,6 +12,8 @@ #include "evil_private.h" +#include + /* SOCKET is defined as a uintptr_t, so passing a fd (int) is not a problem */ static int _is_socket(SOCKET s) diff --git a/src/lib/evil/evil_fcntl.h b/src/lib/evil/evil_fcntl.h index 8f97c88559..434d2cef88 100644 --- a/src/lib/evil/evil_fcntl.h +++ b/src/lib/evil/evil_fcntl.h @@ -107,7 +107,7 @@ struct flock * * @ingroup Evil */ -EAPI int fcntl(int fd, int cmd, ...); +EVIL_API int fcntl(int fd, int cmd, ...); #endif /* __EVIL_FCNTL_H__ */ diff --git a/src/lib/evil/evil_langinfo.h b/src/lib/evil/evil_langinfo.h index b9f35029a4..26dc14d047 100644 --- a/src/lib/evil/evil_langinfo.h +++ b/src/lib/evil/evil_langinfo.h @@ -39,7 +39,7 @@ enum { # define CODESET _NL_CTYPE_CODESET # define RADIXCHAR _NL_NUMERIC_RADIXCHAR -EAPI char *nl_langinfo(nl_item index); +EVIL_API char *nl_langinfo(nl_item index); #endif /*__EVIL_LANGINFO_H__ */ diff --git a/src/lib/evil/evil_locale.c b/src/lib/evil/evil_locale.c index 15610da6a6..fc14703e80 100644 --- a/src/lib/evil/evil_locale.c +++ b/src/lib/evil/evil_locale.c @@ -2,31 +2,13 @@ # include "config.h" #endif +#include "evil_private.h" /* LC_MESSAGES */ + #include #include #include -#ifndef WIN32_LEAN_AND_MEAN -# define WIN32_LEAN_AND_MEAN -#endif -#include -#undef WIN32_LEAN_AND_MEAN - -#ifdef EAPI -# undef EAPI -#endif - -#ifdef EFL_BUILD -# ifdef DLL_EXPORT -# define EAPI __declspec(dllexport) -# else -# define EAPI -# endif -#else -# define EAPI __declspec(dllimport) -#endif - -#include "evil_locale.h" /* LC_MESSAGES */ +#include /* * LOCALE_SISO639LANGNAME and LOCALE_SISO3166CTRYNAME need at least a buffer diff --git a/src/lib/evil/evil_locale.h b/src/lib/evil/evil_locale.h index 6b12428428..87497bcfec 100644 --- a/src/lib/evil/evil_locale.h +++ b/src/lib/evil/evil_locale.h @@ -48,7 +48,7 @@ * * @since 1.16 */ -EAPI char *evil_setlocale(int category, const char *locale); +EVIL_API char *evil_setlocale(int category, const char *locale); /** diff --git a/src/lib/evil/evil_main.h b/src/lib/evil/evil_main.h index 44b8356e4d..795daa19b0 100644 --- a/src/lib/evil/evil_main.h +++ b/src/lib/evil/evil_main.h @@ -100,7 +100,7 @@ * When Evil is not used anymore, call evil_shutdown() to shut down * the Evil library. */ -EAPI int evil_init(void); +EVIL_API int evil_init(void); /** * @brief Shut down the Evil library. @@ -116,7 +116,7 @@ EAPI int evil_init(void); * documentation anymore . You must call evil_init() again to use these * functions again. */ -EAPI int evil_shutdown(void); +EVIL_API int evil_shutdown(void); /** diff --git a/src/lib/evil/evil_mman.h b/src/lib/evil/evil_mman.h index c9c57aa5e0..0e5452284f 100644 --- a/src/lib/evil/evil_mman.h +++ b/src/lib/evil/evil_mman.h @@ -107,7 +107,7 @@ * * @ingroup Evil_Mman */ -EAPI void *mmap(void *addr, +EVIL_API void *mmap(void *addr, size_t len, int prot, int flags, @@ -138,7 +138,7 @@ EAPI void *mmap(void *addr, * * @ingroup Evil_Mman */ -EAPI int munmap(void *addr, +EVIL_API int munmap(void *addr, size_t len); /** @@ -159,7 +159,7 @@ EAPI int munmap(void *addr, * * @ingroup Evil_Mman */ -EAPI int mprotect(void *addr, size_t len, int prot); +EVIL_API int mprotect(void *addr, size_t len, int prot); #endif /* __EVIL_SYS_MMAN_H__ */ diff --git a/src/lib/evil/evil_private.h b/src/lib/evil/evil_private.h index c9ba04a6b7..7a5b21f5df 100644 --- a/src/lib/evil/evil_private.h +++ b/src/lib/evil/evil_private.h @@ -21,16 +21,14 @@ extern "C" { #define EVIL_UNUSED #endif -#ifndef WIN32_LEAN_AND_MEAN -# define WIN32_LEAN_AND_MEAN -#endif -#include -#undef WIN32_LEAN_AND_MEAN +#include +#include /* for mode_t in */ #include /* for mkdir in evil_macro_wrapper */ +#include /* for mode_t in */ -#include "evil_eapi.h" +#include #ifndef PATH_MAX @@ -54,9 +52,6 @@ extern "C" { #include "evil_macro_wrapper.h" -#undef EAPI -#define EAPI - #ifdef __cplusplus } #endif diff --git a/src/lib/evil/evil_stdio.c b/src/lib/evil/evil_stdio.c index 61afe7ce3b..d4879c8b4b 100644 --- a/src/lib/evil/evil_stdio.c +++ b/src/lib/evil/evil_stdio.c @@ -2,7 +2,6 @@ # include "config.h" #endif /* HAVE_CONFIG_H */ -#include #include #include "evil_private.h" diff --git a/src/lib/evil/evil_stdio.h b/src/lib/evil/evil_stdio.h index 7032c4a2d0..cca7fc3ae1 100644 --- a/src/lib/evil/evil_stdio.h +++ b/src/lib/evil/evil_stdio.h @@ -1,6 +1,7 @@ #ifndef __EVIL_STDIO_H__ #define __EVIL_STDIO_H__ +#include /** * @file evil_stdio.h @@ -41,7 +42,7 @@ * * @since 1.8 */ -EAPI int evil_rename(const char *src, const char *dst); +EVIL_API int evil_rename(const char *src, const char *dst); #ifndef HAVE_CYGWIN typedef int mode_t; @@ -58,7 +59,7 @@ typedef int mode_t; * * @since 1.15 */ -EAPI int evil_mkdir(const char *dirname, mode_t mode); +EVIL_API int evil_mkdir(const char *dirname, mode_t mode); #endif /* __EVIL_STDIO_H__ */ diff --git a/src/lib/evil/evil_stdlib.c b/src/lib/evil/evil_stdlib.c index d6de5a4fcd..9b27d480bd 100644 --- a/src/lib/evil/evil_stdlib.c +++ b/src/lib/evil/evil_stdlib.c @@ -119,7 +119,7 @@ _mkstemp(char *suffix, int val) return val; } -EAPI char * +EVIL_API char * mkdtemp(char *__template) { char *suffix; diff --git a/src/lib/evil/evil_stdlib.h b/src/lib/evil/evil_stdlib.h index 1a9e5fc7a9..86e85301e3 100644 --- a/src/lib/evil/evil_stdlib.h +++ b/src/lib/evil/evil_stdlib.h @@ -1,7 +1,7 @@ #ifndef __EVIL_STDLIB_H__ #define __EVIL_STDLIB_H__ -#include +#include "evil_api.h" /** * @file evil_stdlib.h @@ -41,7 +41,7 @@ * * Supported OS: Windows XP. */ -EAPI int setenv(const char *name, +EVIL_API int setenv(const char *name, const char *value, int overwrite); @@ -60,7 +60,7 @@ EAPI int setenv(const char *name, * * Supported OS: Windows XP. */ -EAPI int unsetenv(const char *name); +EVIL_API int unsetenv(const char *name); /* @@ -73,7 +73,7 @@ EAPI int unsetenv(const char *name); * * @since 1.8.0 */ -EAPI char *mkdtemp(char *__template); +EVIL_API char *mkdtemp(char *__template); /** * @brief Create a unique temporary file name with a suffix. @@ -84,7 +84,7 @@ EAPI char *mkdtemp(char *__template); * * @since 1.10.0 */ -EAPI int mkstemps(char *__template, int suffixlen); +EVIL_API int mkstemps(char *__template, int suffixlen); /** * @brief Return an absolute or full path name for a specified relative path name. @@ -115,7 +115,7 @@ EAPI int mkstemps(char *__template, int suffixlen); * * Supported OS: Windows XP. */ -EAPI char *realpath(const char *file_name, char *resolved_name); +EVIL_API char *realpath(const char *file_name, char *resolved_name); #ifndef HAVE_REALPATH # define HAVE_REALPATH 1 #endif diff --git a/src/lib/evil/evil_string.h b/src/lib/evil/evil_string.h index 872834f238..7bf08cd4ba 100644 --- a/src/lib/evil/evil_string.h +++ b/src/lib/evil/evil_string.h @@ -35,7 +35,7 @@ * * Supported OS: Windows XP. */ -EAPI char *strcasestr(const char *haystack, const char *needle); +EVIL_API char *strcasestr(const char *haystack, const char *needle); /** * @brief Implements the strsep function which is used to separate strings. @@ -61,6 +61,6 @@ EAPI char *strcasestr(const char *haystack, const char *needle); * @since 1.8 * */ -EAPI char *strsep(char **stringp, const char *delim); +EVIL_API char *strsep(char **stringp, const char *delim); #endif /* __EVIL_STRING_H__ */ diff --git a/src/lib/evil/evil_time.h b/src/lib/evil/evil_time.h index 42004144a2..878ef5dd98 100644 --- a/src/lib/evil/evil_time.h +++ b/src/lib/evil/evil_time.h @@ -34,7 +34,7 @@ * * Supported OS: Windows XP. */ -EAPI char *strptime(const char *buf, const char *fmt, struct tm *tm); +EVIL_API char *strptime(const char *buf, const char *fmt, struct tm *tm); /** diff --git a/src/lib/evil/evil_unistd.c b/src/lib/evil/evil_unistd.c index 3eebf97e1e..2b596798ed 100644 --- a/src/lib/evil/evil_unistd.c +++ b/src/lib/evil/evil_unistd.c @@ -2,18 +2,18 @@ # include "config.h" #endif /* HAVE_CONFIG_H */ -#include -#include -# include - -#ifndef WIN32_LEAN_AND_MEAN -# define WIN32_LEAN_AND_MEAN -#endif -#include -#undef WIN32_LEAN_AND_MEAN - #include "evil_private.h" +#include +#include +#include +#include +#include +#include + +#include +//#include +#include LONGLONG _evil_time_freq; LONGLONG _evil_time_count; diff --git a/src/lib/evil/evil_unistd.h b/src/lib/evil/evil_unistd.h index d738a720b7..6f58ec9b7a 100644 --- a/src/lib/evil/evil_unistd.h +++ b/src/lib/evil/evil_unistd.h @@ -1,7 +1,7 @@ #ifndef __EVIL_UNISTD_H__ #define __EVIL_UNISTD_H__ -#include "evil_eapi.h" +#include "evil_api.h" /** * @file evil_unistd.h @@ -35,7 +35,7 @@ * * Supported OS: Windows XP. */ -EAPI double evil_time_get(void); +EVIL_API double evil_time_get(void); /* * Sockets and pipe related functions @@ -54,7 +54,7 @@ EAPI double evil_time_get(void); * * Supported OS: Windows XP. */ -EAPI int evil_sockets_init(void); +EVIL_API int evil_sockets_init(void); /** * @brief Shutdown the Windows socket system. @@ -65,7 +65,7 @@ EAPI int evil_sockets_init(void); * * Supported OS: Windows XP. */ -EAPI void evil_sockets_shutdown(void); +EVIL_API void evil_sockets_shutdown(void); /** * @brief Create a pair of sockets. @@ -81,7 +81,7 @@ EAPI void evil_sockets_shutdown(void); * * Supported OS: Windows XP. */ -EAPI int evil_pipe(int *fds); +EVIL_API int evil_pipe(int *fds); /** diff --git a/src/lib/evil/evil_util.h b/src/lib/evil/evil_util.h index 55b42f6823..4d7db43b3f 100644 --- a/src/lib/evil/evil_util.h +++ b/src/lib/evil/evil_util.h @@ -19,7 +19,7 @@ * * @ingroup Evil */ -EAPI wchar_t *evil_char_to_wchar(const char *text); +EVIL_API wchar_t *evil_char_to_wchar(const char *text); /** * @brief Convert a string from wchar_t * to char *. @@ -38,7 +38,7 @@ EAPI wchar_t *evil_char_to_wchar(const char *text); * * @ingroup Evil */ -EAPI char *evil_wchar_to_char(const wchar_t *text); +EVIL_API char *evil_wchar_to_char(const wchar_t *text); /** * @brief Convert a string from UTF-16 to UTF-8. @@ -57,7 +57,7 @@ EAPI char *evil_wchar_to_char(const wchar_t *text); * * @ingroup Evil */ -EAPI char *evil_utf16_to_utf8(const wchar_t *text); +EVIL_API char *evil_utf16_to_utf8(const wchar_t *text); /** * @brief Convert a string from UTF-8 to UTF-16. @@ -75,11 +75,11 @@ EAPI char *evil_utf16_to_utf8(const wchar_t *text); * * @ingroup Evil */ -EAPI wchar_t *evil_utf8_to_utf16(const char *text); +EVIL_API wchar_t *evil_utf8_to_utf16(const char *text); -EAPI const char *evil_format_message(long err); +EVIL_API const char *evil_format_message(long err); -EAPI const char *evil_last_error_get(void); +EVIL_API const char *evil_last_error_get(void); /** * @brief check if the given path is absolute. @@ -102,6 +102,6 @@ EAPI const char *evil_last_error_get(void); * * @ingroup Evil */ -EAPI int evil_path_is_absolute(const char *path); +EVIL_API int evil_path_is_absolute(const char *path); #endif /* __EVIL_UTIL_H__ */ diff --git a/src/lib/evil/evil_windows.h b/src/lib/evil/evil_windows.h new file mode 100644 index 0000000000..38fb3d0fa2 --- /dev/null +++ b/src/lib/evil/evil_windows.h @@ -0,0 +1,11 @@ +#ifndef __EVIL_WINDOWS_H__ +#define __EVIL_WINDOWS_H__ + +#ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +#endif + +#include +#include + +#endif diff --git a/src/lib/evil/meson.build b/src/lib/evil/meson.build index 8a650a67d5..de56339843 100644 --- a/src/lib/evil/meson.build +++ b/src/lib/evil/meson.build @@ -28,6 +28,7 @@ if target_machine.system() == 'windows' evil_pub_deps = [psapi, ole32, ws2_32, secur32, uuid, pcre_dep, evil_unposix] evil_lib = library('evil', evil_src, + c_args : ['-DEVIL_BUILD', '-DEVIL_DLL'], dependencies : evil_deps, include_directories : [config_dir], install: true, @@ -41,7 +42,6 @@ if target_machine.system() == 'windows' ) else evil = declare_dependency() - evil_unposix = declare_dependency() endif automatic_pkgfile = false diff --git a/src/lib/evil/unposix/limits.h b/src/lib/evil/unposix/limits.h index 4017e451e3..c8a0b9c8c2 100644 --- a/src/lib/evil/unposix/limits.h +++ b/src/lib/evil/unposix/limits.h @@ -1,17 +1,10 @@ #ifndef UNPOSIX_LIMITS_H #define UNPOSIX_LIMITS_H - -#ifdef _WIN32 -# ifndef WIN32_LEAN_AND_MEAN -# define WIN32_LEAN_AND_MEAN -# endif -# include -# undef WIN32_LEAN_AND_MEAN -# include_next -# ifndef PATH_MAX -# define PATH_MAX MAX_PATH -# endif +#include +#include_next +#ifndef PATH_MAX +# define PATH_MAX MAX_PATH #endif #endif diff --git a/src/lib/evil/unposix/sys/stat.h b/src/lib/evil/unposix/sys/stat.h index 3906b15dc7..926eab0d0f 100644 --- a/src/lib/evil/unposix/sys/stat.h +++ b/src/lib/evil/unposix/sys/stat.h @@ -1,12 +1,7 @@ #ifndef UNPOSIX_SYS_STAT_H #define UNPOSIX_SYS_STAT_H -#ifdef _WIN32 -# ifndef WIN32_LEAN_AND_MEAN -# define WIN32_LEAN_AND_MEAN -# endif -# include -#endif +#include #include <../ucrt/sys/types.h> #include_next #include diff --git a/src/lib/evil/unposix/sys/time.h b/src/lib/evil/unposix/sys/time.h index 2cc857899a..5c5de33523 100644 --- a/src/lib/evil/unposix/sys/time.h +++ b/src/lib/evil/unposix/sys/time.h @@ -5,7 +5,7 @@ # define WIN32_LEAN_AND_MEAN #endif -#include +#include #include #include #include