diff --git a/CMakeLists.txt b/CMakeLists.txt index 21d2c05d423..4f6ca614ba0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,8 @@ # # OpenSceneGraph CMake build file # +CMAKE_MINIMUM_REQUIRED(VERSION 3.5 FATAL_ERROR) + SET(OPENSCENEGRAPH_MAJOR_VERSION 3) SET(OPENSCENEGRAPH_MINOR_VERSION 6) SET(OPENSCENEGRAPH_PATCH_VERSION 5) @@ -13,27 +15,19 @@ SET(OPENSCENEGRAPH_RELEASE_CANDIDATE 0) set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE) set_property(GLOBAL PROPERTY USE_FOLDERS ON) -CMAKE_MINIMUM_REQUIRED(VERSION 2.8.0 FATAL_ERROR) - -if(COMMAND cmake_policy) - # Works around warnings libraries linked against that don't - # have absolute paths (e.g. -lpthreads) - cmake_policy(SET CMP0003 NEW) +# Works around warnings libraries linked against that don't +# have absolute paths (e.g. -lpthreads) +cmake_policy(SET CMP0003 NEW) - # Works around warnings about escaped quotes in ADD_DEFINITIONS - # statements. - cmake_policy(SET CMP0005 NEW) +# Works around warnings about escaped quotes in ADD_DEFINITIONS +# statements. +cmake_policy(SET CMP0005 NEW) - # tell CMake to prefer CMake's own CMake modules when available - # only available from cmake-2.8.4 - if("${CMAKE_VERSION}" VERSION_GREATER 2.8.3) - cmake_policy(SET CMP0017 NEW) - endif() +cmake_policy(SET CMP0017 NEW) - # INTERPROCEDURAL_OPTIMIZATION is enforced when enabled. - # Allows passing -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON - cmake_policy(SET CMP0069 NEW) -endif() +# INTERPROCEDURAL_OPTIMIZATION is enforced when enabled. +# Allows passing -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON +cmake_policy(SET CMP0069 NEW) IF(APPLE) # Get OSX version in MAJOR.MINOR format @@ -155,6 +149,7 @@ IF(NOT CMAKE_BUILD_TYPE) SET(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE) ENDIF(NOT CMAKE_BUILD_TYPE) +INCLUDE(GNUInstallDirs) IF(ANDROID) INCLUDE(OsgAndroidMacroUtils) @@ -902,25 +897,8 @@ IF(DEFINED LIB_POSTFIX) # Use LIB_POSTFIX if defined SET(OSG_INSTALL_LIBDIR lib${LIB_POSTFIX}) ELSE() - IF(CMAKE_VERSION VERSION_LESS "2.8.5") - IF(UNIX AND NOT WIN32 AND NOT APPLE) - IF(CMAKE_SIZEOF_VOID_P MATCHES "8") - SET(LIB_POSTFIX "64" CACHE STRING "suffix for 32/64 dir placement") - MARK_AS_ADVANCED(LIB_POSTFIX) - ENDIF() - ENDIF() - IF(NOT DEFINED LIB_POSTFIX) - SET(LIB_POSTFIX "") - ENDIF() - SET(OSG_INSTALL_LIBDIR lib${LIB_POSTFIX}) - ELSE() - # Use the GNU standard installation directories for CMake >= 2.8.5 - INCLUDE(GNUInstallDirs) - SET(OSG_INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR}) - ENDIF() -ENDIF() -IF(NOT DEFINED LIB_POSTFIX) - SET(LIB_POSTFIX "") + SET(OSG_INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR}) + SET(LIB_POSTFIX "") ENDIF() # Here we apparently do some funky stuff with making the bin/ and lib/ @@ -952,25 +930,16 @@ ELSE(WIN32) SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_LIBDIR}) ENDIF(WIN32) -# Testing CMAKE_VERSION is possible in >= 2.6.4 only -BUILDER_VERSION_GREATER(2 8 0) -IF(VALID_BUILDER_VERSION) # If CMake >= 2.8.1 - FOREACH(CONF ${CMAKE_CONFIGURATION_TYPES}) # For each configuration (Debug, Release, MinSizeRel... and/or anything the user chooses) - STRING(TOUPPER "${CONF}" CONF) # Go uppercase (DEBUG, RELEASE...) - SET("CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONF}" "${OUTPUT_LIBDIR}") - SET("CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONF}" "${OUTPUT_BINDIR}") - IF(WIN32) - SET("CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CONF}" "${OUTPUT_BINDIR}") - ELSE() - SET("CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CONF}" "${OUTPUT_LIBDIR}") - ENDIF() - ENDFOREACH() -ENDIF(VALID_BUILDER_VERSION) - -#SET(INSTALL_BINDIR OpenSceneGraph/bin) -#SET(INSTALL_INCDIR OpenSceneGraph/include) -#SET(INSTALL_LIBDIR OpenSceneGraph/lib) -#SET(INSTALL_DOCDIR OpenSceneGraph/doc) +FOREACH(CONF ${CMAKE_CONFIGURATION_TYPES}) # For each configuration (Debug, Release, MinSizeRel... and/or anything the user chooses) + STRING(TOUPPER "${CONF}" CONF) # Go uppercase (DEBUG, RELEASE...) + SET("CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONF}" "${OUTPUT_LIBDIR}") + SET("CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONF}" "${OUTPUT_BINDIR}") + IF(WIN32) + SET("CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CONF}" "${OUTPUT_BINDIR}") + ELSE() + SET("CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CONF}" "${OUTPUT_LIBDIR}") + ENDIF() +ENDFOREACH() ################################################################################ # User Options @@ -1222,7 +1191,7 @@ IF(BUILD_DOCUMENTATION) ${PROJECT_BINARY_DIR}/doc/OpenSceneGraphReferenceDocs/osg32-32.png COPYONLY ) #INSTALL(FILES ${PROJECT_BINARY_DIR}/doc/${PROJECT_NAME}ReferenceDocs-${OPENSCENEGRAPH_VERSION}.chm DESTINATION doc OPTIONAL COMPONENT openscenegraph-doc) - INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/doc/OpenSceneGraphReferenceDocs DESTINATION doc COMPONENT openscenegraph-doc) + INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/doc/OpenSceneGraphReferenceDocs DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT openscenegraph-doc) # now set up openthreads documentation generation IF(BUILD_REF_DOCS_TAGFILE) @@ -1238,7 +1207,7 @@ IF(BUILD_DOCUMENTATION) ${PROJECT_BINARY_DIR}/doc/OpenThreadsReferenceDocs/osg32-32.png COPYONLY ) #INSTALL(FILES ${PROJECT_BINARY_DIR}/doc/${PROJECT_NAME}ReferenceDocs-${OPENSCENEGRAPH_VERSION}.chm DESTINATION doc OPTIONAL COMPONENT openscenegraph-doc) - INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/doc/OpenThreadsReferenceDocs DESTINATION doc COMPONENT openthreads-doc) + INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/doc/OpenThreadsReferenceDocs DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT openthreads-doc) # Process our other doxyfiles but don't create targets for these CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/doc/Doxyfiles/all_Doxyfile diff --git a/CMakeModules/FindCOLLADA.cmake b/CMakeModules/FindCOLLADA.cmake index 7caf3545eb8..6a8f271e788 100644 --- a/CMakeModules/FindCOLLADA.cmake +++ b/CMakeModules/FindCOLLADA.cmake @@ -313,7 +313,7 @@ IF(COLLADA_DYNAMIC_LIBRARY OR COLLADA_STATIC_LIBRARY) IF (COLLADA_INCLUDE_DOMANY_DIR) SET(COLLADA_DOM_2_4_OR_LATER TRUE) - ELSEIF() + ELSE() SET(COLLADA_DOM_2_4_OR_LATER FALSE) ENDIF() diff --git a/CMakeModules/OsgMacroUtils.cmake b/CMakeModules/OsgMacroUtils.cmake index cafd8725ba3..1c2e6cb770a 100644 --- a/CMakeModules/OsgMacroUtils.cmake +++ b/CMakeModules/OsgMacroUtils.cmake @@ -487,7 +487,7 @@ MACRO(SETUP_EXAMPLE EXAMPLE_NAME) IF(APPLE) INSTALL(TARGETS ${TARGET_TARGETNAME} RUNTIME DESTINATION share/OpenSceneGraph/bin BUNDLE DESTINATION share/OpenSceneGraph/bin ) ELSE(APPLE) - INSTALL(TARGETS ${TARGET_TARGETNAME} RUNTIME DESTINATION share/OpenSceneGraph/bin COMPONENT openscenegraph-examples ) + INSTALL(TARGETS ${TARGET_TARGETNAME} RUNTIME DESTINATION bin COMPONENT openscenegraph-examples ) IF(MSVC) INSTALL(FILES $ DESTINATION share/OpenSceneGraph/bin COMPONENT openscenegraph-examples) ENDIF(MSVC) diff --git a/PlatformSpecifics/Android/android.toolchain.cmake b/PlatformSpecifics/Android/android.toolchain.cmake index fc349162fb8..7015e6d8f54 100644 --- a/PlatformSpecifics/Android/android.toolchain.cmake +++ b/PlatformSpecifics/Android/android.toolchain.cmake @@ -210,7 +210,7 @@ # Modified by Lasse Oorni and Yao Wei Tjong for Urho3D -cmake_minimum_required( VERSION 2.6.3 ) +cmake_minimum_required( VERSION 3.5 ) # Urho3D: on Windows Cygwin-based NDK tools may fail in the linking phase with too long command line. Turn on response files to avoid this if( CMAKE_HOST_WIN32 ) diff --git a/examples/osgCMakeExample/CMakeLists.txt b/examples/osgCMakeExample/CMakeLists.txt index cd843299add..418708630d0 100644 --- a/examples/osgCMakeExample/CMakeLists.txt +++ b/examples/osgCMakeExample/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.6) +cmake_minimum_required(VERSION 3.5) SET(PROJECT_NAME osgCMakeExample) diff --git a/examples/osgemscripten/CMakeLists.txt b/examples/osgemscripten/CMakeLists.txt index b2bc9875a5a..10c4daf687e 100644 --- a/examples/osgemscripten/CMakeLists.txt +++ b/examples/osgemscripten/CMakeLists.txt @@ -1,4 +1,4 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.8.0 FATAL_ERROR) +CMAKE_MINIMUM_REQUIRED(VERSION 3.5 FATAL_ERROR) # Path to OpenSceneGraph SET(OSG_DIR "${CMAKE_SOURCE_DIR}/../..")