From e1d81f6fafc3db00b056fccb52f06a870ac09aaa Mon Sep 17 00:00:00 2001 From: Marcos Del Sol Vives Date: Sun, 7 Jan 2024 17:00:52 +0100 Subject: [PATCH] Fix embedding GD under MinGW --- client/CMakeLists.txt | 15 +++++---------- client/deps/gd-static.patch | 11 +++++++++++ 2 files changed, 16 insertions(+), 10 deletions(-) create mode 100644 client/deps/gd-static.patch diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 81ef02b65..c3ae713ec 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -217,23 +217,18 @@ endif (LZ4_INCLUDE_DIRS AND LZ4_LIBRARIES) if (NOT SKIPGD EQUAL 1) if (EMBED_GD) cmake_policy(SET CMP0114 NEW) - set(GD_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/gd/build) - set(GD_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/gd/install) + set(GD_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/gd) # Specify SOURCE_DIR will cause some errors ExternalProject_Add(gd URL https://github.com/libgd/libgd/releases/download/gd-2.3.3/libgd-2.3.3.tar.gz URL_HASH SHA256=dd3f1f0bb016edcc0b2d082e8229c822ad1d02223511997c80461481759b1ed2 PREFIX deps/gd - DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/gd - CONFIGURE_COMMAND cd ${GD_BUILD_DIR} && cmake ../src/gd -DBUILD_SHARED_LIBS=OFF -DBUILD_STATIC_LIBS=ON -DCMAKE_INSTALL_PREFIX=${GD_INSTALL_DIR} - BUILD_IN_SOURCE ON - BUILD_COMMAND make -C ${GD_BUILD_DIR} -j4 CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} LD=${CMAKE_C_COMPILER} AR=${CMAKE_AR} RANLIB=${CMAKE_RANLIB} ${CFLAGS_EXTERNAL_LIB} - INSTALL_COMMAND make -C ${GD_BUILD_DIR} install - LOG_DOWNLOAD ON + CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF -DBUILD_STATIC_LIBS=ON -DENABLE_CPP=0 -DCMAKE_INSTALL_PREFIX=. + PATCH_COMMAND cat ${CMAKE_CURRENT_SOURCE_DIR}/deps/gd-static.patch | patch -p1 ) ExternalProject_Add_StepTargets(gd configure build install) - set(GD_INCLUDE_DIRS ${GD_INSTALL_DIR}/include) - set(GD_LIBRARIES ${GD_INSTALL_DIR}/lib/libgd.a) + set(GD_INCLUDE_DIRS ${GD_BUILD_DIR}/src/gd-build/include) + set(GD_LIBRARIES ${GD_BUILD_DIR}/src/gd-build/lib/libgd.a) set(GD_FOUND ON) else (EMBED_GD) pkg_search_module(GD QUIET gdlib) diff --git a/client/deps/gd-static.patch b/client/deps/gd-static.patch new file mode 100644 index 000000000..c8447c845 --- /dev/null +++ b/client/deps/gd-static.patch @@ -0,0 +1,11 @@ +--- a/src/gd.h 2024-01-07 16:51:43.749223000 +0100 ++++ b/src/gd.h 2024-01-07 16:52:34.162291600 +0100 +@@ -45,7 +45,7 @@ + the gd sources in a project. */ + + /* http://gcc.gnu.org/wiki/Visibility */ +-#if defined(_WIN32) || defined(CYGWIN) || defined(_WIN32_WCE) ++#if 0 // Disable DLL annotations when building statically. Needed for embedding under MinGW. + # ifdef BGDWIN32 + # ifdef NONDLL + # define BGD_EXPORT_DATA_PROT