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)