From ebe9b2005bacc3fd533e90759c4bf32acbc51ba6 Mon Sep 17 00:00:00 2001 From: Juan Oxoby Date: Mon, 19 Oct 2020 09:40:09 -0700 Subject: [PATCH 1/6] Add support for static library Signed-off-by: Juan Oxoby --- CMakeLists.txt | 4 ++++ cmake/SDFUtils.cmake | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f6bec5752..1151ec21f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -146,6 +146,10 @@ else() endif() endif() +#============================================================================ +# Ask whether we should make a shared or static library. +option(BUILD_SHARED_LIBS "Set this to true to generate shared libraries (recommended), or false for static libraries" ON) + ##################################### # Handle CFlags unset (CMAKE_C_FLAGS_ALL CACHE) diff --git a/cmake/SDFUtils.cmake b/cmake/SDFUtils.cmake index 525c4d4c6..f4746dd84 100644 --- a/cmake/SDFUtils.cmake +++ b/cmake/SDFUtils.cmake @@ -52,8 +52,10 @@ endmacro (BUILD_WARNING) ################################################# macro (sdf_add_library _name) set(LIBS_DESTINATION ${PROJECT_BINARY_DIR}/src) - set_source_files_properties(${ARGN} PROPERTIES COMPILE_DEFINITIONS "BUILDING_DLL") - add_library(${_name} SHARED ${ARGN}) + if(BUILD_SHARED_LIBS) + set_source_files_properties(${ARGN} PROPERTIES COMPILE_DEFINITIONS "BUILDING_DLL") + endif() + add_library(${_name} ${ARGN}) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBS_DESTINATION}) if (MSVC) set_target_properties( ${_name} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${LIBS_DESTINATION}) From 4c430aaaf39a1e0c4cfc41771e08c565a5dc7deb Mon Sep 17 00:00:00 2001 From: Juan Oxoby <49600381+joxoby@users.noreply.github.com> Date: Mon, 19 Oct 2020 09:52:40 -0700 Subject: [PATCH 2/6] Update cmake/SDFUtils.cmake Co-authored-by: Anonymous Maarten Signed-off-by: Juan Oxoby --- cmake/SDFUtils.cmake | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/cmake/SDFUtils.cmake b/cmake/SDFUtils.cmake index f4746dd84..196ddfb99 100644 --- a/cmake/SDFUtils.cmake +++ b/cmake/SDFUtils.cmake @@ -52,10 +52,8 @@ endmacro (BUILD_WARNING) ################################################# macro (sdf_add_library _name) set(LIBS_DESTINATION ${PROJECT_BINARY_DIR}/src) - if(BUILD_SHARED_LIBS) - set_source_files_properties(${ARGN} PROPERTIES COMPILE_DEFINITIONS "BUILDING_DLL") - endif() add_library(${_name} ${ARGN}) + set_target_properties(${_name} PROPERTIES DEFINE_SYMBOL "BUILDING_DLL") set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBS_DESTINATION}) if (MSVC) set_target_properties( ${_name} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${LIBS_DESTINATION}) From be8028a2ca04fd670b9b1786955ba63beaeeea91 Mon Sep 17 00:00:00 2001 From: Juan Oxoby Date: Fri, 23 Oct 2020 14:14:27 -0700 Subject: [PATCH 3/6] Change BUILDING_DLL to BUILDING_SDFORMAT Signed-off-by: Juan Oxoby --- cmake/SDFUtils.cmake | 2 +- include/sdf/system_util.hh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/SDFUtils.cmake b/cmake/SDFUtils.cmake index 196ddfb99..b410bebee 100644 --- a/cmake/SDFUtils.cmake +++ b/cmake/SDFUtils.cmake @@ -53,7 +53,7 @@ endmacro (BUILD_WARNING) macro (sdf_add_library _name) set(LIBS_DESTINATION ${PROJECT_BINARY_DIR}/src) add_library(${_name} ${ARGN}) - set_target_properties(${_name} PROPERTIES DEFINE_SYMBOL "BUILDING_DLL") + set_target_properties(${_name} PROPERTIES DEFINE_SYMBOL "BUILDING_SDFORMAT") set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBS_DESTINATION}) if (MSVC) set_target_properties( ${_name} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${LIBS_DESTINATION}) diff --git a/include/sdf/system_util.hh b/include/sdf/system_util.hh index a94b9f46e..eac190012 100644 --- a/include/sdf/system_util.hh +++ b/include/sdf/system_util.hh @@ -26,7 +26,7 @@ */ #if defined _WIN32 || defined __CYGWIN__ - #ifdef BUILDING_DLL + #ifdef BUILDING_SDFORMAT #ifdef __GNUC__ #define SDFORMAT_VISIBLE __attribute__ ((dllexport)) #else From 4ec13df89d105f28c41287b61628d781cb53a774 Mon Sep 17 00:00:00 2001 From: Juan Oxoby Date: Sun, 25 Oct 2020 10:22:07 -0700 Subject: [PATCH 4/6] Fix defines Signed-off-by: Juan Oxoby --- cmake/SDFUtils.cmake | 2 +- include/sdf/system_util.hh | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/cmake/SDFUtils.cmake b/cmake/SDFUtils.cmake index b410bebee..1f078b83f 100644 --- a/cmake/SDFUtils.cmake +++ b/cmake/SDFUtils.cmake @@ -53,7 +53,7 @@ endmacro (BUILD_WARNING) macro (sdf_add_library _name) set(LIBS_DESTINATION ${PROJECT_BINARY_DIR}/src) add_library(${_name} ${ARGN}) - set_target_properties(${_name} PROPERTIES DEFINE_SYMBOL "BUILDING_SDFORMAT") + set_target_properties(${_name} PROPERTIES DEFINE_SYMBOL "BUILDING_SDFORMAT_SHARED") set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBS_DESTINATION}) if (MSVC) set_target_properties( ${_name} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${LIBS_DESTINATION}) diff --git a/include/sdf/system_util.hh b/include/sdf/system_util.hh index eac190012..5790fc325 100644 --- a/include/sdf/system_util.hh +++ b/include/sdf/system_util.hh @@ -26,20 +26,22 @@ */ #if defined _WIN32 || defined __CYGWIN__ - #ifdef BUILDING_SDFORMAT + #ifdef BUILDING_SDFORMAT_SHARED #ifdef __GNUC__ #define SDFORMAT_VISIBLE __attribute__ ((dllexport)) #else #define SDFORMAT_VISIBLE __declspec(dllexport) #endif - #else + #elif !defined SDFORMAT_STATIC_DEFINE #ifdef __GNUC__ #define SDFORMAT_VISIBLE __attribute__ ((dllimport)) #else #define SDFORMAT_VISIBLE __declspec(dllimport) #endif + #else + #define SDFORMAT_VISIBLE + #define SDFORMAT_HIDDEN #endif - #define SDFORMAT_HIDDEN #else #if __GNUC__ >= 4 && !defined SDFORMAT_STATIC_DEFINE #define SDFORMAT_VISIBLE __attribute__ ((visibility ("default"))) From 92a981337f340f747dc7e300262d78227d477d33 Mon Sep 17 00:00:00 2001 From: Juan Oxoby Date: Sun, 25 Oct 2020 15:43:11 -0700 Subject: [PATCH 5/6] Add SDFORMAT_STATIC_DEFINE in cmake Signed-off-by: Juan Oxoby --- cmake/SDFUtils.cmake | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cmake/SDFUtils.cmake b/cmake/SDFUtils.cmake index 1f078b83f..21ac67827 100644 --- a/cmake/SDFUtils.cmake +++ b/cmake/SDFUtils.cmake @@ -54,6 +54,9 @@ macro (sdf_add_library _name) set(LIBS_DESTINATION ${PROJECT_BINARY_DIR}/src) add_library(${_name} ${ARGN}) set_target_properties(${_name} PROPERTIES DEFINE_SYMBOL "BUILDING_SDFORMAT_SHARED") + if(NOT BUILD_SHARED_LIBS) + target_compile_definitions(${_name} PUBLIC SDFORMAT_STATIC_DEFINE) + endif() set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBS_DESTINATION}) if (MSVC) set_target_properties( ${_name} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${LIBS_DESTINATION}) From b5a8b1e8d4635bd08f065750eae33a8c3966d971 Mon Sep 17 00:00:00 2001 From: Juan Oxoby Date: Sun, 25 Oct 2020 15:57:06 -0700 Subject: [PATCH 6/6] Drop __GNUC__ conditional Signed-off-by: Juan Oxoby --- include/sdf/system_util.hh | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/include/sdf/system_util.hh b/include/sdf/system_util.hh index 5790fc325..c2488dbb9 100644 --- a/include/sdf/system_util.hh +++ b/include/sdf/system_util.hh @@ -27,20 +27,11 @@ #if defined _WIN32 || defined __CYGWIN__ #ifdef BUILDING_SDFORMAT_SHARED - #ifdef __GNUC__ - #define SDFORMAT_VISIBLE __attribute__ ((dllexport)) - #else - #define SDFORMAT_VISIBLE __declspec(dllexport) - #endif + #define SDFORMAT_VISIBLE __declspec(dllexport) #elif !defined SDFORMAT_STATIC_DEFINE - #ifdef __GNUC__ - #define SDFORMAT_VISIBLE __attribute__ ((dllimport)) - #else - #define SDFORMAT_VISIBLE __declspec(dllimport) - #endif + #define SDFORMAT_VISIBLE __declspec(dllimport) #else #define SDFORMAT_VISIBLE - #define SDFORMAT_HIDDEN #endif #else #if __GNUC__ >= 4 && !defined SDFORMAT_STATIC_DEFINE