diff options
| author | Griffin Downs <35574547+grdowns@users.noreply.github.com> | 2019-06-06 16:30:34 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-06-06 16:30:34 -0700 |
| commit | 97d6a9be6bd5b1744d6883574433423e1d516f91 (patch) | |
| tree | ada59c913c2673375f4470e4572d44552e39b349 | |
| parent | a85359f7d30cd7caf60671916e2e1f178d329b52 (diff) | |
| parent | 16840aa123d4d9daf9eaaef8c5c659a16263145d (diff) | |
| download | vcpkg-97d6a9be6bd5b1744d6883574433423e1d516f91.tar.gz vcpkg-97d6a9be6bd5b1744d6883574433423e1d516f91.zip | |
Merge pull request #6621 from NNemec/glibmm
[glibmm] fix #6550 by partially reverting #5937 (+minor correction in glibmmconfig.h)
| -rw-r--r-- | ports/glibmm/CMakeLists.txt | 11 | ||||
| -rw-r--r-- | ports/glibmm/CONTROL | 8 | ||||
| -rw-r--r-- | ports/glibmm/fix-define-glibmmconfig.patch | 43 | ||||
| -rw-r--r-- | ports/glibmm/portfile.cmake | 8 |
4 files changed, 59 insertions, 11 deletions
diff --git a/ports/glibmm/CMakeLists.txt b/ports/glibmm/CMakeLists.txt index 8e7f8f0fe..10839260a 100644 --- a/ports/glibmm/CMakeLists.txt +++ b/ports/glibmm/CMakeLists.txt @@ -40,9 +40,14 @@ if(APPLE) link_libraries(${COREFOUNDATION_LIBRARY} ${CORESERVICES_LIBRARY} ${FOUNDATION_LIBRARY})
endif()
-if(BUILD_SHARED_LIBS)
- add_definitions(-DGLIBMM_DLL -DGIOMM_DLL)
-else()
+# Activate workaround for exporting all symbols from Windows DLLs to mimic the
+# behavior on Linux, where dynamic libraries always export all symbols.
+# The same approach was already used by the upstream MSVC build (see MSVC_NMake/gendef/gendef.cc)
+if (WIN32)
+ set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
+endif()
+
+if(NOT BUILD_SHARED_LIBS)
add_definitions(-DGLIBMM_STATIC_LIB -DGIOMM_STATIC_LIB)
endif()
diff --git a/ports/glibmm/CONTROL b/ports/glibmm/CONTROL index efef52d3f..ead483418 100644 --- a/ports/glibmm/CONTROL +++ b/ports/glibmm/CONTROL @@ -1,4 +1,4 @@ -Source: glibmm
-Version: 2.52.1-8
-Description: This is glibmm, a C++ API for parts of glib that are useful for C++. See http://www.gtkmm.org.
-Build-Depends: zlib, pcre, libffi, gettext, libiconv, glib, libsigcpp
+Source: glibmm +Version: 2.52.1-9 +Description: This is glibmm, a C++ API for parts of glib that are useful for C++. See http://www.gtkmm.org. +Build-Depends: zlib, pcre, libffi, gettext, libiconv, glib, libsigcpp diff --git a/ports/glibmm/fix-define-glibmmconfig.patch b/ports/glibmm/fix-define-glibmmconfig.patch new file mode 100644 index 000000000..90b97d907 --- /dev/null +++ b/ports/glibmm/fix-define-glibmmconfig.patch @@ -0,0 +1,43 @@ +diff --git a/MSVC_Net2013/glibmm/glibmmconfig.h b/MSVC_Net2013/glibmm/glibmmconfig.h +index 61bb83e..7dbe809 100644 +--- a/MSVC_Net2013/glibmm/glibmmconfig.h ++++ b/MSVC_Net2013/glibmm/glibmmconfig.h +@@ -7,12 +7,17 @@ + # if defined(_MSC_VER) + # define GLIBMM_MSC 1 + # define GLIBMM_WIN32 1 +-# define GLIBMM_DLL 1 ++# if !defined(GLIBMM_STATIC_LIB) ++# define GLIBMM_DLL 1 ++# endif + # elif defined(__CYGWIN__) + # define GLIBMM_CONFIGURE 1 + # elif defined(__MINGW32__) + # define GLIBMM_WIN32 1 + # define GLIBMM_CONFIGURE 1 ++# if !defined(GLIBMM_STATIC_LIB) ++# define GLIBMM_DLL 1 ++# endif + # else + /* AIX clR compiler complains about this even though it doesn't get this far */ + # error "Unknown architecture (send me gcc --dumpspecs or equiv)" +@@ -108,6 +113,7 @@ + # define GLIBMM_HAVE_WIDE_STREAM 1 + # define GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS 1 + # define GLIBMM_HAVE_C_STD_TIME_T_IS_NOT_INT32 1 ++# define GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS 1 + # define GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION 1 + # define GLIBMM_CAN_ASSIGN_NON_EXTERN_C_FUNCTIONS_TO_EXTERN_C_CALLBACKS 1 + # define GLIBMM_CAN_USE_NAMESPACES_INSIDE_EXTERNC 1 +@@ -140,11 +146,6 @@ + * it to be defined. Remove after grace period. */ + #define GLIBMM_USING_STD(Symbol) + +-/* Enable DLL-specific stuff only when not building a static library */ +-#if !defined(__CYGWIN__) && defined(__MINGW32__) && !defined(GLIBMM_STATIC_LIB) +-# define GLIBMM_DLL 1 +-#endif +- + #ifdef GLIBMM_DLL + # if defined(GLIBMM_BUILD) && defined(_WINDLL) + /* Do not dllexport as it is handled by gendef on MSVC */ diff --git a/ports/glibmm/portfile.cmake b/ports/glibmm/portfile.cmake index 40eee279c..460e32cac 100644 --- a/ports/glibmm/portfile.cmake +++ b/ports/glibmm/portfile.cmake @@ -1,12 +1,10 @@ -# Glib uses winapi functions not available in WindowsStore, so glibmm also include(vcpkg_common_functions) +# Glib uses winapi functions not available in WindowsStore if (VCPKG_CMAKE_SYSTEM_NAME STREQUAL WindowsStore) message(FATAL_ERROR "Error: UWP builds are currently not supported.") endif() -vcpkg_check_linkage(ONLY_STATIC_LIBRARY) - set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/glibmm-2.52.1) vcpkg_download_distfile(ARCHIVE URLS "http://ftp.gnome.org/pub/GNOME/sources/glibmm/2.52/glibmm-2.52.1.tar.xz" @@ -17,7 +15,9 @@ vcpkg_extract_source_archive(${ARCHIVE}) vcpkg_apply_patches( SOURCE_PATH ${SOURCE_PATH} - PATCHES ${CMAKE_CURRENT_LIST_DIR}/glibmm-api-variant.patch + PATCHES + ${CMAKE_CURRENT_LIST_DIR}/glibmm-api-variant.patch + ${CMAKE_CURRENT_LIST_DIR}/fix-define-glibmmconfig.patch ) file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) |
