X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=CMakeLists.txt;h=f7220c5734a71523795c26e64c95c0d61df51a5e;hb=2bb24f43fbacaa198a2dafbe2ed5acb298231b4e;hp=2c97bcb1418f00e38f73d66eadbf6a256ac72bd7;hpb=f711306085ce720737dcf168c7673635c0c179e2;p=simgear.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 2c97bcb1..f7220c57 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,11 +1,25 @@ -cmake_minimum_required (VERSION 2.6.4) +cmake_minimum_required (VERSION 2.8.11) + +if(COMMAND cmake_policy) + if(POLICY CMP0054) + cmake_policy(SET CMP0054 NEW) + endif() + if(POLICY CMP0042) + cmake_policy(SET CMP0042 NEW) + endif() +endif() + include (CheckFunctionExists) include (CheckIncludeFile) +include (CheckLibraryExists) include (CheckCXXSourceCompiles) include (CheckCXXCompilerFlag) -# set this before project() -set(CMAKE_OSX_DEPLOYMENT_TARGET 10.6) +# using 10.7 because boost requires libc++ and 10.6 doesn't include it +set(CMAKE_OSX_DEPLOYMENT_TARGET 10.7) + +# only relevant for building shared libs but let's set it regardless +set(CMAKE_OSX_RPATH 1) project(SimGear) @@ -65,12 +79,7 @@ endif(NOT CMAKE_BUILD_TYPE) # Determine name of library installation directory, i.e. "lib" vs "lib64", which # differs between all Debian-based vs all other Linux distros. # See cmake bug #11964, http://cmake.org/gitweb?p=cmake.git;a=commit;h=126c993d -# GNUInstallDirs requires CMake >= 2.8.5, use own file for older cmake -if(${CMAKE_VERSION} VERSION_GREATER 2.8.4) - include(GNUInstallDirs) -else(${CMAKE_VERSION} VERSION_GREATER 2.8.4) - include(OldGNUInstallDirs) -endif(${CMAKE_VERSION} VERSION_GREATER 2.8.4) +include(GNUInstallDirs) message(STATUS "Library installation directory: ${CMAKE_INSTALL_LIBDIR}") ##################################################################################### @@ -107,6 +116,7 @@ option(ENABLE_RTI "Set to ON to build SimGear with RTI support" OFF) option(ENABLE_TESTS "Set to OFF to disable building SimGear's test applications" ON) option(ENABLE_SOUND "Set to OFF to disable building SimGear's sound support" ON) option(ENABLE_PKGUTIL "Set to ON to build the sg_pkgutil application (default)" ON) +option(ENABLE_CURL "Set to ON to use libCurl as the HTTP client backend" OFF) if (MSVC) GET_FILENAME_COMPONENT(PARENT_DIR ${PROJECT_BINARY_DIR} PATH) @@ -165,18 +175,22 @@ endif (MSVC AND MSVC_3RDPARTY_ROOT) if(APPLE) find_library(COCOA_LIBRARY Cocoa) - # force libstdc++, not libc++ - set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libstdc++") - list(APPEND CMAKE_CXX_FLAGS "-stdlib=libstdc++") - list(APPEND CMAKE_EXE_LINKER_FLAGS "-stdlib=libstdc++") - list(APPEND CMAKE_SHARED_LINKER_FLAGS "-stdlib=libstdc++") +# this should be handled by setting CMAKE_OSX_DEPLOYMENT_TARGET +# but it's not working reliably, so forcing it for now + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.7") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=10.7") +endif() + +if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR + ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") + find_package(Threads REQUIRED) endif() # Somehow this only works if included before searching for Boost... include(BoostTestTargets) find_package(Boost REQUIRED) -set (BOOST_CXX_FLAGS "-DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION -DBOOST_BIMAP_DISABLE_SERIALIZATION") +set (BOOST_CXX_FLAGS "-DBOOST_BIMAP_DISABLE_SERIALIZATION") if(SIMGEAR_HEADLESS) message(STATUS "SimGear mode: HEADLESS") @@ -194,7 +208,11 @@ else() endif(SIMGEAR_HEADLESS) find_package(ZLIB REQUIRED) -find_package(Threads REQUIRED) + +if (ENABLE_CURL) + find_package(CURL REQUIRED) + message(STATUS "Curl HTTP client: ENABLED") +endif() if (SYSTEM_EXPAT) message(STATUS "Requested to use system Expat library, forcing SIMGEAR_SHARED to true") @@ -306,8 +324,12 @@ if(CMAKE_COMPILER_IS_GNUCXX) endif(CMAKE_COMPILER_IS_GNUCXX) if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - set(WARNING_FLAGS_CXX "-Wall -Wno-overloaded-virtual") - set(WARNING_FLAGS_C "-Wall") + # Boost redeclares class members + set(WARNING_FLAGS_CXX "-Wall -Wno-overloaded-virtual -Wno-redeclared-class-member") + set(WARNING_FLAGS_C "-Wall") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++") endif() if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") @@ -357,6 +379,7 @@ include_directories(${OPENSCENEGRAPH_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIR} ${OPENAL_INCLUDE_DIR} + ${CURL_INCLUDE_DIRS} ) add_definitions(-DHAVE_CONFIG_H) @@ -385,7 +408,8 @@ set(TEST_LIBS_INTERNAL_CORE ${WINSOCK_LIBRARY} ${RT_LIBRARY} ${DL_LIBRARY} - ${COCOA_LIBRARY}) + ${COCOA_LIBRARY} + ${CURL_LIBRARIES}) set(TEST_LIBS SimGearCore ${TEST_LIBS_INTERNAL_CORE}) if(NOT SIMGEAR_HEADLESS) @@ -408,5 +432,3 @@ CONFIGURE_FILE( IMMEDIATE @ONLY) ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") - -