From 38fb9ea41ef8e20cee2389d25d1db3284ffa1d5d Mon Sep 17 00:00:00 2001 From: James Turner Date: Thu, 19 Sep 2013 21:42:28 +0100 Subject: [PATCH] Intermediate static libs have issues. Switch back to including the bundled expat sources directly in the targets, since transitive linking of static libs is very awkward. Makes static build happy again (let's see what else breaks) --- 3rdparty/expat/CMakeLists.txt | 19 +++++-------------- CMakeLists.txt | 5 ++--- simgear/CMakeLists.txt | 5 +++-- 3 files changed, 10 insertions(+), 19 deletions(-) diff --git a/3rdparty/expat/CMakeLists.txt b/3rdparty/expat/CMakeLists.txt index ed5bebee..550a52c9 100644 --- a/3rdparty/expat/CMakeLists.txt +++ b/3rdparty/expat/CMakeLists.txt @@ -1,11 +1,9 @@ - configure_file ( "${PROJECT_SOURCE_DIR}/3rdparty/expat/expat_config_cmake.in" "${PROJECT_BINARY_DIR}/3rdparty/expat/expat_config.h" ) - set(expat_sources asciitab.h hashtable.h @@ -28,15 +26,8 @@ set(expat_sources sg_expat_external.h ) - -# this code will be linked into SimGearCore shared object, so it -# must be compiled with -fPIC too - - -if(SIMGEAR_SHARED AND UNIX) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") -endif() - -add_library(local_expat STATIC ${expat_sources}) - +foreach(s ${expat_sources}) + set_property(GLOBAL + APPEND PROPERTY LOCAL_EXPAT_SOURCES + "${CMAKE_CURRENT_SOURCE_DIR}/${s}") +endforeach() diff --git a/CMakeLists.txt b/CMakeLists.txt index a0112491..e277761a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -232,9 +232,8 @@ else() message(STATUS "Using built-in expat code") add_definitions(-DHAVE_EXPAT_CONFIG_H) set(EXPAT_INCLUDE_DIRS - ${PROJECT_SOURCE_DIR}/3rdparty/expat - ${PROJECT_BINARY_DIR}/3rdparty/expat) - set(EXPAT_LIBRARIES local_expat) + ${PROJECT_SOURCE_DIR}/3rdparty/expat + ${PROJECT_BINARY_DIR}/3rdparty/expat) endif(SYSTEM_EXPAT) include_directories(${EXPAT_INCLUDE_DIRS}) diff --git a/simgear/CMakeLists.txt b/simgear/CMakeLists.txt index 096d0180..e220d663 100644 --- a/simgear/CMakeLists.txt +++ b/simgear/CMakeLists.txt @@ -45,6 +45,7 @@ install (FILES ${HEADERS} DESTINATION include/simgear/) get_property(coreSources GLOBAL PROPERTY CORE_SOURCES) get_property(sceneSources GLOBAL PROPERTY SCENE_SOURCES) get_property(publicHeaders GLOBAL PROPERTY PUBLIC_HEADERS) +get_property(localExpatSources GLOBAL PROPERTY LOCAL_EXPAT_SOURCES) if(LIBSVN_FOUND) add_definitions(${APR_CFLAGS}) @@ -53,7 +54,7 @@ endif() if(SIMGEAR_SHARED) message(STATUS "Library building mode: SHARED LIBRARIES") - add_library(SimGearCore SHARED ${coreSources}) + add_library(SimGearCore SHARED ${coreSources} ${localExpatSources}) # set_property(TARGET SimGearCore PROPERTY FRAMEWORK 1) # message(STATUS "public header: ${publicHeaders}") @@ -114,7 +115,7 @@ else() source_group("${name}\\Headers" FILES ${g2}) endforeach() - add_library(SimGearCore STATIC ${coreSources}) + add_library(SimGearCore STATIC ${coreSources} ${localExpatSources}) install(TARGETS SimGearCore ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) if(NOT SIMGEAR_HEADLESS)