C++17: use an OBJECT_LIBRARY to build HLA
This allows us to easily have different CXX version for the HLA code, to the rest of the project.
This commit is contained in:
parent
26b207f20c
commit
346344ee09
@ -213,7 +213,7 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(Boost REQUIRED)
|
find_package(Boost REQUIRED)
|
||||||
set (BOOST_CXX_FLAGS "-DBOOST_BIMAP_DISABLE_SERIALIZATION -DBOOST_NO_STDLIB_CONFIG")
|
set (BOOST_CXX_FLAGS "-DBOOST_BIMAP_DISABLE_SERIALIZATION -DBOOST_NO_STDLIB_CONFIG -DBOOST_NO_AUTO_PTR -DBOOST_NO_CXX98_BINDERS")
|
||||||
include(BoostTestTargets)
|
include(BoostTestTargets)
|
||||||
|
|
||||||
if(SIMGEAR_HEADLESS)
|
if(SIMGEAR_HEADLESS)
|
||||||
@ -287,7 +287,7 @@ if(ENABLE_RTI)
|
|||||||
find_package(PkgConfig)
|
find_package(PkgConfig)
|
||||||
if(PKG_CONFIG_FOUND)
|
if(PKG_CONFIG_FOUND)
|
||||||
SET(ENV{PKG_CONFIG_PATH} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/pkgconfig:$ENV{PKG_CONFIG_PATH}")
|
SET(ENV{PKG_CONFIG_PATH} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/pkgconfig:$ENV{PKG_CONFIG_PATH}")
|
||||||
pkg_check_modules(RTI hla-rti13)
|
pkg_check_modules(RTI IMPORTED_TARGET hla-rti13)
|
||||||
endif(PKG_CONFIG_FOUND)
|
endif(PKG_CONFIG_FOUND)
|
||||||
if(RTI_FOUND)
|
if(RTI_FOUND)
|
||||||
message(STATUS "RTI: ENABLED")
|
message(STATUS "RTI: ENABLED")
|
||||||
@ -360,16 +360,6 @@ SET(CMAKE_RELEASE_POSTFIX "" CACHE STRING "add a postfix, usually empty on windo
|
|||||||
SET(CMAKE_RELWITHDEBINFO_POSTFIX "" CACHE STRING "add a postfix, usually empty on windows")
|
SET(CMAKE_RELWITHDEBINFO_POSTFIX "" CACHE STRING "add a postfix, usually empty on windows")
|
||||||
SET(CMAKE_MINSIZEREL_POSTFIX "" CACHE STRING "add a postfix, usually empty on windows")
|
SET(CMAKE_MINSIZEREL_POSTFIX "" CACHE STRING "add a postfix, usually empty on windows")
|
||||||
|
|
||||||
# isnan might not be real symbol, so can't check using function_exists
|
|
||||||
check_cxx_source_compiles(
|
|
||||||
"#include <cmath>
|
|
||||||
int main() { return std::isnan(0.0);} "
|
|
||||||
HAVE_STD_ISNAN)
|
|
||||||
|
|
||||||
if (NOT ${HAVE_STD_ISNAN})
|
|
||||||
message(FATAL_ERROR "Your compiler lacks C++11 std::isnan, please update it")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Check if the <regex> implementation in the C++ standard library is usable.
|
# Check if the <regex> implementation in the C++ standard library is usable.
|
||||||
# This is necessary because g++ 4.8 lies about its C++11 compliance: its
|
# This is necessary because g++ 4.8 lies about its C++11 compliance: its
|
||||||
# <regex> is utterly unusable, cf. [1].
|
# <regex> is utterly unusable, cf. [1].
|
||||||
|
@ -2,6 +2,7 @@ include(CMakeFindDependencyMacro)
|
|||||||
|
|
||||||
find_dependency(ZLIB)
|
find_dependency(ZLIB)
|
||||||
find_dependency(Threads)
|
find_dependency(Threads)
|
||||||
|
find_dependency(CURL)
|
||||||
|
|
||||||
# OSG
|
# OSG
|
||||||
|
|
||||||
@ -21,11 +22,10 @@ set(ENABLE_SIMD @ENABLE_SIMD@)
|
|||||||
# OpenRTI support
|
# OpenRTI support
|
||||||
set(ENABLE_RTI @ENABLE_RTI@)
|
set(ENABLE_RTI @ENABLE_RTI@)
|
||||||
if(ENABLE_RTI)
|
if(ENABLE_RTI)
|
||||||
set(RTI_FOUND @RTI_FOUND@)
|
find_dependency(PkgConfig)
|
||||||
if(RTI_FOUND)
|
if(PKG_CONFIG_FOUND)
|
||||||
set(RTI_INCLUDE_DIRS @RTI_INCLUDE_DIRS@)
|
pkg_check_modules(RTI IMPORTED_TARGET hla-rti13)
|
||||||
set(RTI_LDFLAGS @RTI_LDFLAGS@)
|
endif(PKG_CONFIG_FOUND)
|
||||||
endif(RTI_FOUND)
|
|
||||||
endif(ENABLE_RTI)
|
endif(ENABLE_RTI)
|
||||||
|
|
||||||
# Alternative terrain engine based on pagedLOD
|
# Alternative terrain engine based on pagedLOD
|
||||||
|
@ -124,9 +124,9 @@ target_include_directories(SimGearCore BEFORE PUBLIC
|
|||||||
$<INSTALL_INTERFACE:include>)
|
$<INSTALL_INTERFACE:include>)
|
||||||
|
|
||||||
target_include_directories(SimGearCore PUBLIC
|
target_include_directories(SimGearCore PUBLIC
|
||||||
${Boost_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIR})
|
${Boost_INCLUDE_DIRS})
|
||||||
target_include_directories(SimGearCore PRIVATE
|
target_include_directories(SimGearCore PRIVATE
|
||||||
${EXPAT_INCLUDE_DIRS} ${CURL_INCLUDE_DIRS})
|
${EXPAT_INCLUDE_DIRS} )
|
||||||
|
|
||||||
if (NOT SYSTEM_EXPAT)
|
if (NOT SYSTEM_EXPAT)
|
||||||
# XML_STATIC is important to avoid sg_expat_external.h
|
# XML_STATIC is important to avoid sg_expat_external.h
|
||||||
@ -159,14 +159,19 @@ if (NOT SIMGEAR_HEADLESS)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# we expose ZLib in some of our headers
|
# we expose ZLib in some of our headers
|
||||||
target_link_libraries(SimGearCore PUBLIC ${ZLIB_LIBRARY})
|
target_link_libraries(SimGearCore PUBLIC ZLIB::ZLIB)
|
||||||
|
|
||||||
|
if (ENABLE_RTI)
|
||||||
|
target_sources(SimGearCore PRIVATE $<TARGET_OBJECTS:rti> $<TARGET_OBJECTS:rti13>)
|
||||||
|
target_link_libraries(SimGearCore PRIVATE PkgConfig::RTI)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries(SimGearCore PRIVATE
|
target_link_libraries(SimGearCore PRIVATE
|
||||||
${RT_LIBRARY}
|
${RT_LIBRARY}
|
||||||
${DL_LIBRARY}
|
${DL_LIBRARY}
|
||||||
${CMAKE_THREAD_LIBS_INIT}
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
${COCOA_LIBRARY}
|
${COCOA_LIBRARY}
|
||||||
${CURL_LIBRARIES}
|
CURL::libcurl
|
||||||
${WINSOCK_LIBRARY})
|
${WINSOCK_LIBRARY})
|
||||||
|
|
||||||
if(SYSTEM_EXPAT)
|
if(SYSTEM_EXPAT)
|
||||||
@ -186,7 +191,7 @@ if(NOT SIMGEAR_HEADLESS)
|
|||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(SimGearScene PRIVATE
|
target_link_libraries(SimGearScene PRIVATE
|
||||||
${ZLIB_LIBRARY}
|
ZLIB::ZLIB
|
||||||
${OPENAL_LIBRARY}
|
${OPENAL_LIBRARY}
|
||||||
${OPENGL_LIBRARY}
|
${OPENGL_LIBRARY}
|
||||||
${JPEG_LIBRARY})
|
${JPEG_LIBRARY})
|
||||||
@ -198,11 +203,3 @@ if(NOT SIMGEAR_HEADLESS)
|
|||||||
# only actually needed by canvas/KeyboardEvent.cxx
|
# only actually needed by canvas/KeyboardEvent.cxx
|
||||||
target_include_directories(SimGearScene PRIVATE ${PROJECT_SOURCE_DIR}/3rdparty/utf8/source)
|
target_include_directories(SimGearScene PRIVATE ${PROJECT_SOURCE_DIR}/3rdparty/utf8/source)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(ENABLE_RTI)
|
|
||||||
# Ugly first aid to make hla compile agian
|
|
||||||
set_property(SOURCE hla/RTI13InteractionClass.cxx hla/RTI13ObjectClass.cxx
|
|
||||||
hla/RTI13ObjectInstance.cxx hla/RTI13Federate.cxx
|
|
||||||
hla/RTI13FederateFactory.cxx
|
|
||||||
APPEND PROPERTY COMPILE_FLAGS "-I${RTI_INCLUDE_DIRS}")
|
|
||||||
endif(ENABLE_RTI)
|
|
||||||
|
@ -50,6 +50,7 @@ set(HLA_SOURCES
|
|||||||
HLAVariantRecordDataElement.cxx
|
HLAVariantRecordDataElement.cxx
|
||||||
HLAVariantRecordDataType.cxx
|
HLAVariantRecordDataType.cxx
|
||||||
)
|
)
|
||||||
|
|
||||||
simgear_component(hla hla "${HLA_SOURCES}" "${HLA_HEADERS}")
|
simgear_component(hla hla "${HLA_SOURCES}" "${HLA_HEADERS}")
|
||||||
|
|
||||||
if(RTI_FOUND)
|
if(RTI_FOUND)
|
||||||
@ -60,7 +61,16 @@ if(RTI_FOUND)
|
|||||||
RTI13Federate.cxx
|
RTI13Federate.cxx
|
||||||
RTI13FederateFactory.cxx
|
RTI13FederateFactory.cxx
|
||||||
)
|
)
|
||||||
simgear_component(rti13 hla "${RTI13_SOURCES}" "")
|
|
||||||
|
add_library(rti13 OBJECT ${RTI13_SOURCES})
|
||||||
|
|
||||||
|
target_include_directories(rti13 PUBLIC ${PROJECT_SOURCE_DIR})
|
||||||
|
target_include_directories(rti13 PUBLIC ${PROJECT_BINARY_DIR})
|
||||||
|
#target_include_directories(rti13 PRIVATE ${RTI_INCLUDE_DIRS})
|
||||||
|
target_link_libraries(rti13 PRIVATE PkgConfig::RTI)
|
||||||
|
|
||||||
|
set_property(TARGET rti13 PROPERTY CXX_STANDARD 11)
|
||||||
|
#simgear_component(rti13 hla "${RTI13_SOURCES}" "")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(RTI_SOURCES
|
set(RTI_SOURCES
|
||||||
@ -71,4 +81,13 @@ set(RTI_SOURCES
|
|||||||
RTIFederateFactory.cxx
|
RTIFederateFactory.cxx
|
||||||
RTIFederateFactoryRegistry.cxx
|
RTIFederateFactoryRegistry.cxx
|
||||||
)
|
)
|
||||||
simgear_component(rti hla "${RTI_SOURCES}" "")
|
|
||||||
|
add_library(rti OBJECT ${RTI_SOURCES})
|
||||||
|
target_include_directories(rti PUBLIC ${PROJECT_SOURCE_DIR})
|
||||||
|
target_include_directories(rti PUBLIC ${PROJECT_BINARY_DIR})
|
||||||
|
#target_include_directories(rti PRIVATE ${RTI_INCLUDE_DIRS})
|
||||||
|
target_link_libraries(rti PRIVATE PkgConfig::RTI)
|
||||||
|
|
||||||
|
set_property(TARGET rti PROPERTY CXX_STANDARD 11)
|
||||||
|
|
||||||
|
#simgear_component(rti hla "${RTI_SOURCES}" "")
|
||||||
|
Loading…
Reference in New Issue
Block a user