msvc complains if the function declaration does not match its definition (__declspec(dllexport)) thus to avoid messing up with the public header, simply use a .def file.
Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com> --- src/waffle/CMakeLists.txt | 12 ++++++++++++ src/waffle/api/api_priv.h | 3 ++- src/waffle/waffle.def.in | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 src/waffle/waffle.def.in diff --git a/src/waffle/CMakeLists.txt b/src/waffle/CMakeLists.txt index d348cb6..0363b83 100644 --- a/src/waffle/CMakeLists.txt +++ b/src/waffle/CMakeLists.txt @@ -171,6 +171,18 @@ set_source_files_properties( LANGUAGE C ) +if(waffle_on_windows) + configure_file( + waffle.def.in + ${CMAKE_CURRENT_SOURCE_DIR}/${waffle_libname}.def + @ONLY + ) + + list(APPEND waffle_sources + ${waffle_libname}.def + ) +endif() + include_directories( ${GLX_INLCLUDE_DIRS} ${X11_INCLUDE_DIRS} diff --git a/src/waffle/api/api_priv.h b/src/waffle/api/api_priv.h index 1fec575..51cf53c 100644 --- a/src/waffle/api/api_priv.h +++ b/src/waffle/api/api_priv.h @@ -39,7 +39,8 @@ // TODO: Implement WAFFLE_API for Apple. // #if defined(_WIN32) -# define WAFFLE_API __declspec(dllexport) +// Use module-definition file to restrict the exported symbols under windows. +# define WAFFLE_API #elif defined(__GNUC__) && __GNUC__ >= 4 # define WAFFLE_API __attribute__ ((visibility("default"))) #else diff --git a/src/waffle/waffle.def.in b/src/waffle/waffle.def.in new file mode 100644 index 0000000..0a85507 --- /dev/null +++ b/src/waffle/waffle.def.in @@ -0,0 +1,33 @@ +LIBRARY lib@waffle_libname@ + +EXPORTS + waffle_error_get_code + waffle_error_get_info + waffle_error_to_string + waffle_enum_to_string + waffle_init + waffle_make_current + waffle_get_proc_address + waffle_is_extension_in_string + waffle_display_connect + waffle_display_disconnect + waffle_display_supports_context_api + waffle_display_get_native + waffle_config_choose + waffle_config_destroy + waffle_config_get_native + waffle_context_create + waffle_context_destroy + waffle_context_get_native + waffle_window_create + waffle_window_destroy + waffle_window_show + waffle_window_swap_buffers + waffle_window_get_native + waffle_window_resize + waffle_dl_can_open + waffle_dl_sym + waffle_attrib_list_length + waffle_attrib_list_get + waffle_attrib_list_get_with_default + waffle_attrib_list_update \ No newline at end of file -- 2.0.2 _______________________________________________ waffle mailing list waffle@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/waffle