diff --git a/CMakeLists.txt b/CMakeLists.txt index 7fcb8a3eef77358b89815b9239c18f7ab1152ea2..b5d625411ffb8b362035b15b8472a88de5873bf4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,15 +13,15 @@ cmake_policy(SET CMP0054 NEW) project( OGS-6 ) list(APPEND CMAKE_PREFIX_PATH - $ENV{HOMEBREW_ROOT} # Homebrew package manager on Mac OS - $ENV{CMAKE_LIBRARY_SEARCH_PATH} # Environment variable, Windows - ${CMAKE_LIBRARY_SEARCH_PATH}) # CMake option, Windows + $ENV{HOMEBREW_ROOT} # Homebrew package manager on Mac OS + $ENV{CMAKE_LIBRARY_SEARCH_PATH} # Environment variable, Windows + ${CMAKE_LIBRARY_SEARCH_PATH}) # CMake option, Windows ########################### ### Preliminary Options ### ########################### set(CMAKE_LIBRARY_SEARCH_PATH "" CACHE PATH - "Additional library installation path, e.g. /opt/local or C:/libs") + "Additional library installation path, e.g. /opt/local or C:/libs") set(OGS_CPU_ARCHITECTURE "native" CACHE STRING "Processor architecture, defaults to native.") option(OGS_BUILD_TESTS "Should the test executables be built?" ON) @@ -37,7 +37,7 @@ include(scripts/cmake/ProjectSetup.cmake) include(scripts/cmake/DocumentationSetup.cmake) include(scripts/cmake/test/Test.cmake) if(OGS_COVERAGE AND NOT IS_SUBPROJECT) - include(scripts/cmake/Coverage.cmake) + include(scripts/cmake/Coverage.cmake) endif() #################### @@ -46,7 +46,7 @@ endif() # Profiling if((CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC) AND GPROF_PATH) - option(OGS_PROFILE "Enables compiling with flags set for profiling with gprof." OFF) + option(OGS_PROFILE "Enables compiling with flags set for profiling with gprof." OFF) endif() # GCC AND GPROF_PATH # Enable / Disable parts @@ -55,7 +55,7 @@ option(OGS_DONT_USE_QT "Disables all Qt specific code." OFF) option(OGS_BUILD_CLI "Should the OGS simulator be built?" ON) option(OGS_BUILD_GUI "Should the Data Explorer be built?" OFF) if(OGS_BUILD_GUI) - add_definitions(-DOGS_BUILD_GUI) + add_definitions(-DOGS_BUILD_GUI) endif() option(OGS_BUILD_UTILS "Should the utilities programms be built?" OFF) @@ -86,8 +86,8 @@ option(STL_NO_DEBUG "Disable STL debug in debug build" OFF) # Print CMake variable values if (OGS_CMAKE_DEBUG) - include(ListAllCMakeVariableValues) - list_all_cmake_variable_values() + include(ListAllCMakeVariableValues) + list_all_cmake_variable_values() endif () # Code coverage @@ -103,10 +103,10 @@ set(OGS_LIB_VTK "Default" CACHE STRING "Which VTK library should be used?") set(OGS_LIB_BOOST "Default" CACHE STRING "Which Boost library should be used?") set(OGS_LIB_EIGEN "Default" CACHE STRING "Which Eigen library should be used?") set_property(CACHE - OGS_LIB_VTK - OGS_LIB_BOOST - OGS_LIB_EIGEN - PROPERTY STRINGS "Default" "System" "Local") + OGS_LIB_VTK + OGS_LIB_BOOST + OGS_LIB_EIGEN + PROPERTY STRINGS "Default" "System" "Local") # Options controlling which FEM elements will be compiled set(OGS_MAX_ELEMENT_DIM 3 CACHE STRING "Maximum dimension of FEM elements to be built.") @@ -120,45 +120,45 @@ option(OGS_ENABLE_ELEMENT_PYRAMID "Build FEM elements for pyramids." ON) ### Definitions ### ################### if(OGS_USE_LIS) - add_definitions(-DUSE_LIS) - include_directories(SYSTEM ${LIS_INCLUDE_DIR}) + add_definitions(-DUSE_LIS) + include_directories(SYSTEM ${LIS_INCLUDE_DIR}) endif() if(OGS_USE_PETSC) - add_definitions(-DUSE_PETSC) - set(OGS_USE_MPI ON CACHE BOOL "Use MPI" FORCE) + add_definitions(-DUSE_PETSC) + set(OGS_USE_MPI ON CACHE BOOL "Use MPI" FORCE) endif() # Use MPI if(OGS_USE_MPI) - add_definitions(-DUSE_MPI) + add_definitions(-DUSE_MPI) endif() if(OGS_USE_EIGEN) - add_definitions(-DEIGEN_INITIALIZE_MATRICES_BY_ZERO) # TODO check if needed - add_definitions(-DOGS_USE_EIGEN) - if (EIGEN_NO_DEBUG) - add_definitions(-DEIGEN_NO_DEBUG) - endif() - if(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES) - add_definitions(-DOGS_EIGEN_DYNAMIC_SHAPE_MATRICES) - endif() + add_definitions(-DEIGEN_INITIALIZE_MATRICES_BY_ZERO) # TODO check if needed + add_definitions(-DOGS_USE_EIGEN) + if (EIGEN_NO_DEBUG) + add_definitions(-DEIGEN_NO_DEBUG) + endif() + if(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES) + add_definitions(-DOGS_EIGEN_DYNAMIC_SHAPE_MATRICES) + endif() endif() if (OGS_USE_EIGENLIS) - if (NOT OGS_USE_EIGEN) - message(FATAL_ERROR "OGS_USE_EIGENLIS needs OGS_USE_EIGEN to be set!") - endif() - if (NOT OGS_USE_LIS) - message(FATAL_ERROR "OGS_USE_EIGENLIS needs OGS_USE_LIS to be set!") - endif() - - add_definitions(-DOGS_USE_EIGENLIS) + if (NOT OGS_USE_EIGEN) + message(FATAL_ERROR "OGS_USE_EIGENLIS needs OGS_USE_EIGEN to be set!") + endif() + if (NOT OGS_USE_LIS) + message(FATAL_ERROR "OGS_USE_EIGENLIS needs OGS_USE_LIS to be set!") + endif() + + add_definitions(-DOGS_USE_EIGENLIS) endif() if(OGS_BUILD_TESTS) - set(Data_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Tests/Data CACHE INTERNAL "") - set(Data_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/Tests/Data CACHE INTERNAL "") + set(Data_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Tests/Data CACHE INTERNAL "") + set(Data_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/Tests/Data CACHE INTERNAL "") endif() ###################### @@ -169,15 +169,15 @@ endif() include(scripts/cmake/ExternalProjectBoost.cmake) include(VtkModules) if(OGS_INSITU) - include(ExternalProjectCatalyst) + include(ExternalProjectCatalyst) else() - include(ExternalProjectVtk) + include(ExternalProjectVtk) endif() include_directories( SYSTEM ${Boost_INCLUDE_DIRS} ) if(OGS_USE_EIGEN) - include(scripts/cmake/ExternalProjectEigen.cmake) - include_directories(SYSTEM ${EIGEN3_INCLUDE_DIR}) + include(scripts/cmake/ExternalProjectEigen.cmake) + include_directories(SYSTEM ${EIGEN3_INCLUDE_DIR}) endif() # Add subdirectories with the projects @@ -193,7 +193,7 @@ add_subdirectory( AssemblerLib ) add_subdirectory( BaseLib ) # TODO This is a hack but we have to make sure that Boost is built first if(TARGET Boost) - add_dependencies(BaseLib Boost) + add_dependencies(BaseLib Boost) endif() add_subdirectory( DataHolderLib ) add_subdirectory( FileIO ) @@ -205,21 +205,21 @@ add_subdirectory( MeshGeoToolsLib ) add_subdirectory( NumLib ) add_subdirectory( ProcessLib ) if( OGS_BUILD_TESTS AND NOT IS_SUBPROJECT ) - add_subdirectory( Tests ) - - if(OGS_USE_MPI) - add_subdirectory( SimpleTests/MeshTests/MPI ) - else() - add_subdirectory( SimpleTests/MatrixTests ) - add_subdirectory( SimpleTests/MeshTests ) - if(NOT MSVC AND BLAS_FOUND AND LAPACK_FOUND) - add_subdirectory( SimpleTests/SolverTests ) - endif() - endif() + add_subdirectory( Tests ) + + if(OGS_USE_MPI) + add_subdirectory( SimpleTests/MeshTests/MPI ) + else() + add_subdirectory( SimpleTests/MatrixTests ) + add_subdirectory( SimpleTests/MeshTests ) + if(NOT MSVC AND BLAS_FOUND AND LAPACK_FOUND) + add_subdirectory( SimpleTests/SolverTests ) + endif() + endif() endif() # OGS_BUILD_TESTS # The configuration must be called from the source dir and not BaseLib/. configure_file("${CMAKE_CURRENT_SOURCE_DIR}/BaseLib/BuildInfo.cpp.in" - "${CMAKE_CURRENT_BINARY_DIR}/BaseLib/BuildInfo.cpp" @ONLY) + "${CMAKE_CURRENT_BINARY_DIR}/BaseLib/BuildInfo.cpp" @ONLY) include(scripts/cmake/MarkVariablesAdvanced.cmake) diff --git a/Jenkinsfile b/Jenkinsfile index 0bc94baa19b9fcb767f7deb3b4f0dcb57715c42c..3b0e62061cb76917e4cb7f345a922d26e583e5ee 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,4 +1,4 @@ node('master') { - checkout scm - load 'scripts/jenkins/gcc.groovy' + checkout scm + load 'scripts/jenkins/gcc.groovy' } diff --git a/scripts/cmake/AddVtkDependency.cmake b/scripts/cmake/AddVtkDependency.cmake index 215ae14a366def274aec6b24f7b0e230931420bd..29677ca931ca5eae6732b85a4e280a27645cac44 100644 --- a/scripts/cmake/AddVtkDependency.cmake +++ b/scripts/cmake/AddVtkDependency.cmake @@ -1,14 +1,14 @@ macro(ADD_VTK_DEPENDENCY target) - if(ParaView_FOUND) - include("${PARAVIEW_USE_FILE}") + if(ParaView_FOUND) + include("${PARAVIEW_USE_FILE}") - # see http://stackoverflow.com/questions/18642155 - set_property(TARGET ${target} APPEND PROPERTY COMPILE_DEFINITIONS ${VTK_DEFINITIONS}) - elseif(VTK_FOUND) - include( ${VTK_USE_FILE} ) - endif() + # see http://stackoverflow.com/questions/18642155 + set_property(TARGET ${target} APPEND PROPERTY COMPILE_DEFINITIONS ${VTK_DEFINITIONS}) + elseif(VTK_FOUND) + include( ${VTK_USE_FILE} ) + endif() - if(TARGET VtkRescan) - add_dependencies(${target} VtkRescan) - endif() + if(TARGET VtkRescan) + add_dependencies(${target} VtkRescan) + endif() endmacro() diff --git a/scripts/cmake/CMakeSetup.cmake b/scripts/cmake/CMakeSetup.cmake index 67d24f97840fe79dd8cbba4169b4002fd71d8fa5..f756662842d0a498ab31997110ee63aac2164859 100644 --- a/scripts/cmake/CMakeSetup.cmake +++ b/scripts/cmake/CMakeSetup.cmake @@ -17,14 +17,14 @@ set(NUM_PROCESSORS ${NUM_PROCESSORS} CACHE STRING "Processor count") # Check if this project is included in another if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) - set(IS_SUBPROJECT ON CACHE INTERNAL "" FORCE) - set(OGS_BUILD_CLI OFF CACHE BOOL "" FORCE) + set(IS_SUBPROJECT ON CACHE INTERNAL "" FORCE) + set(OGS_BUILD_CLI OFF CACHE BOOL "" FORCE) endif() if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - message(STATUS "Setting build type to 'Debug' as none was specified.") - set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build." FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") + message(STATUS "Setting build type to 'Debug' as none was specified.") + set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build." FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") endif() # Get the hostname diff --git a/scripts/cmake/CheckTypeSizes.cmake b/scripts/cmake/CheckTypeSizes.cmake index 9602c0f86c872a75045629c7242d8c6b9b87522d..b8b907d9525741d1632a65869f670c5b4d4e5385 100644 --- a/scripts/cmake/CheckTypeSizes.cmake +++ b/scripts/cmake/CheckTypeSizes.cmake @@ -8,12 +8,12 @@ CHECK_TYPE_SIZE("void *" SIZEOF_VOID_P) # Sets Bits variables # check 64 bit if( CMAKE_SIZEOF_VOID_P EQUAL 4 ) - set( HAVE_64_BIT 0 ) - set( BITS 32 ) + set( HAVE_64_BIT 0 ) + set( BITS 32 ) else() - set( HAVE_64_BIT 1 ) - add_definitions(-DHAVE_64_BIT) - set( BITS 64) + set( HAVE_64_BIT 1 ) + add_definitions(-DHAVE_64_BIT) + set( BITS 64) endif() # Check endian of the system diff --git a/scripts/cmake/ClangSanitizer.cmake b/scripts/cmake/ClangSanitizer.cmake index a259f5c8e21fe87d786c5ef0958cee53ba3bf16b..ef9b7b29f039c02a25a43b526b3fddba6fb72671 100644 --- a/scripts/cmake/ClangSanitizer.cmake +++ b/scripts/cmake/ClangSanitizer.cmake @@ -1,19 +1,19 @@ if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.6") - return() + return() endif() option(OGS_ADDRESS_SANITIZER OFF "Use Clangs AddressSanitizer") option(OGS_UNDEFINED_BEHAVIOR_SANITIZER OFF "Use Clangs UndefinedBehaviorSanitizer") if(OGS_ADDRESS_SANITIZER) - set(SANITIZE_FLAG_VALUE "address") - set(ADDITIONAL_FLAGS "-fno-omit-frame-pointer") + set(SANITIZE_FLAG_VALUE "address") + set(ADDITIONAL_FLAGS "-fno-omit-frame-pointer") endif() if(OGS_UNDEFINED_BEHAVIOR_SANITIZER) - set(SANITIZE_FLAG_VALUE "${SANITIZE_FLAG_VALUE},undefined,integer -fsanitize-blacklist=${CMAKE_CURRENT_SOURCE_DIR}/scripts/test/clang_sanitizer_blacklist.txt") + set(SANITIZE_FLAG_VALUE "${SANITIZE_FLAG_VALUE},undefined,integer -fsanitize-blacklist=${CMAKE_CURRENT_SOURCE_DIR}/scripts/test/clang_sanitizer_blacklist.txt") endif() if(DEFINED SANITIZE_FLAG_VALUE) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=${SANITIZE_FLAG_VALUE} ${ADDITIONAL_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=${SANITIZE_FLAG_VALUE} ${ADDITIONAL_FLAGS}") endif() diff --git a/scripts/cmake/CompilerSetup.cmake b/scripts/cmake/CompilerSetup.cmake index 0ed787c5f51031fe1a45594896aecd8521c6b215..238b56422adbddafb09a686f4fa07f8c8a8efe0e 100644 --- a/scripts/cmake/CompilerSetup.cmake +++ b/scripts/cmake/CompilerSetup.cmake @@ -8,18 +8,18 @@ set(CMAKE_OSX_ARCHITECTURES "x86_64") # Set compiler helper variables if(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") - set(COMPILER_IS_CLANG TRUE CACHE INTERNAL "") + set(COMPILER_IS_CLANG TRUE CACHE INTERNAL "") elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") - set(COMPILER_IS_GCC TRUE CACHE INTERNAL "") + set(COMPILER_IS_GCC TRUE CACHE INTERNAL "") elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel") - set(COMPILER_IS_INTEL TRUE CACHE INTERNAL "") + set(COMPILER_IS_INTEL TRUE CACHE INTERNAL "") elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC") - set(COMPILER_IS_MSVC TRUE CACHE INTERNAL "") + set(COMPILER_IS_MSVC TRUE CACHE INTERNAL "") endif() # CMAKE_CXX_COMPILER_ID # Better Clang warning suppression, see http://www.openwalnut.org/issues/230 if(NOT COMPILER_IS_MSVC) - set( CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-isystem" CACHE STRING "" FORCE ) + set( CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-isystem" CACHE STRING "" FORCE ) endif() # When static libraries are used in some shared libraries it is required that @@ -32,99 +32,99 @@ endif() set(CMAKE_CXX_FLAGS ${OGS_CXX_FLAGS}) if(OGS_CPU_ARCHITECTURE STREQUAL "generic") - set(CPU_FLAGS "-mtune=generic") + set(CPU_FLAGS "-mtune=generic") else() - set(CPU_FLAGS "-march=${OGS_CPU_ARCHITECTURE}") + set(CPU_FLAGS "-march=${OGS_CPU_ARCHITECTURE}") endif() ### GNU C/CXX compiler if(COMPILER_IS_GCC) - get_gcc_version(GCC_VERSION) - if(GCC_VERSION VERSION_LESS "4.8") - message(FATAL_ERROR "GCC minimum required version is 4.8! You are using ${GCC_VERSION}.") - endif() - if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") - message(STATUS "Set GCC release flags") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -DNDEBUG") - else() - # Enable assertions in STL in debug mode. - if (NOT STL_NO_DEBUG) - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_ASSERT -D_GLIBCXX_DEBUG_PEDASSERT -D_GLIBCXX_DEBUG_VERIFY") - endif() - endif() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CPU_FLAGS} -std=c++11 -Wno-deprecated -Wall -Wextra") + get_gcc_version(GCC_VERSION) + if(GCC_VERSION VERSION_LESS "4.8") + message(FATAL_ERROR "GCC minimum required version is 4.8! You are using ${GCC_VERSION}.") + endif() + if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") + message(STATUS "Set GCC release flags") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -DNDEBUG") + else() + # Enable assertions in STL in debug mode. + if (NOT STL_NO_DEBUG) + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_ASSERT -D_GLIBCXX_DEBUG_PEDASSERT -D_GLIBCXX_DEBUG_VERIFY") + endif() + endif() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CPU_FLAGS} -std=c++11 -Wno-deprecated -Wall -Wextra") endif() # COMPILER_IS_GCC ### Clang if(COMPILER_IS_CLANG) - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.3") - message(FATAL_ERROR "Aborting: Clang 3.3 is required! Found version ${CMAKE_CXX_COMPILER_VERSION}") - endif() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CPU_FLAGS} -std=c++11 -Wall -Wno-c++98-compat-pedantic") - if(CMAKE_BUILD_TYPE STREQUAL "Debug") - # Enable assertions in STL in debug mode. - if (NOT STL_NO_DEBUG) - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_ASSERT -D_GLIBCXX_DEBUG_PEDASSERT -D_GLIBCXX_DEBUG_VERIFY") - endif() - endif() + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.3") + message(FATAL_ERROR "Aborting: Clang 3.3 is required! Found version ${CMAKE_CXX_COMPILER_VERSION}") + endif() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CPU_FLAGS} -std=c++11 -Wall -Wno-c++98-compat-pedantic") + if(CMAKE_BUILD_TYPE STREQUAL "Debug") + # Enable assertions in STL in debug mode. + if (NOT STL_NO_DEBUG) + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_ASSERT -D_GLIBCXX_DEBUG_PEDASSERT -D_GLIBCXX_DEBUG_VERIFY") + endif() + endif() - include(ClangSanitizer) + include(ClangSanitizer) endif() # COMPILER_IS_CLANG ### Intel compiler if(COMPILER_IS_INTEL) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") - message(STATUS "Set Intel release flags") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -DNDEBUG") - endif() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xHOST -O3 -no-prec-div -DNDEBUG") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") + message(STATUS "Set Intel release flags") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -DNDEBUG") + endif() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xHOST -O3 -no-prec-div -DNDEBUG") endif() # COMPILER_IS_INTEL # Profiling if(OGS_PROFILE) - if(NOT CMAKE_BUILD_TYPE STREQUAL "Release") - message(STATUS "When using profiling you should set CMAKE_BUILD_TYPE to Release.") - endif() - set(PROFILE_FLAGS "-pg -fno-omit-frame-pointer -O2 -DNDEBUG") - # clang compiler does not know the following flags - if(NOT COMPILER_IS_CLANG) - set(PROFILE_FLAGS "${PROFILE_FLAGS} -fno-inline-functions-called-once -fno-optimize-sibling-calls") - endif() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PROFILE_FLAGS}") + if(NOT CMAKE_BUILD_TYPE STREQUAL "Release") + message(STATUS "When using profiling you should set CMAKE_BUILD_TYPE to Release.") + endif() + set(PROFILE_FLAGS "-pg -fno-omit-frame-pointer -O2 -DNDEBUG") + # clang compiler does not know the following flags + if(NOT COMPILER_IS_CLANG) + set(PROFILE_FLAGS "${PROFILE_FLAGS} -fno-inline-functions-called-once -fno-optimize-sibling-calls") + endif() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PROFILE_FLAGS}") endif () ### Windows if (WIN32) - ## For Visual Studio compiler - if (MSVC) - add_definitions( - -D_CRT_SECURE_NO_WARNINGS - -D_CRT_NONSTDC_NO_WARNINGS - -D_CRT_XNONSTDC_NO_WARNINGS - -D__restrict__=__restrict # this fixes #5 - -DNOMINMAX # This fixes compile errors with std::numeric_limits<T>::min() / max() - ) - # Sets warning level 3 and ignores some warnings - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /wd4290 /wd4267 /wd4996 /bigobj") - # Allow big object files generated for template heavy code - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj") - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /ZI /Od /Ob0") + ## For Visual Studio compiler + if (MSVC) + add_definitions( + -D_CRT_SECURE_NO_WARNINGS + -D_CRT_NONSTDC_NO_WARNINGS + -D_CRT_XNONSTDC_NO_WARNINGS + -D__restrict__=__restrict # this fixes #5 + -DNOMINMAX # This fixes compile errors with std::numeric_limits<T>::min() / max() + ) + # Sets warning level 3 and ignores some warnings + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /wd4290 /wd4267 /wd4996 /bigobj") + # Allow big object files generated for template heavy code + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /ZI /Od /Ob0") - DisableCompilerFlag(DEBUG /RTC1) - # cygwin - else() - if(CMAKE_CROSSCOMPILING) - message(STATUS "Crosscompiling for Windows with MinGW.") - else() - message(STATUS "Might be GCC under cygwin.") - endif() - endif() + DisableCompilerFlag(DEBUG /RTC1) + # cygwin + else() + if(CMAKE_CROSSCOMPILING) + message(STATUS "Crosscompiling for Windows with MinGW.") + else() + message(STATUS "Might be GCC under cygwin.") + endif() + endif() endif () # Missing OpenMP 3.0 implementation fix for Windows, this fixes #6 if(MSVC) - add_definitions(-DOPENMP_LOOP_TYPE=int) + add_definitions(-DOPENMP_LOOP_TYPE=int) else() - add_definitions(-DOPENMP_LOOP_TYPE=unsigned) + add_definitions(-DOPENMP_LOOP_TYPE=unsigned) endif() diff --git a/scripts/cmake/ConanSetup.cmake b/scripts/cmake/ConanSetup.cmake index ac7f091b9de2ceba89056cb6567f415f7566930e..2ed320cfa2fb025c3c9ad54b5da30f2ef417b903 100644 --- a/scripts/cmake/ConanSetup.cmake +++ b/scripts/cmake/ConanSetup.cmake @@ -1,22 +1,22 @@ if($ENV{CONAN_INSTALL}) - find_program(CONAN_TOOL_PATH conan) - if(CONAN_TOOL_PATH) - execute_process(COMMAND ${CONAN_TOOL_PATH} install -u ${CMAKE_CURRENT_SOURCE_DIR} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) - endif() + find_program(CONAN_TOOL_PATH conan) + if(CONAN_TOOL_PATH) + execute_process(COMMAND ${CONAN_TOOL_PATH} install -u ${CMAKE_CURRENT_SOURCE_DIR} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + endif() endif() set(USE_CONAN false CACHE INTERNAL "") if(EXISTS ${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) - include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) - set(USE_CONAN true) + include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) + set(USE_CONAN true) elseif(EXISTS ${CMAKE_SOURCE_DIR}/conanbuildinfo.cmake) - include(${CMAKE_SOURCE_DIR}/conanbuildinfo.cmake) - set(USE_CONAN true) + include(${CMAKE_SOURCE_DIR}/conanbuildinfo.cmake) + set(USE_CONAN true) endif() if(USE_CONAN) - set(CMAKE_MODULE_PATH ${CONAN_CMAKE_MODULE_PATH} ${CMAKE_MODULE_PATH}) - message(STATUS "Using conan package manager") - set(OGS_LIB_VTK System CACHE INTERNAL "") - set(OGS_LIB_BOOST System CACHE INTERNAL "") - set(OGS_LIB_EIGEN System CACHE INTERNAL "") + set(CMAKE_MODULE_PATH ${CONAN_CMAKE_MODULE_PATH} ${CMAKE_MODULE_PATH}) + message(STATUS "Using conan package manager") + set(OGS_LIB_VTK System CACHE INTERNAL "") + set(OGS_LIB_BOOST System CACHE INTERNAL "") + set(OGS_LIB_EIGEN System CACHE INTERNAL "") endif() diff --git a/scripts/cmake/Coverage.cmake b/scripts/cmake/Coverage.cmake index 21904dc7f12ec27923dd6932fb558fb828b2131f..cb4a0d2779c9f23a2062929916335dad455c25c1 100644 --- a/scripts/cmake/Coverage.cmake +++ b/scripts/cmake/Coverage.cmake @@ -1,39 +1,39 @@ include(CodeCoverage) set(COVERAGE_EXCLUDES - '/gpfs0/*' - '/usr/*' - '${CMAKE_BINARY_DIR}/*' - '${CMAKE_SOURCE_DIR}/Tests/*' - '${CMAKE_SOURCE_DIR}/ThirdParty/*' + '/gpfs0/*' + '/usr/*' + '${CMAKE_BINARY_DIR}/*' + '${CMAKE_SOURCE_DIR}/Tests/*' + '${CMAKE_SOURCE_DIR}/ThirdParty/*' ) if(LCOV_PATH AND GENHTML_PATH) - SETUP_TARGET_FOR_COVERAGE( - NAME testrunner_coverage - EXECUTABLE testrunner -j ${PROCESSOR_COUNT} - DEPENDENCIES testrunner - ) - SETUP_TARGET_FOR_COVERAGE( - NAME ctest_coverage - EXECUTABLE ctest -E LARGE -j ${PROCESSOR_COUNT} - DEPENDENCIES ogs - ) + SETUP_TARGET_FOR_COVERAGE( + NAME testrunner_coverage + EXECUTABLE testrunner -j ${PROCESSOR_COUNT} + DEPENDENCIES testrunner + ) + SETUP_TARGET_FOR_COVERAGE( + NAME ctest_coverage + EXECUTABLE ctest -E LARGE -j ${PROCESSOR_COUNT} + DEPENDENCIES ogs + ) else() - message(STATUS "No lcov coverage report generated because lcov or genhtml was not found.") + message(STATUS "No lcov coverage report generated because lcov or genhtml was not found.") endif() if(PYTHON_EXECUTABLE) - SETUP_TARGET_FOR_COVERAGE_COBERTURA( - NAME testrunner_coverage_cobertura - EXECUTABLE testrunner -j ${PROCESSOR_COUNT} - DEPENDENCIES testrunner - ) - SETUP_TARGET_FOR_COVERAGE_COBERTURA( - NAME ctest_coverage_cobertura - EXECUTABLE ctest -E LARGE -j ${PROCESSOR_COUNT} - DEPENDENCIES ogs - ) + SETUP_TARGET_FOR_COVERAGE_COBERTURA( + NAME testrunner_coverage_cobertura + EXECUTABLE testrunner -j ${PROCESSOR_COUNT} + DEPENDENCIES testrunner + ) + SETUP_TARGET_FOR_COVERAGE_COBERTURA( + NAME ctest_coverage_cobertura + EXECUTABLE ctest -E LARGE -j ${PROCESSOR_COUNT} + DEPENDENCIES ogs + ) else() - message(STATUS "No cobertura coverage report generated because Python executable was not found.") + message(STATUS "No cobertura coverage report generated because Python executable was not found.") endif() diff --git a/scripts/cmake/DocumentationSetup.cmake b/scripts/cmake/DocumentationSetup.cmake index c66acfea4281446c7cf9f36859418791b1f155a9..144bb533951ef6fdab7e771e766317e60f9c4a13 100644 --- a/scripts/cmake/DocumentationSetup.cmake +++ b/scripts/cmake/DocumentationSetup.cmake @@ -1,41 +1,41 @@ if(DOXYGEN_FOUND) - option(DOCS_GENERATE_DOCSET "Generate Dash Docsets." OFF) + option(DOCS_GENERATE_DOCSET "Generate Dash Docsets." OFF) - set(DOT_FOUND "NO") - if(DOXYGEN_DOT_FOUND) - set(DOT_FOUND "YES") - endif() + set(DOT_FOUND "NO") + if(DOXYGEN_DOT_FOUND) + set(DOT_FOUND "YES") + endif() - add_custom_target(doc ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile - WORKING_DIRECTORY ${PROJECT_BINARY_DIR} - COMMENT "Generating source code documentation with Doxygen." VERBATIM) + add_custom_target(doc ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + COMMENT "Generating source code documentation with Doxygen." VERBATIM) - # Defaults - set(DOCS_GENERATE_TREEVIEW_STRING "YES" CACHE INTERNAL "") - set(DOCS_DISABLE_INDEX_STRING "NO" CACHE INTERNAL "") - set(DOCS_GENERATE_DOCSET_STRING "NO" CACHE INTERNAL "") - set(DOCS_SEARCHENGINE_STRING "YES" CACHE INTERNAL "") + # Defaults + set(DOCS_GENERATE_TREEVIEW_STRING "YES" CACHE INTERNAL "") + set(DOCS_DISABLE_INDEX_STRING "NO" CACHE INTERNAL "") + set(DOCS_GENERATE_DOCSET_STRING "NO" CACHE INTERNAL "") + set(DOCS_SEARCHENGINE_STRING "YES" CACHE INTERNAL "") - # Dash Docsets - if(DOCS_GENERATE_DOCSET) - find_program(DOCSETUTIL_TOOLPATH docsetutil - PATH /Applications/Xcode.app/Contents/Developer/usr/bin) - if(NOT DOCSETUTIL_TOOLPATH) - message(FATAL_ERROR "docsetutil required for Docset-generation!") - endif() - set(DOCS_GENERATE_TREEVIEW_STRING "NO" CACHE INTERNAL "") - set(DOCS_DISABLE_INDEX_STRING "YES" CACHE INTERNAL "") - set(DOCS_GENERATE_DOCSET_STRING "YES" CACHE INTERNAL "") - set(DOCS_SEARCHENGINE_STRING "NO" CACHE INTERNAL "") - add_custom_command(TARGET doc POST_BUILD - COMMAND make - COMMAND mv org.doxygen.Project.docset ogs6.docset - WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/docs - COMMENT "Generating docset ...") - configure_file(Documentation/DocsetFeed.xml.in ${PROJECT_BINARY_DIR}/docs/ogs6.xml) - endif() + # Dash Docsets + if(DOCS_GENERATE_DOCSET) + find_program(DOCSETUTIL_TOOLPATH docsetutil + PATH /Applications/Xcode.app/Contents/Developer/usr/bin) + if(NOT DOCSETUTIL_TOOLPATH) + message(FATAL_ERROR "docsetutil required for Docset-generation!") + endif() + set(DOCS_GENERATE_TREEVIEW_STRING "NO" CACHE INTERNAL "") + set(DOCS_DISABLE_INDEX_STRING "YES" CACHE INTERNAL "") + set(DOCS_GENERATE_DOCSET_STRING "YES" CACHE INTERNAL "") + set(DOCS_SEARCHENGINE_STRING "NO" CACHE INTERNAL "") + add_custom_command(TARGET doc POST_BUILD + COMMAND make + COMMAND mv org.doxygen.Project.docset ogs6.docset + WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/docs + COMMENT "Generating docset ...") + configure_file(Documentation/DocsetFeed.xml.in ${PROJECT_BINARY_DIR}/docs/ogs6.xml) + endif() - configure_file(Documentation/Doxyfile.in ${PROJECT_BINARY_DIR}/Doxyfile) + configure_file(Documentation/Doxyfile.in ${PROJECT_BINARY_DIR}/Doxyfile) endif() diff --git a/scripts/cmake/ExternalProjectBoost.cmake b/scripts/cmake/ExternalProjectBoost.cmake index 670b7d885a6fe9b430af32811ae344c46530a4ca..71d4daef9e8d9e7172dff2236515300a16333d05 100644 --- a/scripts/cmake/ExternalProjectBoost.cmake +++ b/scripts/cmake/ExternalProjectBoost.cmake @@ -1,59 +1,59 @@ if(USE_CONAN) - SET(BOOST_HEADER_ONLY TRUE) - find_package(Boost REQUIRED) - include_directories(SYSTEM ${CONAN_INCLUDE_DIRS_BOOST}) - link_directories(${Boost_LIBRARY_DIR}) - return() + SET(BOOST_HEADER_ONLY TRUE) + find_package(Boost REQUIRED) + include_directories(SYSTEM ${CONAN_INCLUDE_DIRS_BOOST}) + link_directories(${Boost_LIBRARY_DIR}) + return() endif() include(ThirdPartyLibVersions) include(ExternalProject) if(Boost_FOUND) - return() + return() endif() if(NOT DEFINED BOOST_ROOT AND DEFINED ENV{BOOST_ROOT}) - set(BOOST_ROOT $ENV{BOOST_ROOT} TRUE CACHE PATH "") + set(BOOST_ROOT $ENV{BOOST_ROOT} TRUE CACHE PATH "") endif() # First check for system boost if(NOT Boost_INCLUDE_DIRS) - if(APPLE) - set(BOOST_ROOT $ENV{HOMEBREW_ROOT}) - endif() - if(WIN32 AND COMPILER_IS_GCC) - set(BOOST_INCLUDEDIR "$ENV{CMAKE_LIBRARY_SEARCH_PATH}/include/boost*") - endif() - if(OGS_LIB_BOOST STREQUAL "System") - find_package(Boost ${OGS_BOOST_VERSION} REQUIRED) - if(NOT Boost_FOUND) - message(FATAL_ERROR "Aborting CMake because system Boost was not found!") - endif() - elseif(OGS_LIB_BOOST STREQUAL "Default") - find_package(Boost ${OGS_BOOST_VERSION}) - endif() - if(Boost_FOUND) - set(Boost_FOUND TRUE CACHE BOOL "Was Boost found?" FORCE) - set(Boost_INCLUDE_DIRS "${Boost_INCLUDE_DIRS}" CACHE STRING "Boost include dirs" FORCE) - return() - else() - set(Boost_INCLUDE_DIRS "") - endif() + if(APPLE) + set(BOOST_ROOT $ENV{HOMEBREW_ROOT}) + endif() + if(WIN32 AND COMPILER_IS_GCC) + set(BOOST_INCLUDEDIR "$ENV{CMAKE_LIBRARY_SEARCH_PATH}/include/boost*") + endif() + if(OGS_LIB_BOOST STREQUAL "System") + find_package(Boost ${OGS_BOOST_VERSION} REQUIRED) + if(NOT Boost_FOUND) + message(FATAL_ERROR "Aborting CMake because system Boost was not found!") + endif() + elseif(OGS_LIB_BOOST STREQUAL "Default") + find_package(Boost ${OGS_BOOST_VERSION}) + endif() + if(Boost_FOUND) + set(Boost_FOUND TRUE CACHE BOOL "Was Boost found?" FORCE) + set(Boost_INCLUDE_DIRS "${Boost_INCLUDE_DIRS}" CACHE STRING "Boost include dirs" FORCE) + return() + else() + set(Boost_INCLUDE_DIRS "") + endif() endif() ExternalProject_Add(Boost - PREFIX ${CMAKE_BINARY_DIR}/External/boost - URL ${OGS_BOOST_URL} - URL_MD5 ${OGS_BOOST_MD5} - UPDATE_COMMAND "" - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - BUILD_IN_SOURCE 1 - INSTALL_COMMAND "" + PREFIX ${CMAKE_BINARY_DIR}/External/boost + URL ${OGS_BOOST_URL} + URL_MD5 ${OGS_BOOST_MD5} + UPDATE_COMMAND "" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + BUILD_IN_SOURCE 1 + INSTALL_COMMAND "" ) ExternalProject_Get_Property( Boost source_dir ) if(NOT Boost_INCLUDE_DIRS) - set( Boost_INCLUDE_DIRS ${source_dir} CACHE INTERNAL "Boost include directories") - message(STATUS "Downloading Boost ${OGS_BOOST_VERSION} automatically.") + set( Boost_INCLUDE_DIRS ${source_dir} CACHE INTERNAL "Boost include directories") + message(STATUS "Downloading Boost ${OGS_BOOST_VERSION} automatically.") endif() diff --git a/scripts/cmake/ExternalProjectCatalyst.cmake b/scripts/cmake/ExternalProjectCatalyst.cmake index fbb459253007e7464c0a2558188abd8d6e1540ca..5467d041d5f0ca7f58cf24930c8de2a57f91b5ec 100644 --- a/scripts/cmake/ExternalProjectCatalyst.cmake +++ b/scripts/cmake/ExternalProjectCatalyst.cmake @@ -4,70 +4,70 @@ include(ExternalProject) set(CATALYST_GIT_URL https://github.com/ufz/catalyst-io.git) if(NOT DEFINED ParaView_DIR AND DEFINED ENV{ParaView_DIR}) - set(ParaView_DIR $ENV{ParaView_DIR}) + set(ParaView_DIR $ENV{ParaView_DIR}) endif() set(VTK_LIBRARIES ${VTK_MODULES} CACHE STRING "" FORCE) if(OGS_BUILD_GUI) - # Replace vtknetcdf with vtkNetCDF vtkNetCDF_cxx - list(REMOVE_ITEM VTK_LIBRARIES vtknetcdf) - list(APPEND VTK_LIBRARIES vtkNetCDF vtkNetCDF_cxx) + # Replace vtknetcdf with vtkNetCDF vtkNetCDF_cxx + list(REMOVE_ITEM VTK_LIBRARIES vtknetcdf) + list(APPEND VTK_LIBRARIES vtkNetCDF vtkNetCDF_cxx) endif() find_package(ParaView 4.2 COMPONENTS ${VTK_MODULES} NO_MODULE QUIET) find_library(VTKIO_LIB_FOUND vtkIOXML-pv4.2 HINTS ${ParaView_DIR}/lib PATH_SUFFIXES Release Debug) if(ParaView_FOUND AND VTKIO_LIB_FOUND) - foreach(DIR ${PARAVIEW_INCLUDE_DIRS}) - if("${DIR}" MATCHES ".*vtknetcdf.*") - include_directories(SYSTEM ${DIR}/../cxx ${DIR}/include) - endif() - endforeach() - message(STATUS "Using ParaView in ${ParaView_DIR}") - return() + foreach(DIR ${PARAVIEW_INCLUDE_DIRS}) + if("${DIR}" MATCHES ".*vtknetcdf.*") + include_directories(SYSTEM ${DIR}/../cxx ${DIR}/include) + endif() + endforeach() + message(STATUS "Using ParaView in ${ParaView_DIR}") + return() elseif(NOT ParaView_DIR) - # If nothing was found build ParaView as an external project - set(ParaView_DIR ${CMAKE_BINARY_DIR}/External/catalyst/src/Catalyst-build CACHE PATH "" FORCE) - endif() + # If nothing was found build ParaView as an external project + set(ParaView_DIR ${CMAKE_BINARY_DIR}/External/catalyst/src/Catalyst-build CACHE PATH "" FORCE) + endif() endif() set(CATALYST_CMAKE_GENERATOR ${CMAKE_GENERATOR}) if(WIN32) - # Ninja temporary disabled because it builds only the Release mode. - # find_program(NINJA_TOOL_PATH ninja DOC "Ninja build tool") - if(NINJA_TOOL_PATH) - set(CATALYST_CMAKE_GENERATOR Ninja) - set(CATALYST_MAKE_COMMAND ninja ${VTK_LIBRARIES}) - else() - set(CATALYST_MAKE_COMMAND - msbuild /p:Configuration=Release /m:${NUM_PROCESSORS} ParaView.sln && - msbuild /p:Configuration=Debug /m:${NUM_PROCESSORS} /m ParaView.sln) - endif() - set(CATALYST_CONFIGURE_COMMAND cmake.bat) + # Ninja temporary disabled because it builds only the Release mode. + # find_program(NINJA_TOOL_PATH ninja DOC "Ninja build tool") + if(NINJA_TOOL_PATH) + set(CATALYST_CMAKE_GENERATOR Ninja) + set(CATALYST_MAKE_COMMAND ninja ${VTK_LIBRARIES}) + else() + set(CATALYST_MAKE_COMMAND + msbuild /p:Configuration=Release /m:${NUM_PROCESSORS} ParaView.sln && + msbuild /p:Configuration=Debug /m:${NUM_PROCESSORS} /m ParaView.sln) + endif() + set(CATALYST_CONFIGURE_COMMAND cmake.bat) else() - if($ENV{CI}) - set(CATALYST_MAKE_COMMAND make ${VTK_LIBRARIES}) - else() - set(CATALYST_MAKE_COMMAND make -j ${NUM_PROCESSORS} ${VTK_LIBRARIES}) - endif() - set(CATALYST_CONFIGURE_COMMAND cmake.sh) + if($ENV{CI}) + set(CATALYST_MAKE_COMMAND make ${VTK_LIBRARIES}) + else() + set(CATALYST_MAKE_COMMAND make -j ${NUM_PROCESSORS} ${VTK_LIBRARIES}) + endif() + set(CATALYST_CONFIGURE_COMMAND cmake.sh) endif() message(STATUS "Building ParaView as an external project in the build directory") ExternalProject_Add(Catalyst - PREFIX ${CMAKE_BINARY_DIR}/External/catalyst - GIT_REPOSITORY ${CATALYST_GIT_URL} - CONFIGURE_COMMAND ../Catalyst/${CATALYST_CONFIGURE_COMMAND} -G ${CATALYST_CMAKE_GENERATOR} - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} ../Catalyst - BUILD_COMMAND ${CATALYST_MAKE_COMMAND} - INSTALL_COMMAND "" + PREFIX ${CMAKE_BINARY_DIR}/External/catalyst + GIT_REPOSITORY ${CATALYST_GIT_URL} + CONFIGURE_COMMAND ../Catalyst/${CATALYST_CONFIGURE_COMMAND} -G ${CATALYST_CMAKE_GENERATOR} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} ../Catalyst + BUILD_COMMAND ${CATALYST_MAKE_COMMAND} + INSTALL_COMMAND "" ) if(NOT ParaView_FOUND) - # Rerun cmake in initial build - add_custom_target(VtkRescan ${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR} DEPENDS Catalyst) + # Rerun cmake in initial build + add_custom_target(VtkRescan ${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR} DEPENDS Catalyst) else() - add_custom_target(VtkRescan) # dummy target for caching + add_custom_target(VtkRescan) # dummy target for caching endif() diff --git a/scripts/cmake/ExternalProjectEigen.cmake b/scripts/cmake/ExternalProjectEigen.cmake index 973549edac5153aeab9effd208f079942ec469ac..0d72c570f38af2597385ffd290aaedf9b999ee83 100644 --- a/scripts/cmake/ExternalProjectEigen.cmake +++ b/scripts/cmake/ExternalProjectEigen.cmake @@ -1,49 +1,49 @@ if(USE_CONAN) - find_package(Eigen3 REQUIRED) - include_directories(SYSTEM ${CONAN_INCLUDE_DIRS_EIGEN3}) - return() + find_package(Eigen3 REQUIRED) + include_directories(SYSTEM ${CONAN_INCLUDE_DIRS_EIGEN3}) + return() endif() if(OGS_LIB_EIGEN STREQUAL "System") - find_package(Eigen3 3.2.5 REQUIRED) - if(NOT EIGEN3_FOUND) - message(FATAL_ERROR "Aborting CMake because system Eigen was not found!") - endif() + find_package(Eigen3 3.2.5 REQUIRED) + if(NOT EIGEN3_FOUND) + message(FATAL_ERROR "Aborting CMake because system Eigen was not found!") + endif() elseif(OGS_LIB_EIGEN STREQUAL "Default") - find_package(Eigen3 3.2.5) + find_package(Eigen3 3.2.5) endif() # First check for system Eigen if(NOT EIGEN3_INCLUDE_DIR) - if(EIGEN3_FOUND) - set(EIGEN3_FOUND TRUE CACHE BOOL "Was Eigen found?" FORCE) - set(EIGEN3_INCLUDE_DIR "${EIGEN3_INCLUDE_DIR}" CACHE STRING "Eigen include dir" FORCE) - return() - else() - set(EIGEN3_INCLUDE_DIR "") - endif() + if(EIGEN3_FOUND) + set(EIGEN3_FOUND TRUE CACHE BOOL "Was Eigen found?" FORCE) + set(EIGEN3_INCLUDE_DIR "${EIGEN3_INCLUDE_DIR}" CACHE STRING "Eigen include dir" FORCE) + return() + else() + set(EIGEN3_INCLUDE_DIR "") + endif() endif() if(EIGEN3_FOUND) - return() + return() endif() include(ThirdPartyLibVersions) include(ExternalProject) ExternalProject_Add(Eigen - PREFIX ${CMAKE_BINARY_DIR}/External/eigen - URL ${OGS_EIGEN_URL} - URL_MD5 ${OGS_EIGEN_MD5} - UPDATE_COMMAND "" - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - BUILD_IN_SOURCE 1 - INSTALL_COMMAND "" + PREFIX ${CMAKE_BINARY_DIR}/External/eigen + URL ${OGS_EIGEN_URL} + URL_MD5 ${OGS_EIGEN_MD5} + UPDATE_COMMAND "" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + BUILD_IN_SOURCE 1 + INSTALL_COMMAND "" ) ExternalProject_Get_Property( Eigen source_dir ) if(NOT EIGEN3_INCLUDE_DIR) - set( EIGEN3_INCLUDE_DIR ${source_dir} CACHE INTERNAL "Eigen include dir" FORCE) - message(STATUS "Downloading Eigen automatically.") + set( EIGEN3_INCLUDE_DIR ${source_dir} CACHE INTERNAL "Eigen include dir" FORCE) + message(STATUS "Downloading Eigen automatically.") endif() diff --git a/scripts/cmake/ExternalProjectVtk.cmake b/scripts/cmake/ExternalProjectVtk.cmake index 4b0046dce4542a3385a7f0c5dcc9b35bb0371384..d6ae5fd5d8841977880fe92cb9cf034fde2b046b 100644 --- a/scripts/cmake/ExternalProjectVtk.cmake +++ b/scripts/cmake/ExternalProjectVtk.cmake @@ -1,81 +1,81 @@ if(USE_CONAN) - find_package(VTK REQUIRED) - include(${VTK_USE_FILE}) - include_directories(SYSTEM ${CONAN_INCLUDE_DIRS_VTK}) - return() + find_package(VTK REQUIRED) + include(${VTK_USE_FILE}) + include_directories(SYSTEM ${CONAN_INCLUDE_DIRS_VTK}) + return() endif() include(ThirdPartyLibVersions) include(ExternalProject) if(NOT DEFINED VTK_DIR AND DEFINED ENV{VTK_DIR}) - set(VTK_DIR $ENV{VTK_DIR}) + set(VTK_DIR $ENV{VTK_DIR}) endif() set(VTK_LIBRARIES ${VTK_MODULES} CACHE STRING "" FORCE) if(OGS_BUILD_GUI) - # Replace vtknetcdf with vtkNetCDF vtkNetCDF_cxx - list(REMOVE_ITEM VTK_LIBRARIES vtknetcdf) - list(APPEND VTK_LIBRARIES vtkNetCDF vtkNetCDF_cxx) + # Replace vtknetcdf with vtkNetCDF vtkNetCDF_cxx + list(REMOVE_ITEM VTK_LIBRARIES vtknetcdf) + list(APPEND VTK_LIBRARIES vtkNetCDF vtkNetCDF_cxx) endif() if(OGS_LIB_VTK STREQUAL "System") - find_package(VTK COMPONENTS ${VTK_MODULES} NO_MODULE REQUIRED) - if(NOT VTK_FOUND) - message(FATAL_ERROR "Aborting CMake because system VTK was not found!") - endif() + find_package(VTK COMPONENTS ${VTK_MODULES} NO_MODULE REQUIRED) + if(NOT VTK_FOUND) + message(FATAL_ERROR "Aborting CMake because system VTK was not found!") + endif() elseif(OGS_LIB_VTK STREQUAL "Default" OR DEFINED VTK_DIR) - find_package(VTK COMPONENTS ${VTK_MODULES} NO_MODULE QUIET) + find_package(VTK COMPONENTS ${VTK_MODULES} NO_MODULE QUIET) endif() if(VTK_FOUND) - if(VTK_VERSION VERSION_LESS 6.1.0) - message(FATAL_ERROR "Aborting CMake because VTK ${VTK_VERSION} is too old! (required: 6.1.0)") - endif() - message(STATUS "Using VTK ${VTK_VERSION} in ${VTK_DIR}") - foreach(DIR ${VTK_INCLUDE_DIRS}) - if("${DIR}" MATCHES ".*vtknetcdf.*") - include_directories(SYSTEM ${DIR}/../cxx ${DIR}/include) - elseif("${DIR}" MATCHES ".*vtk.*") - include_directories(SYSTEM ${DIR}/vtknetcdf/include) - endif() - endforeach() - include_directories(SYSTEM ${VTK_DIR}/../ThirdParty/netcdf/vtknetcdf/cxx) - return() + if(VTK_VERSION VERSION_LESS 6.1.0) + message(FATAL_ERROR "Aborting CMake because VTK ${VTK_VERSION} is too old! (required: 6.1.0)") + endif() + message(STATUS "Using VTK ${VTK_VERSION} in ${VTK_DIR}") + foreach(DIR ${VTK_INCLUDE_DIRS}) + if("${DIR}" MATCHES ".*vtknetcdf.*") + include_directories(SYSTEM ${DIR}/../cxx ${DIR}/include) + elseif("${DIR}" MATCHES ".*vtk.*") + include_directories(SYSTEM ${DIR}/vtknetcdf/include) + endif() + endforeach() + include_directories(SYSTEM ${VTK_DIR}/../ThirdParty/netcdf/vtknetcdf/cxx) + return() endif() set(VTK_DIR ${CMAKE_BINARY_DIR}/External/vtk/src/vtk-build CACHE PATH "" FORCE) message(STATUS "Building VTK as an external project in the build directory") if(WIN32) - set(VTK_MAKE_COMMAND - msbuild /p:Configuration=Release /m:${NUM_PROCESSORS} VTK.sln && - msbuild /p:Configuration=Debug /m:${NUM_PROCESSORS} /m VTK.sln) + set(VTK_MAKE_COMMAND + msbuild /p:Configuration=Release /m:${NUM_PROCESSORS} VTK.sln && + msbuild /p:Configuration=Debug /m:${NUM_PROCESSORS} /m VTK.sln) else() - if($ENV{CI}) - set(VTK_MAKE_COMMAND make) - else() - set(VTK_MAKE_COMMAND make -j ${NUM_PROCESSORS}) - endif() + if($ENV{CI}) + set(VTK_MAKE_COMMAND make) + else() + set(VTK_MAKE_COMMAND make -j ${NUM_PROCESSORS}) + endif() endif() # Enable just the modules we selected set(VTK_CMAKE_ARGS -DVTK_Group_StandAlone:bool=off -DVTK_Group_Rendering:bool=off) foreach(arg ${VTK_MODULES}) - list(APPEND VTK_CMAKE_ARGS -DModule_${arg}:bool=on) + list(APPEND VTK_CMAKE_ARGS -DModule_${arg}:bool=on) endforeach() ExternalProject_Add(vtk - PREFIX ${CMAKE_BINARY_DIR}/External/vtk - URL ${OGS_VTK_URL} - CMAKE_ARGS -Wno-dev - CMAKE_CACHE_ARGS ${VTK_CMAKE_ARGS} - BUILD_COMMAND ${VTK_MAKE_COMMAND} - INSTALL_COMMAND "" + PREFIX ${CMAKE_BINARY_DIR}/External/vtk + URL ${OGS_VTK_URL} + CMAKE_ARGS -Wno-dev + CMAKE_CACHE_ARGS ${VTK_CMAKE_ARGS} + BUILD_COMMAND ${VTK_MAKE_COMMAND} + INSTALL_COMMAND "" ) if(NOT VTK_FOUND) - # Rerun cmake in initial build - add_custom_target(VtkRescan ${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR} DEPENDS vtk) + # Rerun cmake in initial build + add_custom_target(VtkRescan ${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR} DEPENDS vtk) else() - add_custom_target(VtkRescan) # dummy target for caching + add_custom_target(VtkRescan) # dummy target for caching endif() diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake index bcb5afd5af4f7a0b1b651382ab92bd23caac76f5..342de3e5c7f9bec849a7aebd707547e2e5826ca9 100644 --- a/scripts/cmake/Find.cmake +++ b/scripts/cmake/Find.cmake @@ -4,14 +4,14 @@ # Find doxygen if(WIN32) - find_program(DOXYGEN_DOT_EXECUTABLE NAMES dot PATHS "$ENV{ProgramFiles}/Graphviz*/bin") - find_package(Doxygen QUIET) - if(DOXYGEN_DOT_PATH) - file(TO_NATIVE_PATH ${DOXYGEN_DOT_PATH} DOXYGEN_DOT_PATH) - set(DOXYGEN_DOT_PATH "\"${DOXYGEN_DOT_PATH}\"") - endif() + find_program(DOXYGEN_DOT_EXECUTABLE NAMES dot PATHS "$ENV{ProgramFiles}/Graphviz*/bin") + find_package(Doxygen QUIET) + if(DOXYGEN_DOT_PATH) + file(TO_NATIVE_PATH ${DOXYGEN_DOT_PATH} DOXYGEN_DOT_PATH) + set(DOXYGEN_DOT_PATH "\"${DOXYGEN_DOT_PATH}\"") + endif() else() - find_package(Doxygen QUIET) + find_package(Doxygen QUIET) endif() # Find gnu profiler gprof @@ -27,19 +27,19 @@ set(GIT_TOOL_PATH ${GIT_EXECUTABLE} CACHE FILEPATH "The git command line interfa # Find bash itself ... find_program(BASH_TOOL_PATH bash - HINTS ${GITHUB_BIN_DIR} DOC "The bash executable") + HINTS ${GITHUB_BIN_DIR} DOC "The bash executable") # Dumpbin is a windows dependency analaysis tool required for packaging. # Variable has to be named gp_cmd to override the outdated find routines # of the GetPrerequisites CMake-module. if(WIN32) - include(MSVCPaths) - find_program(gp_cmd dumpbin DOC "Windows dependency analysis tool" - PATHS ${MSVC_INSTALL_PATHS} PATH_SUFFIXES VC/bin) - if(gp_cmd) - get_filename_component(dir ${gp_cmd} PATH) - set(ENV{PATH} "${dir}/../../../Common7/IDE;$ENV{PATH}") - endif() + include(MSVCPaths) + find_program(gp_cmd dumpbin DOC "Windows dependency analysis tool" + PATHS ${MSVC_INSTALL_PATHS} PATH_SUFFIXES VC/bin) + if(gp_cmd) + get_filename_component(dir ${gp_cmd} PATH) + set(ENV{PATH} "${dir}/../../../Common7/IDE;$ENV{PATH}") + endif() endif() find_program(CURL_TOOL_PATH curl DOC "The curl-tool") @@ -49,11 +49,11 @@ find_program(S3CMD_TOOL_PATH s3cmd DOC "S3cmd tool for uploading to Amazon S3") ## CCache find_program(CCACHE_FOUND ccache) if(CCACHE_FOUND) - set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) - set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) - if(COMPILER_IS_CLANG) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments") - endif() + set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) + set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) + if(COMPILER_IS_CLANG) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments") + endif() endif(CCACHE_FOUND) ###################### @@ -62,43 +62,43 @@ endif(CCACHE_FOUND) ## pthread, is a requirement of logog ## if(CMAKE_CROSSCOMPILING) - set(THREADS_PTHREAD_ARG 0 CACHE STRING "Result from TRY_RUN" FORCE) + set(THREADS_PTHREAD_ARG 0 CACHE STRING "Result from TRY_RUN" FORCE) endif() set(CMAKE_THREAD_PREFER_PTHREAD ON) set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) if(CMAKE_USE_PTHREADS_INIT) - set(HAVE_PTHREADS TRUE) - add_definitions(-DHAVE_PTHREADS) + set(HAVE_PTHREADS TRUE) + add_definitions(-DHAVE_PTHREADS) endif() # Do not search for libs if this option is set if(OGS_NO_EXTERNAL_LIBS) - return() + return() endif() # OGS_NO_EXTERNAL_LIBS find_package(OpenMP QUIET) if(OPENMP_FOUND) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") - message(STATUS "OpenMP enabled.") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + message(STATUS "OpenMP enabled.") endif() find_package(Metis QUIET) ## Qt4 library ## if(OGS_BUILD_GUI) - find_package( Qt4 4.7 REQUIRED QtGui QtXml QtXmlPatterns) - cmake_policy(SET CMP0020 NEW) - if(CMAKE_CROSSCOMPILING) - find_package(PkgConfig REQUIRED) - pkg_check_modules(QT_XML_DEPS REQUIRED QtXml) - list(REMOVE_ITEM QT_XML_DEPS_LIBRARIES QtXml QtCore) - pkg_check_modules(QT_GUI_DEPS REQUIRED QtGui) - list(REMOVE_ITEM QT_GUI_DEPS_LIBRARIES QtGui QtCore) - pkg_check_modules(QT_NETWORK_DEPS REQUIRED QtNetwork) - list(REMOVE_ITEM QT_NETWORK_DEPS_LIBRARIES QtNetwork QtCore) - endif() + find_package( Qt4 4.7 REQUIRED QtGui QtXml QtXmlPatterns) + cmake_policy(SET CMP0020 NEW) + if(CMAKE_CROSSCOMPILING) + find_package(PkgConfig REQUIRED) + pkg_check_modules(QT_XML_DEPS REQUIRED QtXml) + list(REMOVE_ITEM QT_XML_DEPS_LIBRARIES QtXml QtCore) + pkg_check_modules(QT_GUI_DEPS REQUIRED QtGui) + list(REMOVE_ITEM QT_GUI_DEPS_LIBRARIES QtGui QtCore) + pkg_check_modules(QT_NETWORK_DEPS REQUIRED QtNetwork) + list(REMOVE_ITEM QT_NETWORK_DEPS_LIBRARIES QtNetwork QtCore) + endif() endif() # lapack @@ -107,30 +107,30 @@ find_package(LAPACK QUIET) ## geotiff ## find_package(LibGeoTiff) if(GEOTIFF_FOUND) - add_definitions(-DGEOTIFF_FOUND) + add_definitions(-DGEOTIFF_FOUND) endif() # GEOTIFF_FOUND ## lis ## if(OGS_USE_LIS) - find_package( LIS REQUIRED ) + find_package( LIS REQUIRED ) endif() if(OGS_USE_PETSC) - message(STATUS "Configuring for PETSc") + message(STATUS "Configuring for PETSc") - option(FORCE_PETSC_EXECUTABLE_RUNS "Force CMake to accept a given PETSc configuration" ON) + option(FORCE_PETSC_EXECUTABLE_RUNS "Force CMake to accept a given PETSc configuration" ON) - ##Force CMake to accept a given PETSc configuration in case the failure of MPI tests - ##This may cause the compilation broken. - if(FORCE_PETSC_EXECUTABLE_RUNS) - set(PETSC_EXECUTABLE_RUNS YES) - endif() + ##Force CMake to accept a given PETSc configuration in case the failure of MPI tests + ##This may cause the compilation broken. + if(FORCE_PETSC_EXECUTABLE_RUNS) + set(PETSC_EXECUTABLE_RUNS YES) + endif() - find_package(PETSc REQUIRED) + find_package(PETSc REQUIRED) - include_directories(SYSTEM ${PETSC_INCLUDES}) + include_directories(SYSTEM ${PETSC_INCLUDES}) - add_definitions(-DPETSC_VERSION_NUMBER=PETSC_VERSION_MAJOR*1000+PETSC_VERSION_MINOR*10) + add_definitions(-DPETSC_VERSION_NUMBER=PETSC_VERSION_MAJOR*1000+PETSC_VERSION_MINOR*10) endif() @@ -138,15 +138,15 @@ find_package(OpenSSL) ## Check MPI package if(OGS_USE_MPI) - find_package(MPI REQUIRED) - include_directories(SYSTEM ${MPI_CXX_INCLUDE_PATH}) + find_package(MPI REQUIRED) + include_directories(SYSTEM ${MPI_CXX_INCLUDE_PATH}) endif() find_package(Shapelib) if(Shapelib_FOUND) - include_directories(SYSTEM ${Shapelib_INCLUDE_DIRS}) + include_directories(SYSTEM ${Shapelib_INCLUDE_DIRS}) elseif(OGS_BUILD_GUI) - message(FATAL_ERROR "Shapelib not found but it is required for OGS_BUILD_GUI!") + message(FATAL_ERROR "Shapelib not found but it is required for OGS_BUILD_GUI!") endif() ## Sundials cvode ode-solver library diff --git a/scripts/cmake/FindLibGeoTiff.cmake b/scripts/cmake/FindLibGeoTiff.cmake index 81a646a1f9762325969007336f8626e6cac96f68..54183bc8965cb1b7f38cc0c8fad14c4f65d90be1 100644 --- a/scripts/cmake/FindLibGeoTiff.cmake +++ b/scripts/cmake/FindLibGeoTiff.cmake @@ -18,8 +18,8 @@ find_library(libgeotiff_LIBRARY geotiff) find_path( xtiff_INCLUDE_DIR xtiffio.h) if(MSVC) - find_library(xtiff_LIBRARY xtiff) - list(APPEND _deps_libs ${xtiff_LIBRARY}) + find_library(xtiff_LIBRARY xtiff) + list(APPEND _deps_libs ${xtiff_LIBRARY}) endif() find_package(TIFF) @@ -30,14 +30,14 @@ list(APPEND _deps_check TIFF_FOUND) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(GEOTIFF - REQUIRED_VARS - libgeotiff_LIBRARY - libgeotiff_INCLUDE_DIR - xtiff_INCLUDE_DIR - ${_deps_check} + REQUIRED_VARS + libgeotiff_LIBRARY + libgeotiff_INCLUDE_DIR + xtiff_INCLUDE_DIR + ${_deps_check} ) if(GEOTIFF_FOUND) - set(GEOTIFF_INCLUDE_DIRS ${libgeotiff_INCLUDE_DIR} ${xtiff_INCLUDE_DIR} ${_deps_includes}) - set(GEOTIFF_LIBRARIES ${libgeotiff_LIBRARY} ${_deps_libs}) + set(GEOTIFF_INCLUDE_DIRS ${libgeotiff_INCLUDE_DIR} ${xtiff_INCLUDE_DIR} ${_deps_includes}) + set(GEOTIFF_LIBRARIES ${libgeotiff_LIBRARY} ${_deps_libs}) endif() diff --git a/scripts/cmake/Functions.cmake b/scripts/cmake/Functions.cmake index 08d26d91bcdf0c1137804ca792815a332373511e..fcbf1d19dfd58f40fdd84ab9f1f89f669f4c67ad 100644 --- a/scripts/cmake/Functions.cmake +++ b/scripts/cmake/Functions.cmake @@ -1,63 +1,63 @@ # Returns the current subdirectory in the sources directory. macro(GET_CURRENT_SOURCE_SUBDIRECTORY CURRENT_SOURCE_SUBDIRECTORY) - string(REGEX REPLACE ".*/([^/]*)" "\\1" REGEX_RESULT "${CMAKE_CURRENT_SOURCE_DIR}" ) - set(${CURRENT_SOURCE_SUBDIRECTORY} ${REGEX_RESULT}) + string(REGEX REPLACE ".*/([^/]*)" "\\1" REGEX_RESULT "${CMAKE_CURRENT_SOURCE_DIR}" ) + set(${CURRENT_SOURCE_SUBDIRECTORY} ${REGEX_RESULT}) endmacro() # Returns a list of source files (*.h and *.cpp) in SOURCE_FILES and creates a Visual # Studio folder. A (relative) subdirectory can be passed as second parameter (optional). macro(GET_SOURCE_FILES SOURCE_FILES) - if(${ARGC} EQUAL 2) - set(DIR "${ARGV1}") - else() - set(DIR ".") - endif() - - # Get all files in the directory - file(GLOB GET_SOURCE_FILES_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${DIR}/*.h) - file(GLOB GET_SOURCE_FILES_TEMPLATES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${DIR}/*.tpp) - file(GLOB GET_SOURCE_FILES_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${DIR}/*.cpp) - - set(${SOURCE_FILES} ${GET_SOURCE_FILES_HEADERS} ${GET_SOURCE_FILES_TEMPLATES} ${GET_SOURCE_FILES_SOURCES}) - - # Adapt DIR var to backslash syntax of SOURCE_GROUP cmd - if(${ARGC} EQUAL 2) - string(REPLACE "/" "\\\\" DIR ${DIR}) - set(DIR "\\${DIR}") - else() - set(DIR "") - endif() - - GET_CURRENT_SOURCE_SUBDIRECTORY(DIRECTORY) - source_group("${DIRECTORY}${DIR}" FILES - ${GET_SOURCE_FILES_HEADERS} - ${GET_SOURCE_FILES_SOURCES} - ${GET_SOURCE_FILES_TEMPLATES}) + if(${ARGC} EQUAL 2) + set(DIR "${ARGV1}") + else() + set(DIR ".") + endif() + + # Get all files in the directory + file(GLOB GET_SOURCE_FILES_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${DIR}/*.h) + file(GLOB GET_SOURCE_FILES_TEMPLATES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${DIR}/*.tpp) + file(GLOB GET_SOURCE_FILES_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${DIR}/*.cpp) + + set(${SOURCE_FILES} ${GET_SOURCE_FILES_HEADERS} ${GET_SOURCE_FILES_TEMPLATES} ${GET_SOURCE_FILES_SOURCES}) + + # Adapt DIR var to backslash syntax of SOURCE_GROUP cmd + if(${ARGC} EQUAL 2) + string(REPLACE "/" "\\\\" DIR ${DIR}) + set(DIR "\\${DIR}") + else() + set(DIR "") + endif() + + GET_CURRENT_SOURCE_SUBDIRECTORY(DIRECTORY) + source_group("${DIRECTORY}${DIR}" FILES + ${GET_SOURCE_FILES_HEADERS} + ${GET_SOURCE_FILES_SOURCES} + ${GET_SOURCE_FILES_TEMPLATES}) endmacro() # Appends a list of source files (*.h and *.cpp) to SOURCE_FILES and creates a Visual # Studio folder. A (relative) subdirectory can be passed as second parameter (optional). macro(APPEND_SOURCE_FILES SOURCE_FILES) - if(${ARGC} EQUAL 2) - set(DIR "${ARGV1}") - else() - set(DIR ".") - endif() - - GET_SOURCE_FILES(TMP_SOURCES "${DIR}") - set(${SOURCE_FILES} ${${SOURCE_FILES}} ${TMP_SOURCES}) + if(${ARGC} EQUAL 2) + set(DIR "${ARGV1}") + else() + set(DIR ".") + endif() + + GET_SOURCE_FILES(TMP_SOURCES "${DIR}") + set(${SOURCE_FILES} ${${SOURCE_FILES}} ${TMP_SOURCES}) endmacro() # Creates one ctest for each googletest found in source files passed as arguments # number two onwards. Argument one specifies the testrunner executable. macro(ADD_GOOGLE_TESTS executable) - foreach(source ${ARGN}) - file(READ "${source}" contents) - string(REGEX MATCHALL "TEST_?F?\\(([A-Za-z_0-9 ,]+)\\)" found_tests ${contents}) - foreach(hit ${found_tests}) - string(REGEX REPLACE ".*\\(([A-Za-z_0-9]+)[, ]*([A-Za-z_0-9]+)\\).*" "\\1.\\2" test_name ${hit}) - add_test(${test_name} ${executable} --gtest_output=xml --gtest_filter=${test_name} ${MI3CTestingDir}) - endforeach() - endforeach() + foreach(source ${ARGN}) + file(READ "${source}" contents) + string(REGEX MATCHALL "TEST_?F?\\(([A-Za-z_0-9 ,]+)\\)" found_tests ${contents}) + foreach(hit ${found_tests}) + string(REGEX REPLACE ".*\\(([A-Za-z_0-9]+)[, ]*([A-Za-z_0-9]+)\\).*" "\\1.\\2" test_name ${hit}) + add_test(${test_name} ${executable} --gtest_output=xml --gtest_filter=${test_name} ${MI3CTestingDir}) + endforeach() + endforeach() endmacro() diff --git a/scripts/cmake/InstallThirdPartyLibs.cmake b/scripts/cmake/InstallThirdPartyLibs.cmake index 6109271c0a4cd045d6ceeb0d0a88644101572da7..69653d5f15c3fbea8b82863ee5b99eb75b81c39c 100644 --- a/scripts/cmake/InstallThirdPartyLibs.cmake +++ b/scripts/cmake/InstallThirdPartyLibs.cmake @@ -24,102 +24,102 @@ # Argument checking if(NOT INSTALL_PREFIX OR NOT GENERATOR) - message(FATAL_ERROR "You need to specify an INSTALL_PREFIX and a GENERATOR: cmake -DINSTALL_PREFIX=C:/libs -DGENERATOR=\"Visual Studio 11 Win64\" -P ${CMAKE_CURRENT_LIST_DIR}/InstallThirdPartyLibs.cmake") + message(FATAL_ERROR "You need to specify an INSTALL_PREFIX and a GENERATOR: cmake -DINSTALL_PREFIX=C:/libs -DGENERATOR=\"Visual Studio 11 Win64\" -P ${CMAKE_CURRENT_LIST_DIR}/InstallThirdPartyLibs.cmake") endif() file(TO_CMAKE_PATH ${INSTALL_PREFIX} INSTALL_PREFIX) file(MAKE_DIRECTORY ${INSTALL_PREFIX}) if(NOT IS_DIRECTORY ${INSTALL_PREFIX}) - message(FATAL_ERROR "Directory ${INSTALL_PREFIX} is not writable!") + message(FATAL_ERROR "Directory ${INSTALL_PREFIX} is not writable!") endif() if(NOT ${GENERATOR} STREQUAL "Visual Studio 11" AND NOT ${GENERATOR} STREQUAL "Visual Studio 11 Win64" AND NOT ${GENERATOR} STREQUAL "Visual Studio 12" AND NOT ${GENERATOR} STREQUAL "Visual Studio 12 Win64" AND NOT ${GENERATOR} STREQUAL "Unix Makefiles") - message(FATAL_ERROR "Make sure to specify a supported GENERATOR!") + message(FATAL_ERROR "Make sure to specify a supported GENERATOR!") endif() # CMake setup set(CMAKE_PREFIX_PATH ${INSTALL_PREFIX}) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} - "${CMAKE_CURRENT_LIST_DIR}/cmake" - "${CMAKE_CURRENT_LIST_DIR}") + "${CMAKE_CURRENT_LIST_DIR}/cmake" + "${CMAKE_CURRENT_LIST_DIR}") include(ThirdPartyLibVersions) include(ProcessorCount) ProcessorCount(NUM_PROCESSORS) set(MAKE_PARALLEL_ARGS "") if(NOT WIN32 AND NOT NUM_PROCESSORS EQUAL 0) - set(MAKE_PARALLEL_ARGS "--" "-j${NUM_PROCESSORS}") + set(MAKE_PARALLEL_ARGS "--" "-j${NUM_PROCESSORS}") endif() set(VISUAL_STUDIO_PARALLEL "") if(WIN32) - set(VISUAL_STUDIO_PARALLEL "-DCMAKE_CXX_FLAGS=\"/MP\"") + set(VISUAL_STUDIO_PARALLEL "-DCMAKE_CXX_FLAGS=\"/MP\"") endif() # Eigen file(DOWNLOAD ${OGS_EIGEN_URL} tmp/eigen.tar.gz - SHOW_PROGRESS EXPECTED_MD5 ${OGS_EIGEN_MD5}) + SHOW_PROGRESS EXPECTED_MD5 ${OGS_EIGEN_MD5}) execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf eigen.tar.gz - WORKING_DIRECTORY tmp) + WORKING_DIRECTORY tmp) file(GLOB EIGEN_SOURCE_DIR tmp/eigen-*) file(MAKE_DIRECTORY tmp/build-eigen) execute_process(COMMAND ${CMAKE_COMMAND} ${EIGEN_SOURCE_DIR} -G "${GENERATOR}" -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} - WORKING_DIRECTORY tmp/build-eigen) + WORKING_DIRECTORY tmp/build-eigen) execute_process(COMMAND ${CMAKE_COMMAND} --build . --config Release --target install - WORKING_DIRECTORY tmp/build-eigen) + WORKING_DIRECTORY tmp/build-eigen) # VTK file(DOWNLOAD ${OGS_VTK_URL} tmp/vtk.tar.gz - SHOW_PROGRESS EXPECTED_MD5 ${OGS_VTK_MD5}) + SHOW_PROGRESS EXPECTED_MD5 ${OGS_VTK_MD5}) execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf vtk.tar.gz - WORKING_DIRECTORY tmp) + WORKING_DIRECTORY tmp) file(GLOB VTK_SOURCE_DIR tmp/VTK-*) file(MAKE_DIRECTORY tmp/build-vtk) execute_process(COMMAND ${CMAKE_COMMAND} ${VTK_SOURCE_DIR} -G "${GENERATOR}" - -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} -DBUILD_TESTING=OFF -DModule_vtkGUISupportQtOpenGL=ON - -DBUILD_SHARED_LIBS=OFF -DCMAKE_DEBUG_POSTFIX=d ${VISUAL_STUDIO_PARALLEL} - WORKING_DIRECTORY tmp/build-vtk) + -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} -DBUILD_TESTING=OFF -DModule_vtkGUISupportQtOpenGL=ON + -DBUILD_SHARED_LIBS=OFF -DCMAKE_DEBUG_POSTFIX=d ${VISUAL_STUDIO_PARALLEL} + WORKING_DIRECTORY tmp/build-vtk) execute_process(COMMAND ${CMAKE_COMMAND} --build . --config Release --target install ${MAKE_PARALLEL_ARGS} - WORKING_DIRECTORY tmp/build-vtk) + WORKING_DIRECTORY tmp/build-vtk) if(WIN32) - execute_process(COMMAND ${CMAKE_COMMAND} --build . --config Debug --target install - WORKING_DIRECTORY tmp/build-vtk) + execute_process(COMMAND ${CMAKE_COMMAND} --build . --config Debug --target install + WORKING_DIRECTORY tmp/build-vtk) endif() # GeoTiff file(DOWNLOAD ${OGS_TIFF_URL} tmp/tiff.zip - SHOW_PROGRESS EXPECTED_MD5 ${OGS_TIFF_MD5}) + SHOW_PROGRESS EXPECTED_MD5 ${OGS_TIFF_MD5}) execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf tiff.zip - WORKING_DIRECTORY tmp) + WORKING_DIRECTORY tmp) file(GLOB TIFF_SOURCE_DIR tmp/tiff-*) file(MAKE_DIRECTORY tmp/build-tiff) execute_process(COMMAND ${CMAKE_COMMAND} ${TIFF_SOURCE_DIR} -G "${GENERATOR}" - -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} ${VISUAL_STUDIO_PARALLEL} - WORKING_DIRECTORY tmp/build-tiff) + -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} ${VISUAL_STUDIO_PARALLEL} + WORKING_DIRECTORY tmp/build-tiff) execute_process(COMMAND ${CMAKE_COMMAND} --build . --config Release --target install ${MAKE_PARALLEL_ARGS} - WORKING_DIRECTORY tmp/build-tiff) + WORKING_DIRECTORY tmp/build-tiff) file(DOWNLOAD ${OGS_GEOTIFF_URL} tmp/geotiff.zip - SHOW_PROGRESS EXPECTED_MD5 ${OGS_GEOTIFF_MD5}) + SHOW_PROGRESS EXPECTED_MD5 ${OGS_GEOTIFF_MD5}) execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf geotiff.zip - WORKING_DIRECTORY tmp) + WORKING_DIRECTORY tmp) file(GLOB GEOTIFF_SOURCE_DIR tmp/geotiff-*) file(MAKE_DIRECTORY tmp/build-geotiff) execute_process(COMMAND ${CMAKE_COMMAND} ${GEOTIFF_SOURCE_DIR} -G "${GENERATOR}" - -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} -DWITH_PROJ4=OFF ${VISUAL_STUDIO_PARALLEL} - WORKING_DIRECTORY tmp/build-geotiff) + -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} -DWITH_PROJ4=OFF ${VISUAL_STUDIO_PARALLEL} + WORKING_DIRECTORY tmp/build-geotiff) execute_process(COMMAND ${CMAKE_COMMAND} --build . --config Release --target install ${MAKE_PARALLEL_ARGS} - WORKING_DIRECTORY tmp/build-geotiff) + WORKING_DIRECTORY tmp/build-geotiff) # Cleanup file(REMOVE_RECURSE tmp) message(STATUS "Finished!") if(WIN32) - file(TO_NATIVE_PATH ${INSTALL_PREFIX} INSTALL_PREFIX) - message(STATUS "Now make sure to create an environment variable CMAKE_LIBRARY_SEARCH_PATH which points to ${INSTALL_PREFIX}!") - message(STATUS "Make also sure to append %CMAKE_LIBRARY_SEARCH_PATH%\\bin to your PATH environment variable!") + file(TO_NATIVE_PATH ${INSTALL_PREFIX} INSTALL_PREFIX) + message(STATUS "Now make sure to create an environment variable CMAKE_LIBRARY_SEARCH_PATH which points to ${INSTALL_PREFIX}!") + message(STATUS "Make also sure to append %CMAKE_LIBRARY_SEARCH_PATH%\\bin to your PATH environment variable!") endif() diff --git a/scripts/cmake/MSVCPaths.cmake b/scripts/cmake/MSVCPaths.cmake index 87c2f7d396dea7ac9d9f04d1508c1f0f95a2c7e1..efc6911a518a0b122f8747c21dc0444f943723be 100644 --- a/scripts/cmake/MSVCPaths.cmake +++ b/scripts/cmake/MSVCPaths.cmake @@ -7,18 +7,18 @@ # PATHS MSVC_INSTALL_PATHS PATH_SUFFIXES VC/bin) if(MSVC) - if(MSVC_VERSION EQUAL 1700) - set(MSVC_NUMBER 11.0) - elseif(MSVC_VERSION EQUAL 1800) - set(MSVC_NUMBER 12.0) - endif() - get_filename_component(VS_DIR "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\${MSVC_NUMBER}\\Setup\\VS;ProductDir]" REALPATH) - get_filename_component(VS_EXPRESS_DIR "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\${MSVC_NUMBER}\\Setup\\VS;ProductDir]" REALPATH) + if(MSVC_VERSION EQUAL 1700) + set(MSVC_NUMBER 11.0) + elseif(MSVC_VERSION EQUAL 1800) + set(MSVC_NUMBER 12.0) + endif() + get_filename_component(VS_DIR "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\${MSVC_NUMBER}\\Setup\\VS;ProductDir]" REALPATH) + get_filename_component(VS_EXPRESS_DIR "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\${MSVC_NUMBER}\\Setup\\VS;ProductDir]" REALPATH) - set(X86_TMP "ProgramFiles(x86)") - set(MSVC_INSTALL_PATHS - ${VS_DIR} ${VS_EXPRESS_DIR} - "$ENV{ProgramFiles}/Microsoft\ Visual\ Studio\ ${MSVC_NUMBER}" - "$ENV{${X86_TMP}}/Microsoft\ Visual\ Studio\ ${MSVC_NUMBER}" - CACHE STRING "" FORCE) + set(X86_TMP "ProgramFiles(x86)") + set(MSVC_INSTALL_PATHS + ${VS_DIR} ${VS_EXPRESS_DIR} + "$ENV{ProgramFiles}/Microsoft\ Visual\ Studio\ ${MSVC_NUMBER}" + "$ENV{${X86_TMP}}/Microsoft\ Visual\ Studio\ ${MSVC_NUMBER}" + CACHE STRING "" FORCE) endif() diff --git a/scripts/cmake/MarkVariablesAdvanced.cmake b/scripts/cmake/MarkVariablesAdvanced.cmake index 51d40ec5769dc1f7fd6dac284c8738dffb3c2eaf..fe322132c247b253319349113cdc42eeeec47bae 100644 --- a/scripts/cmake/MarkVariablesAdvanced.cmake +++ b/scripts/cmake/MarkVariablesAdvanced.cmake @@ -1,36 +1,36 @@ mark_as_advanced( - BASH_TOOL_PATH - Boost_FOUND - Boost_INCLUDE_DIRS - Boost_LIBRARIES - VTK_LIBRARIES - CMAKE_INCLUDE_SYSTEM_FLAG_CXX - CMAKE_OSX_ARCHITECTURES - CMAKE_OSX_DEPLOYMENT_TARGET - CMAKE_OSX_SYSROOT - CPPCHECK_ROOT_DIR - CURL_TOOL_PATH - DIFF_TOOL_PATH - EIGEN3_FOUND - EIGEN_NO_DEBUG - GIT_TOOL_PATH - GPROF_PATH - GREP_TOOL_PATH - HOSTNAME - libgeotiff_INCLUDE_DIR - libgeotiff_LIBRARY - METIS_INCLUDE_DIR - METIS_LIBRARY - MPIRUN_TOOL_PATH - NUM_PROCESSORS - NUMDIFF_TOOL_PATH - ParaView_DIR - ProcessorCount_cmd_sysctl - REALPATH_TOOL_PATH - S3CMD_TOOL_PATH - VALGRIND_TOOL_PATH - VTK_DIR - VTKIO_LIB_FOUND - xtiff_INCLUDE_DIR - ZIP_TOOL_PATH + BASH_TOOL_PATH + Boost_FOUND + Boost_INCLUDE_DIRS + Boost_LIBRARIES + VTK_LIBRARIES + CMAKE_INCLUDE_SYSTEM_FLAG_CXX + CMAKE_OSX_ARCHITECTURES + CMAKE_OSX_DEPLOYMENT_TARGET + CMAKE_OSX_SYSROOT + CPPCHECK_ROOT_DIR + CURL_TOOL_PATH + DIFF_TOOL_PATH + EIGEN3_FOUND + EIGEN_NO_DEBUG + GIT_TOOL_PATH + GPROF_PATH + GREP_TOOL_PATH + HOSTNAME + libgeotiff_INCLUDE_DIR + libgeotiff_LIBRARY + METIS_INCLUDE_DIR + METIS_LIBRARY + MPIRUN_TOOL_PATH + NUM_PROCESSORS + NUMDIFF_TOOL_PATH + ParaView_DIR + ProcessorCount_cmd_sysctl + REALPATH_TOOL_PATH + S3CMD_TOOL_PATH + VALGRIND_TOOL_PATH + VTK_DIR + VTKIO_LIB_FOUND + xtiff_INCLUDE_DIR + ZIP_TOOL_PATH ) diff --git a/scripts/cmake/OGSEnabledElements.cmake b/scripts/cmake/OGSEnabledElements.cmake index c805f16b38ba86562602b9142073b88ca244a181..9a6a81b99a7375631fd2d9e491f6f9ac2f7acab8 100644 --- a/scripts/cmake/OGSEnabledElements.cmake +++ b/scripts/cmake/OGSEnabledElements.cmake @@ -11,14 +11,14 @@ add_definitions(-DOGS_MAX_ELEMENT_ORDER=${OGS_MAX_ELEMENT_ORDER}) if(OGS_ENABLE_ELEMENT_SIMPLEX) - add_definitions(-DOGS_ENABLE_ELEMENT_SIMPLEX) + add_definitions(-DOGS_ENABLE_ELEMENT_SIMPLEX) endif() if(OGS_ENABLE_ELEMENT_CUBOID) - add_definitions(-DOGS_ENABLE_ELEMENT_CUBOID) + add_definitions(-DOGS_ENABLE_ELEMENT_CUBOID) endif() if(OGS_ENABLE_ELEMENT_PRISM) - add_definitions(-DOGS_ENABLE_ELEMENT_PRISM) + add_definitions(-DOGS_ENABLE_ELEMENT_PRISM) endif() if(OGS_ENABLE_ELEMENT_PYRAMID) - add_definitions(-DOGS_ENABLE_ELEMENT_PYRAMID) + add_definitions(-DOGS_ENABLE_ELEMENT_PYRAMID) endif() diff --git a/scripts/cmake/ProjectSetup.cmake b/scripts/cmake/ProjectSetup.cmake index 7f522027b5c2ba11b9521df4aae31d55bf32113f..1fe5b6f3490bc62ea5a504f2ed8e1133cee7b974 100644 --- a/scripts/cmake/ProjectSetup.cmake +++ b/scripts/cmake/ProjectSetup.cmake @@ -4,17 +4,17 @@ set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) # Logging level if(OGS_DISABLE_LOGGING) - set(OGS_LOG_LEVEL LOGOG_LEVEL_NONE) + set(OGS_LOG_LEVEL LOGOG_LEVEL_NONE) endif() if(NOT DEFINED OGS_LOG_LEVEL) - if(CMAKE_BUILD_TYPE STREQUAL "Debug") - add_definitions(-DLOGOG_LEVEL=LOGOG_LEVEL_DEBUG) - else() - add_definitions(-DLOGOG_LEVEL=LOGOG_LEVEL_INFO) - endif() # CMAKE_BUILD_TYPE = Debug + if(CMAKE_BUILD_TYPE STREQUAL "Debug") + add_definitions(-DLOGOG_LEVEL=LOGOG_LEVEL_DEBUG) + else() + add_definitions(-DLOGOG_LEVEL=LOGOG_LEVEL_INFO) + endif() # CMAKE_BUILD_TYPE = Debug else() - add_definitions(-DLOGOG_LEVEL=${OGS_LOG_LEVEL}) + add_definitions(-DLOGOG_LEVEL=${OGS_LOG_LEVEL}) endif() # NOT DEFINED OGS_LOG_LEVEL # Enable Visual Studio project folder grouping @@ -27,26 +27,26 @@ GET_GIT_HEAD_REVISION(GIT_REFSPEC GIT_SHA1) string(SUBSTRING ${GIT_SHA1} 0 8 GIT_SHA1_SHORT) if($ENV{CI}) - set(OGS_VERSION 6.6.6) # Dummy version for CI-environment (Travis) or subproject + set(OGS_VERSION 6.6.6) # Dummy version for CI-environment (Travis) or subproject elseif(IS_SUBPROJECT) - set(OGS_VERSION x.x.x) + set(OGS_VERSION x.x.x) else() - GIT_GET_TAG(GIT_DESCRIBE) - if(GIT_DESCRIBE) - string(REGEX MATCH ^[0-9|\\.]+ GIT_TAG ${GIT_DESCRIBE}) - set(OGS_VERSION ${GIT_TAG}) + GIT_GET_TAG(GIT_DESCRIBE) + if(GIT_DESCRIBE) + string(REGEX MATCH ^[0-9|\\.]+ GIT_TAG ${GIT_DESCRIBE}) + set(OGS_VERSION ${GIT_TAG}) - if(GIT_DESCRIBE MATCHES ".*-.*-.*") - # Commit is not a tag - set(OGS_IS_RELEASE FALSE) - string(REGEX MATCH "-([0-9]+)-" GIT_COMMITS_AFTER_TAG ${GIT_DESCRIBE}) - message(STATUS "OGS version: ${GIT_DESCRIBE}") - else() - set(OGS_VERSION_STATUS "") - set(OGS_IS_RELEASE TRUE) - message(STATUS "OGS version: ${OGS_VERSION}") - endif() - else() - message(WARNING "Git repository contains no tags! Please run: git fetch --tags") - endif() + if(GIT_DESCRIBE MATCHES ".*-.*-.*") + # Commit is not a tag + set(OGS_IS_RELEASE FALSE) + string(REGEX MATCH "-([0-9]+)-" GIT_COMMITS_AFTER_TAG ${GIT_DESCRIBE}) + message(STATUS "OGS version: ${GIT_DESCRIBE}") + else() + set(OGS_VERSION_STATUS "") + set(OGS_IS_RELEASE TRUE) + message(STATUS "OGS version: ${OGS_VERSION}") + endif() + else() + message(WARNING "Git repository contains no tags! Please run: git fetch --tags") + endif() endif() diff --git a/scripts/cmake/SubmoduleSetup.cmake b/scripts/cmake/SubmoduleSetup.cmake index 7f06db4c3791aecd299cd948a4619b1705645264..6a0c9d20625dfa6242c4bd98820dc5acb434e303 100644 --- a/scripts/cmake/SubmoduleSetup.cmake +++ b/scripts/cmake/SubmoduleSetup.cmake @@ -1,44 +1,44 @@ # This file initializes the required submodules set(OGS_ADDITIONAL_SUBMODULES_TO_CHECKOUT "" CACHE STRING - "User given submodules which should be checked out by CMake.") + "User given submodules which should be checked out by CMake.") if(NOT OGS_ADDITIONAL_SUBMODULES_TO_CHECKOUT) - set(OGS_ADDITIONAL_SUBMODULES_TO_CHECKOUT "") + set(OGS_ADDITIONAL_SUBMODULES_TO_CHECKOUT "") endif() set(REQUIRED_SUBMODULES - ThirdParty/autocheck - ThirdParty/cmake-modules - ThirdParty/vtkdiff - ThirdParty/tclap - ThirdParty/tetgen - ${OGS_ADDITIONAL_SUBMODULES_TO_CHECKOUT} + ThirdParty/autocheck + ThirdParty/cmake-modules + ThirdParty/vtkdiff + ThirdParty/tclap + ThirdParty/tetgen + ${OGS_ADDITIONAL_SUBMODULES_TO_CHECKOUT} ) if(OGS_BUILD_TESTS) - list(APPEND REQUIRED_SUBMODULES Tests/Data) + list(APPEND REQUIRED_SUBMODULES Tests/Data) endif() if(OGS_BUILD_GUI) - list(APPEND REQUIRED_SUBMODULES ThirdParty/vtkGUISupportQt) + list(APPEND REQUIRED_SUBMODULES ThirdParty/vtkGUISupportQt) endif() foreach(SUBMODULE ${REQUIRED_SUBMODULES}) - execute_process( - COMMAND ${GIT_TOOL_PATH} submodule status ${SUBMODULE} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - OUTPUT_VARIABLE SUBMODULE_STATE - ) - string(REGEX MATCH "^\\-" UNINITIALIZED ${SUBMODULE_STATE}) - string(REGEX MATCH "^\\+" MISMATCH ${SUBMODULE_STATE}) + execute_process( + COMMAND ${GIT_TOOL_PATH} submodule status ${SUBMODULE} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + OUTPUT_VARIABLE SUBMODULE_STATE + ) + string(REGEX MATCH "^\\-" UNINITIALIZED ${SUBMODULE_STATE}) + string(REGEX MATCH "^\\+" MISMATCH ${SUBMODULE_STATE}) - if(UNINITIALIZED) - message(STATUS "Initializing submodule ${SUBMODULE}") - execute_process( - COMMAND ${GIT_TOOL_PATH} submodule update --init ${SUBMODULE} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - ) - elseif(MISMATCH) - message(STATUS "Updating submodule ${SUBMODULE}") - execute_process( - COMMAND git submodule update ${SUBMODULE} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - ) - endif() + if(UNINITIALIZED) + message(STATUS "Initializing submodule ${SUBMODULE}") + execute_process( + COMMAND ${GIT_TOOL_PATH} submodule update --init ${SUBMODULE} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + ) + elseif(MISMATCH) + message(STATUS "Updating submodule ${SUBMODULE}") + execute_process( + COMMAND git submodule update ${SUBMODULE} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + ) + endif() endforeach() diff --git a/scripts/cmake/VtkModules.cmake b/scripts/cmake/VtkModules.cmake index 47b7b5df2c80a4e7849a12da4739e51f0c92207d..394f941e0c068af2530f864fb86cddb6989c63f8 100644 --- a/scripts/cmake/VtkModules.cmake +++ b/scripts/cmake/VtkModules.cmake @@ -1,30 +1,30 @@ # CLI modules set(VTK_MODULES - vtkIOXML - CACHE INTERNAL "Required VTK / ParaView modules" + vtkIOXML + CACHE INTERNAL "Required VTK / ParaView modules" ) if(OGS_USE_MPI) - set(VTK_MODULES ${VTK_MODULES} vtkIOParallelXML) + set(VTK_MODULES ${VTK_MODULES} vtkIOParallelXML) endif() if(OGS_BUILD_GUI) - set(VTK_MODULES ${VTK_MODULES} - vtkRenderingCore - vtknetcdf - vtkIOLegacy - vtkIOImage - vtkGUISupportQt - vtkRenderingAnnotation - vtkFiltersExtraction - vtkFiltersGeometry - vtkFiltersTexture - vtkFiltersModeling - vtkFiltersSources - vtkImagingCore - vtkInteractionWidgets - vtkInteractionStyle - vtkIOExport - vtkRenderingFreeType - ) + set(VTK_MODULES ${VTK_MODULES} + vtkRenderingCore + vtknetcdf + vtkIOLegacy + vtkIOImage + vtkGUISupportQt + vtkRenderingAnnotation + vtkFiltersExtraction + vtkFiltersGeometry + vtkFiltersTexture + vtkFiltersModeling + vtkFiltersSources + vtkImagingCore + vtkInteractionWidgets + vtkInteractionStyle + vtkIOExport + vtkRenderingFreeType + ) endif() diff --git a/scripts/cmake/cmake/CleanDirectoryList.cmake b/scripts/cmake/cmake/CleanDirectoryList.cmake index 58b8963f9ee3ae27493c8bda68909692b59f4994..b5edd87c9604481b39be2e6e1a116ef8e900a987 100644 --- a/scripts/cmake/cmake/CleanDirectoryList.cmake +++ b/scripts/cmake/cmake/CleanDirectoryList.cmake @@ -15,34 +15,34 @@ # http://www.boost.org/LICENSE_1_0.txt) if(__clean_directory_list) - return() + return() endif() set(__clean_directory_list YES) function(clean_directory_list _var) - # combine variable's current value with additional list items - set(_in ${${_var}} ${ARGN}) + # combine variable's current value with additional list items + set(_in ${${_var}} ${ARGN}) - if(_in) - # Initial list cleaning - list(REMOVE_DUPLICATES _in) + if(_in) + # Initial list cleaning + list(REMOVE_DUPLICATES _in) - # Grab the absolute path of each actual directory - set(_out) - foreach(_dir ${_in}) - if(IS_DIRECTORY "${_dir}") - get_filename_component(_dir "${_dir}" ABSOLUTE) - file(TO_CMAKE_PATH "${_dir}" _dir) - list(APPEND _out "${_dir}") - endif() - endforeach() + # Grab the absolute path of each actual directory + set(_out) + foreach(_dir ${_in}) + if(IS_DIRECTORY "${_dir}") + get_filename_component(_dir "${_dir}" ABSOLUTE) + file(TO_CMAKE_PATH "${_dir}" _dir) + list(APPEND _out "${_dir}") + endif() + endforeach() - if(_out) - # Clean up the output list now - list(REMOVE_DUPLICATES _out) - endif() + if(_out) + # Clean up the output list now + list(REMOVE_DUPLICATES _out) + endif() - # return _out - set(${_var} "${_out}" PARENT_SCOPE) - endif() + # return _out + set(${_var} "${_out}" PARENT_SCOPE) + endif() endfunction() diff --git a/scripts/cmake/cmake/CodeCoverage.cmake b/scripts/cmake/cmake/CodeCoverage.cmake index 46468f9c8de7f4696ea1366c1849b452fc1fac5a..01c03eea485ed3661f89911cec7c4612fa98b728 100644 --- a/scripts/cmake/cmake/CodeCoverage.cmake +++ b/scripts/cmake/cmake/CodeCoverage.cmake @@ -58,16 +58,16 @@ find_program( GCOVR_PATH gcovr PATHS ${CMAKE_SOURCE_DIR}/scripts/test) find_program( SIMPLE_PYTHON_EXECUTABLE python ) if(NOT GCOV_PATH) - message(FATAL_ERROR "gcov not found! Aborting...") + message(FATAL_ERROR "gcov not found! Aborting...") endif() # NOT GCOV_PATH if(NOT (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" OR - ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")) - message(FATAL_ERROR "Compiler is not gcc or clang! Aborting...") + ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")) + message(FATAL_ERROR "Compiler is not gcc or clang! Aborting...") endif() if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug") - message(WARNING "Code coverage results with an optimised (non-Debug) build may be misleading") + message(WARNING "Code coverage results with an optimised (non-Debug) build may be misleading") endif() # NOT CMAKE_BUILD_TYPE STREQUAL "Debug" @@ -75,9 +75,9 @@ endif() # NOT CMAKE_BUILD_TYPE STREQUAL "Debug" add_definitions(-fprofile-arcs -ftest-coverage) if(CMAKE_COMPILER_IS_GNUCXX) - link_libraries(gcov) + link_libraries(gcov) else() - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage") endif() # Defines a target for running and collection code coverage information @@ -86,50 +86,50 @@ endif() # the coverage generation will not complete. # # SETUP_TARGET_FOR_COVERAGE( -# NAME testrunner_coverage # New target name -# EXECUTABLE testrunner -j ${PROCESSOR_COUNT} # Executable in CMAKE_BINARY_DIR -# DEPENDENCIES testrunner # Dependencies to build first +# NAME testrunner_coverage # New target name +# EXECUTABLE testrunner -j ${PROCESSOR_COUNT} # Executable in CMAKE_BINARY_DIR +# DEPENDENCIES testrunner # Dependencies to build first # ) function(SETUP_TARGET_FOR_COVERAGE) - set(options NONE) - set(oneValueArgs NAME) - set(multiValueArgs EXECUTABLE EXECUTABLE_ARGS DEPENDENCIES) - cmake_parse_arguments(Coverage "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + set(options NONE) + set(oneValueArgs NAME) + set(multiValueArgs EXECUTABLE EXECUTABLE_ARGS DEPENDENCIES) + cmake_parse_arguments(Coverage "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - if(NOT LCOV_PATH) - message(FATAL_ERROR "lcov not found! Aborting...") - endif() # NOT LCOV_PATH + if(NOT LCOV_PATH) + message(FATAL_ERROR "lcov not found! Aborting...") + endif() # NOT LCOV_PATH - if(NOT GENHTML_PATH) - message(FATAL_ERROR "genhtml not found! Aborting...") - endif() # NOT GENHTML_PATH + if(NOT GENHTML_PATH) + message(FATAL_ERROR "genhtml not found! Aborting...") + endif() # NOT GENHTML_PATH - # Setup target - add_custom_target(${Coverage_NAME} + # Setup target + add_custom_target(${Coverage_NAME} - # Cleanup lcov - COMMAND ${LCOV_PATH} --directory . --zerocounters + # Cleanup lcov + COMMAND ${LCOV_PATH} --directory . --zerocounters - # Run tests - COMMAND ${Coverage_EXECUTABLE} + # Run tests + COMMAND ${Coverage_EXECUTABLE} - # Capturing lcov counters and generating report - COMMAND ${LCOV_PATH} --directory . --capture --output-file ${Coverage_NAME}.info - COMMAND ${LCOV_PATH} --remove ${Coverage_NAME}.info ${COVERAGE_EXCLUDES} --output-file ${Coverage_NAME}.info.cleaned - COMMAND ${GENHTML_PATH} -o ${Coverage_NAME} ${Coverage_NAME}.info.cleaned - COMMAND ${CMAKE_COMMAND} -E remove ${Coverage_NAME}.info ${Coverage_NAME}.info.cleaned + # Capturing lcov counters and generating report + COMMAND ${LCOV_PATH} --directory . --capture --output-file ${Coverage_NAME}.info + COMMAND ${LCOV_PATH} --remove ${Coverage_NAME}.info ${COVERAGE_EXCLUDES} --output-file ${Coverage_NAME}.info.cleaned + COMMAND ${GENHTML_PATH} -o ${Coverage_NAME} ${Coverage_NAME}.info.cleaned + COMMAND ${CMAKE_COMMAND} -E remove ${Coverage_NAME}.info ${Coverage_NAME}.info.cleaned - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - DEPENDS ${Coverage_DEPENDENCIES} - COMMENT "Resetting code coverage counters to zero.\nProcessing code coverage counters and generating report." - ) + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + DEPENDS ${Coverage_DEPENDENCIES} + COMMENT "Resetting code coverage counters to zero.\nProcessing code coverage counters and generating report." + ) - # Show info where to find the report - add_custom_command(TARGET ${Coverage_NAME} POST_BUILD - COMMAND ; - COMMENT "Open ./${Coverage_NAME}/index.html in your browser to view the coverage report." - ) + # Show info where to find the report + add_custom_command(TARGET ${Coverage_NAME} POST_BUILD + COMMAND ; + COMMENT "Open ./${Coverage_NAME}/index.html in your browser to view the coverage report." + ) endfunction() # SETUP_TARGET_FOR_COVERAGE @@ -140,48 +140,48 @@ endfunction() # SETUP_TARGET_FOR_COVERAGE # # SETUP_TARGET_FOR_COVERAGE_COBERTURA( -# NAME ctest_coverage # New target name -# EXECUTABLE ctest -j ${PROCESSOR_COUNT} # Executable in CMAKE_BINARY_DIR -# DEPENDENCIES executable_target # Dependencies to build first +# NAME ctest_coverage # New target name +# EXECUTABLE ctest -j ${PROCESSOR_COUNT} # Executable in CMAKE_BINARY_DIR +# DEPENDENCIES executable_target # Dependencies to build first # ) function(SETUP_TARGET_FOR_COVERAGE_COBERTURA) - set(options NONE) - set(oneValueArgs NAME) - set(multiValueArgs EXECUTABLE EXECUTABLE_ARGS DEPENDENCIES) - cmake_parse_arguments(Coverage "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - - if(NOT SIMPLE_PYTHON_EXECUTABLE) - message(FATAL_ERROR "python not found! Aborting...") - endif() # NOT SIMPLE_PYTHON_EXECUTABLE - - if(NOT GCOVR_PATH) - message(FATAL_ERROR "gcovr not found! Aborting...") - endif() # NOT GCOVR_PATH - - # Combine excludes to several -e arguments - set(COBERTURA_EXCLUDES "") - foreach(EXCLUDE ${COVERAGE_EXCLUDES}) - set(COBERTURA_EXCLUDES "-e ${EXCLUDE} ${COBERTURA_EXCLUDES}") - endforeach() - - add_custom_target(${Coverage_NAME} - - # Run tests - ${Coverage_EXECUTABLE} - - # Running gcovr - COMMAND ${GCOVR_PATH} -x -r ${CMAKE_SOURCE_DIR} ${COBERTURA_EXCLUDES} - -o ${Coverage_NAME}.xml - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - DEPENDS ${Coverage_DEPENDENCIES} - COMMENT "Running gcovr to produce Cobertura code coverage report." - ) - - # Show info where to find the report - add_custom_command(TARGET ${Coverage_NAME} POST_BUILD - COMMAND ; - COMMENT "Cobertura code coverage report saved in ${Coverage_NAME}.xml." - ) + set(options NONE) + set(oneValueArgs NAME) + set(multiValueArgs EXECUTABLE EXECUTABLE_ARGS DEPENDENCIES) + cmake_parse_arguments(Coverage "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + if(NOT SIMPLE_PYTHON_EXECUTABLE) + message(FATAL_ERROR "python not found! Aborting...") + endif() # NOT SIMPLE_PYTHON_EXECUTABLE + + if(NOT GCOVR_PATH) + message(FATAL_ERROR "gcovr not found! Aborting...") + endif() # NOT GCOVR_PATH + + # Combine excludes to several -e arguments + set(COBERTURA_EXCLUDES "") + foreach(EXCLUDE ${COVERAGE_EXCLUDES}) + set(COBERTURA_EXCLUDES "-e ${EXCLUDE} ${COBERTURA_EXCLUDES}") + endforeach() + + add_custom_target(${Coverage_NAME} + + # Run tests + ${Coverage_EXECUTABLE} + + # Running gcovr + COMMAND ${GCOVR_PATH} -x -r ${CMAKE_SOURCE_DIR} ${COBERTURA_EXCLUDES} + -o ${Coverage_NAME}.xml + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + DEPENDS ${Coverage_DEPENDENCIES} + COMMENT "Running gcovr to produce Cobertura code coverage report." + ) + + # Show info where to find the report + add_custom_command(TARGET ${Coverage_NAME} POST_BUILD + COMMAND ; + COMMENT "Cobertura code coverage report saved in ${Coverage_NAME}.xml." + ) endfunction() # SETUP_TARGET_FOR_COVERAGE_COBERTURA diff --git a/scripts/cmake/cmake/CppcheckTargets.cmake b/scripts/cmake/cmake/CppcheckTargets.cmake index 8553e08acaa72849012bc6b1e4d3e1a914c0fcf4..bef10ead5ac7c8e9d366785c949e723da5372b36 100644 --- a/scripts/cmake/cmake/CppcheckTargets.cmake +++ b/scripts/cmake/cmake/CppcheckTargets.cmake @@ -22,192 +22,192 @@ # http://www.boost.org/LICENSE_1_0.txt) if(__add_cppcheck) - return() + return() endif() set(__add_cppcheck YES) if(NOT CPPCHECK_FOUND) - find_package(cppcheck QUIET) + find_package(cppcheck QUIET) endif() if(CPPCHECK_FOUND) - if(NOT TARGET all_cppcheck) - add_custom_target(all_cppcheck) - set_target_properties(all_cppcheck PROPERTIES EXCLUDE_FROM_ALL TRUE) - endif() + if(NOT TARGET all_cppcheck) + add_custom_target(all_cppcheck) + set_target_properties(all_cppcheck PROPERTIES EXCLUDE_FROM_ALL TRUE) + endif() endif() function(add_cppcheck_sources _targetname) - if(CPPCHECK_FOUND) - set(_cppcheck_args) - set(_input ${ARGN}) - list(FIND _input UNUSED_FUNCTIONS _unused_func) - if("${_unused_func}" GREATER "-1") - list(APPEND _cppcheck_args ${CPPCHECK_UNUSEDFUNC_ARG}) - list(REMOVE_AT _input ${_unused_func}) - endif() - - list(FIND _input STYLE _style) - if("${_style}" GREATER "-1") - list(APPEND _cppcheck_args ${CPPCHECK_STYLE_ARG}) - list(REMOVE_AT _input ${_style}) - endif() - - list(FIND _input POSSIBLE_ERROR _poss_err) - if("${_poss_err}" GREATER "-1") - list(APPEND _cppcheck_args ${CPPCHECK_POSSIBLEERROR_ARG}) - list(REMOVE_AT _input ${_poss_err}) - endif() - - list(FIND _input FAIL_ON_WARNINGS _fail_on_warn) - if("${_fail_on_warn}" GREATER "-1") - list(APPEND - CPPCHECK_FAIL_REGULAR_EXPRESSION - ${CPPCHECK_WARN_REGULAR_EXPRESSION}) - list(REMOVE_AT _input ${_fail_on_warn}) - endif() - - set(_files) - foreach(_source ${_input}) - get_source_file_property(_cppcheck_loc "${_source}" LOCATION) - if(_cppcheck_loc) - # This file has a source file property, carry on. - get_source_file_property(_cppcheck_lang "${_source}" LANGUAGE) - if("${_cppcheck_lang}" MATCHES "CXX") - list(APPEND _files "${_cppcheck_loc}") - endif() - else() - # This file doesn't have source file properties - figure it out. - get_filename_component(_cppcheck_loc "${_source}" ABSOLUTE) - if(EXISTS "${_cppcheck_loc}") - list(APPEND _files "${_cppcheck_loc}") - else() - message(FATAL_ERROR - "Adding CPPCHECK for file target ${_targetname}: " - "File ${_source} does not exist or needs a corrected path location " - "since we think its absolute path is ${_cppcheck_loc}") - endif() - endif() - endforeach() - - if("1.${CMAKE_VERSION}" VERSION_LESS "1.2.8.0") - # Older than CMake 2.8.0 - add_test(${_targetname}_cppcheck_test - "${CPPCHECK_EXECUTABLE}" - ${CPPCHECK_TEMPLATE_ARG} - ${_cppcheck_args} - ${_files}) - else() - # CMake 2.8.0 and newer - add_test(NAME - ${_targetname}_cppcheck_test - COMMAND - "${CPPCHECK_EXECUTABLE}" - ${CPPCHECK_TEMPLATE_ARG} - ${_cppcheck_args} - ${_files}) - endif() - - set_tests_properties(${_targetname}_cppcheck_test - PROPERTIES - FAIL_REGULAR_EXPRESSION - "${CPPCHECK_FAIL_REGULAR_EXPRESSION}") - - add_custom_command(TARGET - all_cppcheck - PRE_BUILD - COMMAND - ${CPPCHECK_EXECUTABLE} - ${CPPCHECK_QUIET_ARG} - ${CPPCHECK_TEMPLATE_ARG} - ${_cppcheck_args} - ${_files} - WORKING_DIRECTORY - "${CMAKE_CURRENT_SOURCE_DIR}" - COMMENT - "${_targetname}_cppcheck: Running cppcheck on target ${_targetname}..." - VERBATIM) - endif() + if(CPPCHECK_FOUND) + set(_cppcheck_args) + set(_input ${ARGN}) + list(FIND _input UNUSED_FUNCTIONS _unused_func) + if("${_unused_func}" GREATER "-1") + list(APPEND _cppcheck_args ${CPPCHECK_UNUSEDFUNC_ARG}) + list(REMOVE_AT _input ${_unused_func}) + endif() + + list(FIND _input STYLE _style) + if("${_style}" GREATER "-1") + list(APPEND _cppcheck_args ${CPPCHECK_STYLE_ARG}) + list(REMOVE_AT _input ${_style}) + endif() + + list(FIND _input POSSIBLE_ERROR _poss_err) + if("${_poss_err}" GREATER "-1") + list(APPEND _cppcheck_args ${CPPCHECK_POSSIBLEERROR_ARG}) + list(REMOVE_AT _input ${_poss_err}) + endif() + + list(FIND _input FAIL_ON_WARNINGS _fail_on_warn) + if("${_fail_on_warn}" GREATER "-1") + list(APPEND + CPPCHECK_FAIL_REGULAR_EXPRESSION + ${CPPCHECK_WARN_REGULAR_EXPRESSION}) + list(REMOVE_AT _input ${_fail_on_warn}) + endif() + + set(_files) + foreach(_source ${_input}) + get_source_file_property(_cppcheck_loc "${_source}" LOCATION) + if(_cppcheck_loc) + # This file has a source file property, carry on. + get_source_file_property(_cppcheck_lang "${_source}" LANGUAGE) + if("${_cppcheck_lang}" MATCHES "CXX") + list(APPEND _files "${_cppcheck_loc}") + endif() + else() + # This file doesn't have source file properties - figure it out. + get_filename_component(_cppcheck_loc "${_source}" ABSOLUTE) + if(EXISTS "${_cppcheck_loc}") + list(APPEND _files "${_cppcheck_loc}") + else() + message(FATAL_ERROR + "Adding CPPCHECK for file target ${_targetname}: " + "File ${_source} does not exist or needs a corrected path location " + "since we think its absolute path is ${_cppcheck_loc}") + endif() + endif() + endforeach() + + if("1.${CMAKE_VERSION}" VERSION_LESS "1.2.8.0") + # Older than CMake 2.8.0 + add_test(${_targetname}_cppcheck_test + "${CPPCHECK_EXECUTABLE}" + ${CPPCHECK_TEMPLATE_ARG} + ${_cppcheck_args} + ${_files}) + else() + # CMake 2.8.0 and newer + add_test(NAME + ${_targetname}_cppcheck_test + COMMAND + "${CPPCHECK_EXECUTABLE}" + ${CPPCHECK_TEMPLATE_ARG} + ${_cppcheck_args} + ${_files}) + endif() + + set_tests_properties(${_targetname}_cppcheck_test + PROPERTIES + FAIL_REGULAR_EXPRESSION + "${CPPCHECK_FAIL_REGULAR_EXPRESSION}") + + add_custom_command(TARGET + all_cppcheck + PRE_BUILD + COMMAND + ${CPPCHECK_EXECUTABLE} + ${CPPCHECK_QUIET_ARG} + ${CPPCHECK_TEMPLATE_ARG} + ${_cppcheck_args} + ${_files} + WORKING_DIRECTORY + "${CMAKE_CURRENT_SOURCE_DIR}" + COMMENT + "${_targetname}_cppcheck: Running cppcheck on target ${_targetname}..." + VERBATIM) + endif() endfunction() function(add_cppcheck _name) - if(NOT TARGET ${_name}) - message(FATAL_ERROR - "add_cppcheck given a target name that does not exist: '${_name}' !") - endif() - if(CPPCHECK_FOUND) - set(_cppcheck_args) - - list(FIND ARGN UNUSED_FUNCTIONS _unused_func) - if("${_unused_func}" GREATER "-1") - list(APPEND _cppcheck_args ${CPPCHECK_UNUSEDFUNC_ARG}) - endif() - - list(FIND ARGN STYLE _style) - if("${_style}" GREATER "-1") - list(APPEND _cppcheck_args ${CPPCHECK_STYLE_ARG}) - endif() - - list(FIND ARGN POSSIBLE_ERROR _poss_err) - if("${_poss_err}" GREATER "-1") - list(APPEND _cppcheck_args ${CPPCHECK_POSSIBLEERROR_ARG}) - endif() - - list(FIND _input FAIL_ON_WARNINGS _fail_on_warn) - if("${_fail_on_warn}" GREATER "-1") - list(APPEND - CPPCHECK_FAIL_REGULAR_EXPRESSION - ${CPPCHECK_WARN_REGULAR_EXPRESSION}) - list(REMOVE_AT _input ${_unused_func}) - endif() - - get_target_property(_cppcheck_sources "${_name}" SOURCES) - set(_files) - foreach(_source ${_cppcheck_sources}) - get_source_file_property(_cppcheck_lang "${_source}" LANGUAGE) - get_source_file_property(_cppcheck_loc "${_source}" LOCATION) - if("${_cppcheck_lang}" MATCHES "CXX") - list(APPEND _files "${_cppcheck_loc}") - endif() - endforeach() - - if("1.${CMAKE_VERSION}" VERSION_LESS "1.2.8.0") - # Older than CMake 2.8.0 - add_test(${_name}_cppcheck_test - "${CPPCHECK_EXECUTABLE}" - ${CPPCHECK_TEMPLATE_ARG} - ${_cppcheck_args} - ${_files}) - else() - # CMake 2.8.0 and newer - add_test(NAME - ${_name}_cppcheck_test - COMMAND - "${CPPCHECK_EXECUTABLE}" - ${CPPCHECK_TEMPLATE_ARG} - ${_cppcheck_args} - ${_files}) - endif() - - set_tests_properties(${_name}_cppcheck_test - PROPERTIES - FAIL_REGULAR_EXPRESSION - "${CPPCHECK_FAIL_REGULAR_EXPRESSION}") - - add_custom_command(TARGET - all_cppcheck - PRE_BUILD - COMMAND - ${CPPCHECK_EXECUTABLE} - ${CPPCHECK_QUIET_ARG} - ${CPPCHECK_TEMPLATE_ARG} - ${_cppcheck_args} - ${_files} - WORKING_DIRECTORY - "${CMAKE_CURRENT_SOURCE_DIR}" - COMMENT - "${_name}_cppcheck: Running cppcheck on target ${_name}..." - VERBATIM) - endif() + if(NOT TARGET ${_name}) + message(FATAL_ERROR + "add_cppcheck given a target name that does not exist: '${_name}' !") + endif() + if(CPPCHECK_FOUND) + set(_cppcheck_args) + + list(FIND ARGN UNUSED_FUNCTIONS _unused_func) + if("${_unused_func}" GREATER "-1") + list(APPEND _cppcheck_args ${CPPCHECK_UNUSEDFUNC_ARG}) + endif() + + list(FIND ARGN STYLE _style) + if("${_style}" GREATER "-1") + list(APPEND _cppcheck_args ${CPPCHECK_STYLE_ARG}) + endif() + + list(FIND ARGN POSSIBLE_ERROR _poss_err) + if("${_poss_err}" GREATER "-1") + list(APPEND _cppcheck_args ${CPPCHECK_POSSIBLEERROR_ARG}) + endif() + + list(FIND _input FAIL_ON_WARNINGS _fail_on_warn) + if("${_fail_on_warn}" GREATER "-1") + list(APPEND + CPPCHECK_FAIL_REGULAR_EXPRESSION + ${CPPCHECK_WARN_REGULAR_EXPRESSION}) + list(REMOVE_AT _input ${_unused_func}) + endif() + + get_target_property(_cppcheck_sources "${_name}" SOURCES) + set(_files) + foreach(_source ${_cppcheck_sources}) + get_source_file_property(_cppcheck_lang "${_source}" LANGUAGE) + get_source_file_property(_cppcheck_loc "${_source}" LOCATION) + if("${_cppcheck_lang}" MATCHES "CXX") + list(APPEND _files "${_cppcheck_loc}") + endif() + endforeach() + + if("1.${CMAKE_VERSION}" VERSION_LESS "1.2.8.0") + # Older than CMake 2.8.0 + add_test(${_name}_cppcheck_test + "${CPPCHECK_EXECUTABLE}" + ${CPPCHECK_TEMPLATE_ARG} + ${_cppcheck_args} + ${_files}) + else() + # CMake 2.8.0 and newer + add_test(NAME + ${_name}_cppcheck_test + COMMAND + "${CPPCHECK_EXECUTABLE}" + ${CPPCHECK_TEMPLATE_ARG} + ${_cppcheck_args} + ${_files}) + endif() + + set_tests_properties(${_name}_cppcheck_test + PROPERTIES + FAIL_REGULAR_EXPRESSION + "${CPPCHECK_FAIL_REGULAR_EXPRESSION}") + + add_custom_command(TARGET + all_cppcheck + PRE_BUILD + COMMAND + ${CPPCHECK_EXECUTABLE} + ${CPPCHECK_QUIET_ARG} + ${CPPCHECK_TEMPLATE_ARG} + ${_cppcheck_args} + ${_files} + WORKING_DIRECTORY + "${CMAKE_CURRENT_SOURCE_DIR}" + COMMENT + "${_name}_cppcheck: Running cppcheck on target ${_name}..." + VERBATIM) + endif() endfunction() diff --git a/scripts/cmake/cmake/DisableCompilerFlag.cmake b/scripts/cmake/cmake/DisableCompilerFlag.cmake index 4b7da074da93d364311d55da69db59cc81a8283e..be9bde1aed1da55afc79bdcef75adf1e1c30b192 100644 --- a/scripts/cmake/cmake/DisableCompilerFlag.cmake +++ b/scripts/cmake/cmake/DisableCompilerFlag.cmake @@ -13,8 +13,8 @@ # endif () macro(DisableCompilerFlag CONFIGURATION FLAG) - if(CMAKE_CXX_FLAGS_${CONFIGURATION} MATCHES "${FLAG}") - string(REPLACE "${FLAG}" " " CMAKE_CXX_FLAGS_${CONFIGURATION} "${CMAKE_CXX_FLAGS_${CONFIGURATION}}") - # message(STATUS ${PROJECT_NAME} " CMAKE_CXX_FLAGS_${CONFIGURATION} removing ${FLAG}") - endif() + if(CMAKE_CXX_FLAGS_${CONFIGURATION} MATCHES "${FLAG}") + string(REPLACE "${FLAG}" " " CMAKE_CXX_FLAGS_${CONFIGURATION} "${CMAKE_CXX_FLAGS_${CONFIGURATION}}") + # message(STATUS ${PROJECT_NAME} " CMAKE_CXX_FLAGS_${CONFIGURATION} removing ${FLAG}") + endif() endmacro() \ No newline at end of file diff --git a/scripts/cmake/cmake/DoxygenTargets.cmake b/scripts/cmake/cmake/DoxygenTargets.cmake index ce98a917076b72f9924ebe250c9a447bf208c6b5..6a2eca1ec399887a7334efd21f88ab3cc12b9d86 100644 --- a/scripts/cmake/cmake/DoxygenTargets.cmake +++ b/scripts/cmake/cmake/DoxygenTargets.cmake @@ -26,7 +26,7 @@ # http://www.boost.org/LICENSE_1_0.txt) if(__add_doxygen) - return() + return() endif() set(__add_doxygen YES) @@ -35,11 +35,11 @@ set(__add_doxygen YES) get_filename_component(_doxygenmoddir ${CMAKE_CURRENT_LIST_FILE} PATH) if(APPLE) - list(APPEND CMAKE_PREFIX_PATH "/usr/texbin") + list(APPEND CMAKE_PREFIX_PATH "/usr/texbin") endif() if(NOT DOXYGEN_FOUND) - find_package(Doxygen QUIET) + find_package(Doxygen QUIET) endif() set(DOXYGEN_LATEX "NO") @@ -47,265 +47,265 @@ set(DOXYGEN_PDFLATEX "NO") set(DOXYGEN_DOT "NO") if(DOXYGEN_DOT_EXECUTABLE) - set(DOXYGEN_DOT "YES") + set(DOXYGEN_DOT "YES") endif() find_package(LATEX QUIET) if(LATEX_COMPILER AND MAKEINDEX_COMPILER) - set(DOXYGEN_LATEX "YES") + set(DOXYGEN_LATEX "YES") endif() if(PDFLATEX_COMPILER) - set(DOXYGEN_PDFLATEX "YES") + set(DOXYGEN_PDFLATEX "YES") endif() # An optional single-file install that supports cmake older than 2.8.0 # For internal use function(_dt_install_file target filename dest rename) - if(CMAKE_VER VERSION_LESS 2.8.0) - set(INSTALL_CODE " - if(EXISTS \"${filename}\") - message(STATUS \"Found: ${filename}\") - file(INSTALL - DESTINATION \"\${CMAKE_INSTALL_PREFIX}/${dest}\" - TYPE FILE - RENAME \"${rename}\" - FILES \"${filename}\") - else() - message(STATUS \"Skipping (build '${target}' to create): ${filename}\") - endif() - ") - if(NOT ARGN STREQUAL "") - set(INSTALL_COMPONENT "${ARGN}") - set(INSTALL_CODE " - if(NOT CMAKE_INSTALL_COMPONENT OR \"\${CMAKE_INSTALL_COMPONENT}\" STREQUAL \"${INSTALL_COMPONENT}\") - ${INSTALL_CODE} - endif() - ") - endif() - install(CODE "${INSTALL_CODE}") - else() - set(COMPONENT_ARGS) - if(NOT ARGN STREQUAL "") - set(COMPONENT_ARGS COMPONENT "${ARGN}") - endif() - install(FILES - "${filename}" - DESTINATION - "${dest}" - RENAME "${rename}" - ${COMPONENT_ARGS} - OPTIONAL) - endif() + if(CMAKE_VER VERSION_LESS 2.8.0) + set(INSTALL_CODE " + if(EXISTS \"${filename}\") + message(STATUS \"Found: ${filename}\") + file(INSTALL + DESTINATION \"\${CMAKE_INSTALL_PREFIX}/${dest}\" + TYPE FILE + RENAME \"${rename}\" + FILES \"${filename}\") + else() + message(STATUS \"Skipping (build '${target}' to create): ${filename}\") + endif() + ") + if(NOT ARGN STREQUAL "") + set(INSTALL_COMPONENT "${ARGN}") + set(INSTALL_CODE " + if(NOT CMAKE_INSTALL_COMPONENT OR \"\${CMAKE_INSTALL_COMPONENT}\" STREQUAL \"${INSTALL_COMPONENT}\") + ${INSTALL_CODE} + endif() + ") + endif() + install(CODE "${INSTALL_CODE}") + else() + set(COMPONENT_ARGS) + if(NOT ARGN STREQUAL "") + set(COMPONENT_ARGS COMPONENT "${ARGN}") + endif() + install(FILES + "${filename}" + DESTINATION + "${dest}" + RENAME "${rename}" + ${COMPONENT_ARGS} + OPTIONAL) + endif() endfunction() # An optional single-directory install that supports cmake older than 2.8.0 # For internal use function(_dt_install_dir target dir dest) - if(CMAKE_VER VERSION_LESS 2.8.0) - set(INSTALL_CODE " - if(EXISTS \"${dir}\") - message(STATUS \"Found: ${dir}\") - file(INSTALL - DESTINATION \"\${CMAKE_INSTALL_PREFIX}/${dest}\" - TYPE DIRECTORY - FILES \"${dir}\") - else() - message(STATUS \"Skipping (build '${target}' to create): ${dir}\") - endif() - ") - if(NOT ARGN STREQUAL "") - set(INSTALL_COMPONENT "${ARGN}") - set(INSTALL_CODE " - - if(NOT CMAKE_INSTALL_COMPONENT OR \"\${CMAKE_INSTALL_COMPONENT}\" STREQUAL \"${INSTALL_COMPONENT}\") - ${INSTALL_CODE} - endif() - ") - endif() - install(CODE "${INSTALL_CODE}") - else() - set(COMPONENT_ARGS) - if(NOT ARGN STREQUAL "") - set(COMPONENT_ARGS COMPONENT "${ARGN}") - endif() - install(DIRECTORY - "${dir}" - DESTINATION - "${dest}" - ${COMPONENT_ARGS} - OPTIONAL) - endif() + if(CMAKE_VER VERSION_LESS 2.8.0) + set(INSTALL_CODE " + if(EXISTS \"${dir}\") + message(STATUS \"Found: ${dir}\") + file(INSTALL + DESTINATION \"\${CMAKE_INSTALL_PREFIX}/${dest}\" + TYPE DIRECTORY + FILES \"${dir}\") + else() + message(STATUS \"Skipping (build '${target}' to create): ${dir}\") + endif() + ") + if(NOT ARGN STREQUAL "") + set(INSTALL_COMPONENT "${ARGN}") + set(INSTALL_CODE " + + if(NOT CMAKE_INSTALL_COMPONENT OR \"\${CMAKE_INSTALL_COMPONENT}\" STREQUAL \"${INSTALL_COMPONENT}\") + ${INSTALL_CODE} + endif() + ") + endif() + install(CODE "${INSTALL_CODE}") + else() + set(COMPONENT_ARGS) + if(NOT ARGN STREQUAL "") + set(COMPONENT_ARGS COMPONENT "${ARGN}") + endif() + install(DIRECTORY + "${dir}" + DESTINATION + "${dest}" + ${COMPONENT_ARGS} + OPTIONAL) + endif() endfunction() function(add_doxygen _doxyfile) - # parse arguments - set(WARNINGS YES) - set(_nowhere) - set(_curdest _nowhere) - set(_val_args - OUTPUT_DIRECTORY - DOC_TARGET - INSTALL_DESTINATION - INSTALL_COMPONENT - INSTALL_PDF_NAME - PROJECT_NUMBER) - set(_bool_args - NO_WARNINGS - NO_PDF) - foreach(_arg ${_val_args} ${_bool_args}) - set(${_arg}) - endforeach() - foreach(_element ${ARGN}) - list(FIND _val_args "${_element}" _val_arg_find) - list(FIND _bool_args "${_element}" _bool_arg_find) - if("${_val_arg_find}" GREATER "-1") - set(_curdest "${_element}") - elseif("${_bool_arg_find}" GREATER "-1") - set("${_element}" ON) - set(_curdest _nowhere) - else() - list(APPEND ${_curdest} "${_element}") - endif() - endforeach() - - if(_nowhere) - message(FATAL_ERROR "Syntax error in use of add_doxygen!") - endif() - - if(NO_WARNINGS) - set(WARNINGS NO) - endif() - - if(NOT DOC_TARGET) - set(DOC_TARGET doc) - endif() - - if(NOT OUTPUT_DIRECTORY) - set(OUTPUT_DIRECTORY "docs-generated") - endif() - - file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_DIRECTORY}") - - if(NOT INSTALL_PDF_NAME) - set(INSTALL_PDF_NAME "docs-generated.pdf") - endif() - - if(NOT PROJECT_NUMBER) - set(PROJECT_NUMBER "${CPACK_PACKAGE_VERSION}") - endif() - - if(DOXYGEN_FOUND) - if(NOT TARGET ${DOC_TARGET}) - - if(NOT IN_DASHBOARD_SCRIPT) - add_custom_target(${DOC_TARGET}) - set_target_properties(${DOC_TARGET} - PROPERTIES - EXCLUDE_FROM_ALL - TRUE) - set_target_properties(${DOC_TARGET} - PROPERTIES - EXCLUDE_FROM_DEFAULT_BUILD - TRUE) - else() - add_custom_target(${DOC_TARGET} ALL) - endif() - endif() - - if(NOT IS_ABSOLUTE "${OUTPUT_DIRECTORY}") - get_filename_component(OUTPUT_DIRECTORY - "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_DIRECTORY}" - ABSOLUTE) - endif() - - set_property(DIRECTORY - APPEND - PROPERTY - ADDITIONAL_MAKE_CLEAN_FILES - "${OUTPUT_DIRECTORY}/html" - "${OUTPUT_DIRECTORY}/latex") - - get_filename_component(_doxyfileabs "${_doxyfile}" ABSOLUTE) - get_filename_component(INCLUDE_FILE "${_doxyfileabs}" NAME) - get_filename_component(INCLUDE_PATH "${_doxyfileabs}" PATH) - - # Doesn't currently work on Windows, so don't bother - if(DOXYGEN_LATEX AND NOT NO_PDF AND NOT WIN32) - set(MAKE_PDF YES) - set(GENERATE_LATEX YES) - else() - set(MAKE_PDF NO) - set(GENERATE_LATEX NO) - endif() - - if(DOXYGEN_PDFLATEX AND MAKE_PDF) - set(USE_PDFLATEX YES) - else() - set(USE_PDFLATEX NO) - endif() - - if(DOXYGEN_DOT) - set(HAVE_DOT YES) - set(DOT_PATH ${DOXYGEN_DOT_PATH}) - else() - set(HAVE_DOT NO) - set(DOT_PATH) - endif() - - # See http://www.cmake.org/pipermail/cmake/2006-August/010786.html - # for info on this variable - if("${CMAKE_BUILD_TOOL}" MATCHES "(msdev|devenv)") - set(WARN_FORMAT "\"$file($line) : $text \"") - else() - set(WARN_FORMAT "\"$file:$line: $text \"") - endif() - - configure_file("${_doxygenmoddir}/DoxygenTargets.doxyfile.in" - "${CMAKE_CURRENT_BINARY_DIR}/${_doxyfile}.additional" - @ONLY) - - add_custom_command(TARGET - ${DOC_TARGET} - COMMAND - ${DOXYGEN_EXECUTABLE} - "${CMAKE_CURRENT_BINARY_DIR}/${_doxyfile}.additional" - WORKING_DIRECTORY - "${CMAKE_CURRENT_SOURCE_DIR}" - #MAIN_DEPENDENCY ${DOC_TARGET} - COMMENT - "Running Doxygen with configuration ${_doxyfile}..." - VERBATIM) - - if(MAKE_PDF) - add_custom_command(TARGET - ${DOC_TARGET} - POST_BUILD - COMMAND - ${CMAKE_MAKE_PROGRAM} - WORKING_DIRECTORY - "${OUTPUT_DIRECTORY}/latex" - COMMENT - "Generating PDF using PDFLaTeX..." - VERBATIM) - endif() - - if(INSTALL_DESTINATION) - if(INSTALL_COMPONENT) - _dt_install_dir("${DOC_TARGET}" "${OUTPUT_DIRECTORY}/html" "${INSTALL_DESTINATION}" "${INSTALL_COMPONENT}") - if(MAKE_PDF) - _dt_install_file("${DOC_TARGET}" "${OUTPUT_DIRECTORY}/latex/refman.pdf" "${INSTALL_DESTINATION}" "${INSTALL_PDF_NAME}" "${INSTALL_COMPONENT}") - endif() - - else() - _dt_install_dir("${DOC_TARGET}" "${OUTPUT_DIRECTORY}/html" "${INSTALL_DESTINATION}") - if(MAKE_PDF) - _dt_install_file("${DOC_TARGET}" "${OUTPUT_DIRECTORY}/latex/refman.pdf" "${INSTALL_DESTINATION}" "${INSTALL_PDF_NAME}") - endif() - endif() - endif() - - endif() + # parse arguments + set(WARNINGS YES) + set(_nowhere) + set(_curdest _nowhere) + set(_val_args + OUTPUT_DIRECTORY + DOC_TARGET + INSTALL_DESTINATION + INSTALL_COMPONENT + INSTALL_PDF_NAME + PROJECT_NUMBER) + set(_bool_args + NO_WARNINGS + NO_PDF) + foreach(_arg ${_val_args} ${_bool_args}) + set(${_arg}) + endforeach() + foreach(_element ${ARGN}) + list(FIND _val_args "${_element}" _val_arg_find) + list(FIND _bool_args "${_element}" _bool_arg_find) + if("${_val_arg_find}" GREATER "-1") + set(_curdest "${_element}") + elseif("${_bool_arg_find}" GREATER "-1") + set("${_element}" ON) + set(_curdest _nowhere) + else() + list(APPEND ${_curdest} "${_element}") + endif() + endforeach() + + if(_nowhere) + message(FATAL_ERROR "Syntax error in use of add_doxygen!") + endif() + + if(NO_WARNINGS) + set(WARNINGS NO) + endif() + + if(NOT DOC_TARGET) + set(DOC_TARGET doc) + endif() + + if(NOT OUTPUT_DIRECTORY) + set(OUTPUT_DIRECTORY "docs-generated") + endif() + + file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_DIRECTORY}") + + if(NOT INSTALL_PDF_NAME) + set(INSTALL_PDF_NAME "docs-generated.pdf") + endif() + + if(NOT PROJECT_NUMBER) + set(PROJECT_NUMBER "${CPACK_PACKAGE_VERSION}") + endif() + + if(DOXYGEN_FOUND) + if(NOT TARGET ${DOC_TARGET}) + + if(NOT IN_DASHBOARD_SCRIPT) + add_custom_target(${DOC_TARGET}) + set_target_properties(${DOC_TARGET} + PROPERTIES + EXCLUDE_FROM_ALL + TRUE) + set_target_properties(${DOC_TARGET} + PROPERTIES + EXCLUDE_FROM_DEFAULT_BUILD + TRUE) + else() + add_custom_target(${DOC_TARGET} ALL) + endif() + endif() + + if(NOT IS_ABSOLUTE "${OUTPUT_DIRECTORY}") + get_filename_component(OUTPUT_DIRECTORY + "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_DIRECTORY}" + ABSOLUTE) + endif() + + set_property(DIRECTORY + APPEND + PROPERTY + ADDITIONAL_MAKE_CLEAN_FILES + "${OUTPUT_DIRECTORY}/html" + "${OUTPUT_DIRECTORY}/latex") + + get_filename_component(_doxyfileabs "${_doxyfile}" ABSOLUTE) + get_filename_component(INCLUDE_FILE "${_doxyfileabs}" NAME) + get_filename_component(INCLUDE_PATH "${_doxyfileabs}" PATH) + + # Doesn't currently work on Windows, so don't bother + if(DOXYGEN_LATEX AND NOT NO_PDF AND NOT WIN32) + set(MAKE_PDF YES) + set(GENERATE_LATEX YES) + else() + set(MAKE_PDF NO) + set(GENERATE_LATEX NO) + endif() + + if(DOXYGEN_PDFLATEX AND MAKE_PDF) + set(USE_PDFLATEX YES) + else() + set(USE_PDFLATEX NO) + endif() + + if(DOXYGEN_DOT) + set(HAVE_DOT YES) + set(DOT_PATH ${DOXYGEN_DOT_PATH}) + else() + set(HAVE_DOT NO) + set(DOT_PATH) + endif() + + # See http://www.cmake.org/pipermail/cmake/2006-August/010786.html + # for info on this variable + if("${CMAKE_BUILD_TOOL}" MATCHES "(msdev|devenv)") + set(WARN_FORMAT "\"$file($line) : $text \"") + else() + set(WARN_FORMAT "\"$file:$line: $text \"") + endif() + + configure_file("${_doxygenmoddir}/DoxygenTargets.doxyfile.in" + "${CMAKE_CURRENT_BINARY_DIR}/${_doxyfile}.additional" + @ONLY) + + add_custom_command(TARGET + ${DOC_TARGET} + COMMAND + ${DOXYGEN_EXECUTABLE} + "${CMAKE_CURRENT_BINARY_DIR}/${_doxyfile}.additional" + WORKING_DIRECTORY + "${CMAKE_CURRENT_SOURCE_DIR}" + #MAIN_DEPENDENCY ${DOC_TARGET} + COMMENT + "Running Doxygen with configuration ${_doxyfile}..." + VERBATIM) + + if(MAKE_PDF) + add_custom_command(TARGET + ${DOC_TARGET} + POST_BUILD + COMMAND + ${CMAKE_MAKE_PROGRAM} + WORKING_DIRECTORY + "${OUTPUT_DIRECTORY}/latex" + COMMENT + "Generating PDF using PDFLaTeX..." + VERBATIM) + endif() + + if(INSTALL_DESTINATION) + if(INSTALL_COMPONENT) + _dt_install_dir("${DOC_TARGET}" "${OUTPUT_DIRECTORY}/html" "${INSTALL_DESTINATION}" "${INSTALL_COMPONENT}") + if(MAKE_PDF) + _dt_install_file("${DOC_TARGET}" "${OUTPUT_DIRECTORY}/latex/refman.pdf" "${INSTALL_DESTINATION}" "${INSTALL_PDF_NAME}" "${INSTALL_COMPONENT}") + endif() + + else() + _dt_install_dir("${DOC_TARGET}" "${OUTPUT_DIRECTORY}/html" "${INSTALL_DESTINATION}") + if(MAKE_PDF) + _dt_install_file("${DOC_TARGET}" "${OUTPUT_DIRECTORY}/latex/refman.pdf" "${INSTALL_DESTINATION}" "${INSTALL_PDF_NAME}") + endif() + endif() + endif() + + endif() endfunction() diff --git a/scripts/cmake/cmake/EnableExtraCompilerWarnings.cmake b/scripts/cmake/cmake/EnableExtraCompilerWarnings.cmake index 5b973524c2ce06ac8927fd7cea725326633bc5de..d0d436d164d0c15310d4a51d50ea37e1a064ae2b 100644 --- a/scripts/cmake/cmake/EnableExtraCompilerWarnings.cmake +++ b/scripts/cmake/cmake/EnableExtraCompilerWarnings.cmake @@ -16,63 +16,63 @@ # http://www.boost.org/LICENSE_1_0.txt) if(__enable_extra_compiler_warnings) - return() + return() endif() set(__enable_extra_compiler_warnings YES) macro(_enable_extra_compiler_warnings_flags) - set(_flags) - if(MSVC) - option(COMPILER_WARNINGS_EXTREME - "Use compiler warnings that are probably overkill." - off) - mark_as_advanced(COMPILER_WARNINGS_EXTREME) - set(_flags "/W4") - if(COMPILER_WARNINGS_EXTREME) - set(_flags "${_flags} /Wall /wd4619 /wd4668 /wd4820 /wd4571 /wd4710") - endif() - else() - include(CheckCXXCompilerFlag) - set(_flags) + set(_flags) + if(MSVC) + option(COMPILER_WARNINGS_EXTREME + "Use compiler warnings that are probably overkill." + off) + mark_as_advanced(COMPILER_WARNINGS_EXTREME) + set(_flags "/W4") + if(COMPILER_WARNINGS_EXTREME) + set(_flags "${_flags} /Wall /wd4619 /wd4668 /wd4820 /wd4571 /wd4710") + endif() + else() + include(CheckCXXCompilerFlag) + set(_flags) - check_cxx_compiler_flag(-W SUPPORTS_W_FLAG) - if(SUPPORTS_W_FLAG) - set(_flags "${_flags} -W") - endif() + check_cxx_compiler_flag(-W SUPPORTS_W_FLAG) + if(SUPPORTS_W_FLAG) + set(_flags "${_flags} -W") + endif() - check_cxx_compiler_flag(-Wall SUPPORTS_WALL_FLAG) - if(SUPPORTS_WALL_FLAG) - set(_flags "${_flags} -Wall") - endif() + check_cxx_compiler_flag(-Wall SUPPORTS_WALL_FLAG) + if(SUPPORTS_WALL_FLAG) + set(_flags "${_flags} -Wall") + endif() - check_cxx_compiler_flag(-Wextra SUPPORTS_WEXTRA_FLAG) - if(SUPPORTS_WEXTRA_FLAG) - set(_flags "${_flags} -Wextra") - endif() - endif() + check_cxx_compiler_flag(-Wextra SUPPORTS_WEXTRA_FLAG) + if(SUPPORTS_WEXTRA_FLAG) + set(_flags "${_flags} -Wextra") + endif() + endif() endmacro() function(enable_extra_compiler_warnings _target) - _enable_extra_compiler_warnings_flags() - get_target_property(_origflags ${_target} COMPILE_FLAGS) - if(_origflags) - set_property(TARGET - ${_target} - PROPERTY - COMPILE_FLAGS - "${_flags} ${_origflags}") - else() - set_property(TARGET - ${_target} - PROPERTY - COMPILE_FLAGS - "${_flags}") - endif() + _enable_extra_compiler_warnings_flags() + get_target_property(_origflags ${_target} COMPILE_FLAGS) + if(_origflags) + set_property(TARGET + ${_target} + PROPERTY + COMPILE_FLAGS + "${_flags} ${_origflags}") + else() + set_property(TARGET + ${_target} + PROPERTY + COMPILE_FLAGS + "${_flags}") + endif() endfunction() function(globally_enable_extra_compiler_warnings) - _enable_extra_compiler_warnings_flags() - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flags}" PARENT_SCOPE) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flags}" PARENT_SCOPE) + _enable_extra_compiler_warnings_flags() + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flags}" PARENT_SCOPE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flags}" PARENT_SCOPE) endfunction() diff --git a/scripts/cmake/cmake/EnableProfiling.cmake b/scripts/cmake/cmake/EnableProfiling.cmake index e2a340f7c83dacd3cd30e365aba4699bb96a7809..f94176c8c3fa278cd6b14c3f6fc66e384eb6b3ff 100644 --- a/scripts/cmake/cmake/EnableProfiling.cmake +++ b/scripts/cmake/cmake/EnableProfiling.cmake @@ -16,41 +16,41 @@ # http://www.boost.org/LICENSE_1_0.txt) if(__enable_profiling) - return() + return() endif() set(__enable_profiling YES) macro(_enable_profiling_flags) - set(_flags) - if(MSVC) - # TODO: what kind of flags are needed to profile on MSVC? - #set(_flags /W4) - elseif(CMAKE_COMPILER_IS_GNUCXX) - set(_flags "-p") - endif() + set(_flags) + if(MSVC) + # TODO: what kind of flags are needed to profile on MSVC? + #set(_flags /W4) + elseif(CMAKE_COMPILER_IS_GNUCXX) + set(_flags "-p") + endif() endmacro() function(enable_profiling _target) - _enable_profiling_flags() - get_target_property(_origflags ${_target} COMPILE_FLAGS) - if(_origflags) - set_property(TARGET - ${_target} - PROPERTY - COMPILE_FLAGS - "${_flags} ${_origflags}") - else() - set_property(TARGET - ${_target} - PROPERTY - COMPILE_FLAGS - "${_flags}") - endif() + _enable_profiling_flags() + get_target_property(_origflags ${_target} COMPILE_FLAGS) + if(_origflags) + set_property(TARGET + ${_target} + PROPERTY + COMPILE_FLAGS + "${_flags} ${_origflags}") + else() + set_property(TARGET + ${_target} + PROPERTY + COMPILE_FLAGS + "${_flags}") + endif() endfunction() function(globally_enable_profiling) - _enable_profiling_flags() - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flags}" PARENT_SCOPE) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flags}" PARENT_SCOPE) + _enable_profiling_flags() + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flags}" PARENT_SCOPE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flags}" PARENT_SCOPE) endfunction() diff --git a/scripts/cmake/cmake/FileCopyTargets.cmake b/scripts/cmake/cmake/FileCopyTargets.cmake index 04a83fc707dbf3e7d02b951ab269957ad3526e09..49d70b399d0640a6a7091aac5606d62871398918 100644 --- a/scripts/cmake/cmake/FileCopyTargets.cmake +++ b/scripts/cmake/cmake/FileCopyTargets.cmake @@ -27,75 +27,75 @@ # http://www.boost.org/LICENSE_1_0.txt) if(__add_file_copy_target) - return() + return() endif() set(__add_file_copy_target YES) define_property(TARGET - PROPERTY - FILE_COPY_TARGET - BRIEF_DOCS - "File Copy target" - FULL_DOCS - "Is this a target created by add_file_copy_target?") + PROPERTY + FILE_COPY_TARGET + BRIEF_DOCS + "File Copy target" + FULL_DOCS + "Is this a target created by add_file_copy_target?") function(add_file_copy_target _target _dest) - if(NOT ARGN) - message(WARNING - "In add_file_copy_target call for target ${_target}, no source files were specified!") - return() - endif() + if(NOT ARGN) + message(WARNING + "In add_file_copy_target call for target ${_target}, no source files were specified!") + return() + endif() - set(ALLFILES) - set(SOURCES) - foreach(fn ${ARGN}) - # Produce an absolute path to the input file - if(IS_ABSOLUTE "${fn}") - get_filename_component(fullpath "${fn}" ABSOLUTE) - get_filename_component(fn "${fn}" NAME) - else() - get_filename_component(fullpath "${CMAKE_CURRENT_SOURCE_DIR}/${fn}" ABSOLUTE) - endif() + set(ALLFILES) + set(SOURCES) + foreach(fn ${ARGN}) + # Produce an absolute path to the input file + if(IS_ABSOLUTE "${fn}") + get_filename_component(fullpath "${fn}" ABSOLUTE) + get_filename_component(fn "${fn}" NAME) + else() + get_filename_component(fullpath "${CMAKE_CURRENT_SOURCE_DIR}/${fn}" ABSOLUTE) + endif() - # Clean up output file name - get_filename_component(absout "${_dest}/${fn}" ABSOLUTE) + # Clean up output file name + get_filename_component(absout "${_dest}/${fn}" ABSOLUTE) - add_custom_command(OUTPUT "${absout}" - COMMAND - ${CMAKE_COMMAND} - ARGS -E make_directory "${_dest}" - COMMAND - ${CMAKE_COMMAND} - ARGS -E copy "${fullpath}" "${_dest}" - MAIN_DEPENDENCY "${fullpath}" - VERBATIM - COMMENT "Copying ${fn} to ${absout}") - list(APPEND SOURCES "${fullpath}") - list(APPEND ALLFILES "${absout}") - endforeach() + add_custom_command(OUTPUT "${absout}" + COMMAND + ${CMAKE_COMMAND} + ARGS -E make_directory "${_dest}" + COMMAND + ${CMAKE_COMMAND} + ARGS -E copy "${fullpath}" "${_dest}" + MAIN_DEPENDENCY "${fullpath}" + VERBATIM + COMMENT "Copying ${fn} to ${absout}") + list(APPEND SOURCES "${fullpath}") + list(APPEND ALLFILES "${absout}") + endforeach() - # Custom target depending on all the file copy commands - add_custom_target(${_target} - SOURCES ${SOURCES} - DEPENDS ${ALLFILES}) + # Custom target depending on all the file copy commands + add_custom_target(${_target} + SOURCES ${SOURCES} + DEPENDS ${ALLFILES}) - set_property(TARGET ${_target} PROPERTY FILE_COPY_TARGET YES) + set_property(TARGET ${_target} PROPERTY FILE_COPY_TARGET YES) endfunction() function(install_file_copy_target _target) - get_target_property(_isFCT ${_target} FILE_COPY_TARGET) - if(NOT _isFCT) - message(WARNING - "install_file_copy_target called on a target not created with add_file_copy_target!") - return() - endif() + get_target_property(_isFCT ${_target} FILE_COPY_TARGET) + if(NOT _isFCT) + message(WARNING + "install_file_copy_target called on a target not created with add_file_copy_target!") + return() + endif() - # Get sources - get_target_property(_srcs ${_target} SOURCES) + # Get sources + get_target_property(_srcs ${_target} SOURCES) - # Remove the "fake" file forcing build - list(REMOVE_AT _srcs 0) + # Remove the "fake" file forcing build + list(REMOVE_AT _srcs 0) - # Forward the call to install - install(PROGRAMS ${_srcs} ${ARGN}) + # Forward the call to install + install(PROGRAMS ${_srcs} ${ARGN}) endfunction() diff --git a/scripts/cmake/cmake/FindCVODE.cmake b/scripts/cmake/cmake/FindCVODE.cmake index 2331b2297a79e9bb362ec5a50f790871b7fd0ffe..6cd509df690b5be6dd81cc2ec25f2fe4afad0983 100644 --- a/scripts/cmake/cmake/FindCVODE.cmake +++ b/scripts/cmake/cmake/FindCVODE.cmake @@ -11,35 +11,35 @@ include(FindPackageHandleStandardArgs) if(NOT "$ENV{CVODE_ROOT}" STREQUAL "" OR NOT "${CVODE_ROOT}" STREQUAL "") - list(APPEND CMAKE_INCLUDE_PATH "$ENV{CVODE_ROOT}" "${CVODE_ROOT}") - list(APPEND CMAKE_LIBRARY_PATH "$ENV{CVODE_ROOT}" "${CVODE_ROOT}") + list(APPEND CMAKE_INCLUDE_PATH "$ENV{CVODE_ROOT}" "${CVODE_ROOT}") + list(APPEND CMAKE_LIBRARY_PATH "$ENV{CVODE_ROOT}" "${CVODE_ROOT}") endif() find_path(CVODE_INCLUDE_DIRS sundials_types.h - ENV CVODE_ROOT - PATH_SUFFIXES include include/sundials + ENV CVODE_ROOT + PATH_SUFFIXES include include/sundials ) find_library(CVODE_LIBRARY - NAMES sundials_cvode - ENV CVODE_ROOT - PATH_SUFFIXES lib Lib + NAMES sundials_cvode + ENV CVODE_ROOT + PATH_SUFFIXES lib Lib ) find_library(CVODE_NVECSERIAL - NAMES sundials_nvecserial - ENV CVODE_ROOT - PATH_SUFFIXES lib Lib + NAMES sundials_nvecserial + ENV CVODE_ROOT + PATH_SUFFIXES lib Lib ) find_package_handle_standard_args(CVODE DEFAULT_MSG - CVODE_LIBRARY - CVODE_NVECSERIAL - CVODE_INCLUDE_DIRS + CVODE_LIBRARY + CVODE_NVECSERIAL + CVODE_INCLUDE_DIRS ) if(CVODE_FOUND) - set(CVODE_LIBRARIES ${CVODE_LIBRARY} ${CVODE_NVECSERIAL}) + set(CVODE_LIBRARIES ${CVODE_LIBRARY} ${CVODE_NVECSERIAL}) endif() mark_as_advanced(CVODE_INCLUDE_DIRS CVODE_LIBRARY CVODE_NVECSERIAL) diff --git a/scripts/cmake/cmake/FindGDB.cmake b/scripts/cmake/cmake/FindGDB.cmake index a5f743da608044adcb2f3fa2ff935fd86e90f606..9eb1cfeea5a82ea6bd13096037df733b9e770434 100644 --- a/scripts/cmake/cmake/FindGDB.cmake +++ b/scripts/cmake/cmake/FindGDB.cmake @@ -21,26 +21,26 @@ set(GDB_ROOT_DIR - "${GDB_ROOT_DIR}" - CACHE - PATH - "Directory to start our search in") + "${GDB_ROOT_DIR}" + CACHE + PATH + "Directory to start our search in") find_program(GDB_COMMAND - NAMES - gdb - HINTS - "${GDB_ROOT_DIR}" - PATH_SUFFIXES - bin - libexec) + NAMES + gdb + HINTS + "${GDB_ROOT_DIR}" + PATH_SUFFIXES + bin + libexec) if(GDB_COMMAND) - execute_process(COMMAND gdb --version - COMMAND head -n 1 - OUTPUT_VARIABLE GDB_VERSION - OUTPUT_STRIP_TRAILING_WHITESPACE) - string(REGEX REPLACE "[^0-9]*([0-9]+[0-9.]*).*" "\\1" GDB_VERSION "${GDB_VERSION}") + execute_process(COMMAND gdb --version + COMMAND head -n 1 + OUTPUT_VARIABLE GDB_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REGEX REPLACE "[^0-9]*([0-9]+[0-9.]*).*" "\\1" GDB_VERSION "${GDB_VERSION}") endif() # handle the QUIETLY and REQUIRED arguments and set xxx_FOUND to TRUE if @@ -49,12 +49,12 @@ include(FindPackageHandleStandardArgs) find_package_handle_standard_args(GDB DEFAULT_MSG GDB_COMMAND GDB_VERSION) if(GDB_FOUND) - mark_as_advanced(GDB_ROOT_DIR) - if(GDB_VERSION VERSION_LESS 6.4) - set(GDB_HAS_RETURN_CHILD_RESULT FALSE) - else() - set(GDB_HAS_RETURN_CHILD_RESULT TRUE) - endif() + mark_as_advanced(GDB_ROOT_DIR) + if(GDB_VERSION VERSION_LESS 6.4) + set(GDB_HAS_RETURN_CHILD_RESULT FALSE) + else() + set(GDB_HAS_RETURN_CHILD_RESULT TRUE) + endif() endif() mark_as_advanced(GDB_COMMAND) diff --git a/scripts/cmake/cmake/FindGitHub.cmake b/scripts/cmake/cmake/FindGitHub.cmake index 08a9989346e88c3a9f9375265cc752204b75e2a7..6308a48f93463e663fb33cd20006817349df75c7 100644 --- a/scripts/cmake/cmake/FindGitHub.cmake +++ b/scripts/cmake/cmake/FindGitHub.cmake @@ -9,28 +9,28 @@ if(WIN32 AND NOT GITHUB_FOUND) - # Check install Path - find_path( - GITHUB_DIR - shell.ps1 - PATHS $ENV{LOCALAPPDATA}/GitHub $ENV{GitHub_DIR} - NO_DEFAULT_PATH - ) + # Check install Path + find_path( + GITHUB_DIR + shell.ps1 + PATHS $ENV{LOCALAPPDATA}/GitHub $ENV{GitHub_DIR} + NO_DEFAULT_PATH + ) - if(GITHUB_DIR) + if(GITHUB_DIR) - execute_process ( - COMMAND cmd /c "cd ${GITHUB_DIR}/PortableGit*/bin & cd" - OUTPUT_VARIABLE PORTABLE_GIT_WIN_DIR - ) + execute_process ( + COMMAND cmd /c "cd ${GITHUB_DIR}/PortableGit*/bin & cd" + OUTPUT_VARIABLE PORTABLE_GIT_WIN_DIR + ) - if(PORTABLE_GIT_WIN_DIR) - string(STRIP ${PORTABLE_GIT_WIN_DIR} PORTABLE_GIT_WIN_DIR) - file(TO_CMAKE_PATH ${PORTABLE_GIT_WIN_DIR} PORTABLE_GIT_WIN_DIR) - set(GITHUB_FOUND ON CACHE BOOL "Was GitHub for Windows found?") - set(GITHUB_BIN_DIR ${PORTABLE_GIT_WIN_DIR} CACHE PATH "The path to the GitHub for Windows binaries." FORCE) - message(STATUS "GitHub for Windows found.") - endif() + if(PORTABLE_GIT_WIN_DIR) + string(STRIP ${PORTABLE_GIT_WIN_DIR} PORTABLE_GIT_WIN_DIR) + file(TO_CMAKE_PATH ${PORTABLE_GIT_WIN_DIR} PORTABLE_GIT_WIN_DIR) + set(GITHUB_FOUND ON CACHE BOOL "Was GitHub for Windows found?") + set(GITHUB_BIN_DIR ${PORTABLE_GIT_WIN_DIR} CACHE PATH "The path to the GitHub for Windows binaries." FORCE) + message(STATUS "GitHub for Windows found.") + endif() - endif() + endif() endif() diff --git a/scripts/cmake/cmake/FindLIS.cmake b/scripts/cmake/cmake/FindLIS.cmake index 2a778b7f1274cf9134f59f645e8397acb12dfbb9..044ac7783ced3b09293aba6e6a4b33ccd68f290b 100644 --- a/scripts/cmake/cmake/FindLIS.cmake +++ b/scripts/cmake/cmake/FindLIS.cmake @@ -8,13 +8,13 @@ # Environment variable LIS_ROOT_DIR can be set to give hints find_path( LIS_INCLUDE_DIR lis.h - PATHS ENV LIS_ROOT_DIR - PATH_SUFFIXES include + PATHS ENV LIS_ROOT_DIR + PATH_SUFFIXES include ) find_library(LIS_LIBRARY lis - PATHS ENV LIS_ROOT_DIR - PATH_SUFFIXES lib + PATHS ENV LIS_ROOT_DIR + PATH_SUFFIXES lib ) set(LIS_LIBRARIES ${LIS_LIBRARY}) diff --git a/scripts/cmake/cmake/FindMSVCRedist.cmake b/scripts/cmake/cmake/FindMSVCRedist.cmake index 63cc78838348bb62b3c7be261c04a96c26878af2..0e2cd200eb32b8d60cc5b94e95e70183cabbce9f 100644 --- a/scripts/cmake/cmake/FindMSVCRedist.cmake +++ b/scripts/cmake/cmake/FindMSVCRedist.cmake @@ -6,7 +6,7 @@ if (MSVC) set(VCVERS 9) endif() if (MSVC10) - set(VCVERS 10) + set(VCVERS 10) endif() if(CMAKE_CL_64) diff --git a/scripts/cmake/cmake/FindMsysGit.cmake b/scripts/cmake/cmake/FindMsysGit.cmake index 9312a0dd72493b63ab8c1264130bdf014dc21c8a..a68137735cfc8612dac0204f754fb6544b675ee8 100644 --- a/scripts/cmake/cmake/FindMsysGit.cmake +++ b/scripts/cmake/cmake/FindMsysGit.cmake @@ -8,28 +8,28 @@ # endif() if(GIT_EXECUTABLE) - execute_process(COMMAND ${GIT_EXECUTABLE} --version - OUTPUT_VARIABLE git_version - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - if (git_version MATCHES "^git version [0-9]") - string(REPLACE "git version " "" GIT_VERSION_STRING "${git_version}") - if (git_version MATCHES "msysgit") - set(GIT_IS_MSYSGIT TRUE) - else() - set(GIT_IS_MSYSGIT FALSE) - endif() - endif() - unset(git_version) + execute_process(COMMAND ${GIT_EXECUTABLE} --version + OUTPUT_VARIABLE git_version + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + if (git_version MATCHES "^git version [0-9]") + string(REPLACE "git version " "" GIT_VERSION_STRING "${git_version}") + if (git_version MATCHES "msysgit") + set(GIT_IS_MSYSGIT TRUE) + else() + set(GIT_IS_MSYSGIT FALSE) + endif() + endif() + unset(git_version) endif() if(GIT_IS_MSYSGIT) - get_filename_component(MSYS_DIR ${GIT_EXECUTABLE} PATH) - find_path(MSYSGIT_BIN_DIR - NAMES date.exe grep.exe unzip.exe git.exe PATHS ${MSYS_DIR}/../bin NO_DEFAULT_PATH) + get_filename_component(MSYS_DIR ${GIT_EXECUTABLE} PATH) + find_path(MSYSGIT_BIN_DIR + NAMES date.exe grep.exe unzip.exe git.exe PATHS ${MSYS_DIR}/../bin NO_DEFAULT_PATH) else() - find_path(MSYSGIT_BIN_DIR - NAMES date.exe grep.exe unzip.exe git.exe PATH_SUFFIXES Git/bin) + find_path(MSYSGIT_BIN_DIR + NAMES date.exe grep.exe unzip.exe git.exe PATH_SUFFIXES Git/bin) endif() # Handle the QUIETLY and REQUIRED arguments and set MSYSGIT_FOUND to TRUE if @@ -37,4 +37,4 @@ endif() include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(MsysGit - REQUIRED_VARS MSYSGIT_BIN_DIR) + REQUIRED_VARS MSYSGIT_BIN_DIR) diff --git a/scripts/cmake/cmake/FindOpenSGSupportlibs.cmake b/scripts/cmake/cmake/FindOpenSGSupportlibs.cmake index 2a4fe59c77bba770013bd831f7141d9ffa04d828..afb544ce9b62ccdff9fca7ad8b3ca9c59aaab175 100644 --- a/scripts/cmake/cmake/FindOpenSGSupportlibs.cmake +++ b/scripts/cmake/cmake/FindOpenSGSupportlibs.cmake @@ -7,39 +7,39 @@ if (NOT OpenSGSupportlibs_FOUND) - include(LibFindMacros) + include(LibFindMacros) - # Visual Studio x32 - if (VS32) - # Visual Studio x32 - find_path( OpenSGSupportlibs_INCLUDE_DIR - NAMES zlib.h - PATHS ${LIBRARIES_DIR}/supportlibs/include - ${CMAKE_SOURCE_DIR}/../supportlibs/include ) + # Visual Studio x32 + if (VS32) + # Visual Studio x32 + find_path( OpenSGSupportlibs_INCLUDE_DIR + NAMES zlib.h + PATHS ${LIBRARIES_DIR}/supportlibs/include + ${CMAKE_SOURCE_DIR}/../supportlibs/include ) - find_library(OpenSGSupportlibs_LIBRARY - NAMES glut32 libjpg libpng tif32 zlib - PATHS ${LIBRARIES_DIR}/supportlibs/lib - ${CMAKE_SOURCE_DIR}/../supportlibs/lib ) - else () - if (VS64) - # Visual Studio x64 - find_path( OpenSGSupportlibs_INCLUDE_DIR - NAMES zlib.h - PATHS ${LIBRARIES_DIR}/supportlibs_x64/include - ${CMAKE_SOURCE_DIR}/../supportlibs_x64/include ) + find_library(OpenSGSupportlibs_LIBRARY + NAMES glut32 libjpg libpng tif32 zlib + PATHS ${LIBRARIES_DIR}/supportlibs/lib + ${CMAKE_SOURCE_DIR}/../supportlibs/lib ) + else () + if (VS64) + # Visual Studio x64 + find_path( OpenSGSupportlibs_INCLUDE_DIR + NAMES zlib.h + PATHS ${LIBRARIES_DIR}/supportlibs_x64/include + ${CMAKE_SOURCE_DIR}/../supportlibs_x64/include ) - find_library(OpenSGSupportlibs_LIBRARY - NAMES glut32 libjpg libpng tif32 zlib - PATHS ${LIBRARIES_DIR}/supportlibs_x64/lib - ${CMAKE_SOURCE_DIR}/../supportlibs_x64/lib ) - endif() - endif () + find_library(OpenSGSupportlibs_LIBRARY + NAMES glut32 libjpg libpng tif32 zlib + PATHS ${LIBRARIES_DIR}/supportlibs_x64/lib + ${CMAKE_SOURCE_DIR}/../supportlibs_x64/lib ) + endif() + endif () - # Set the include dir variables and the libraries and let libfind_process do the rest. - # NOTE: Singular variables for this library, plural for libraries this this lib depends on. - set(OpenSGSupportlibs_PROCESS_INCLUDES OpenSGSupportlibs_INCLUDE_DIR) - set(OpenSGSupportlibs_PROCESS_LIBS OpenSGSupportlibs_LIBRARY) - libfind_process(OpenSGSupportlibs) + # Set the include dir variables and the libraries and let libfind_process do the rest. + # NOTE: Singular variables for this library, plural for libraries this this lib depends on. + set(OpenSGSupportlibs_PROCESS_INCLUDES OpenSGSupportlibs_INCLUDE_DIR) + set(OpenSGSupportlibs_PROCESS_LIBS OpenSGSupportlibs_LIBRARY) + libfind_process(OpenSGSupportlibs) endif () \ No newline at end of file diff --git a/scripts/cmake/cmake/FindShapelib.cmake b/scripts/cmake/cmake/FindShapelib.cmake index 1695296ab3e2601d5dfe2570a9ef3896819a005e..de588716bfea5a800210feadf8bcc500b03f1f1f 100644 --- a/scripts/cmake/cmake/FindShapelib.cmake +++ b/scripts/cmake/cmake/FindShapelib.cmake @@ -1,17 +1,17 @@ find_path(Shapelib_INCLUDE_DIR NAMES shapefil.h) if(MSVC) - set(Shapelib_LIBNAME shapelib) + set(Shapelib_LIBNAME shapelib) else() - set(Shapelib_LIBNAME shp) + set(Shapelib_LIBNAME shp) endif() find_library(Shapelib_LIBRARY NAMES ${Shapelib_LIBNAME}) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Shapelib - FOUND_VAR Shapelib_FOUND - REQUIRED_VARS Shapelib_INCLUDE_DIR Shapelib_LIBRARY + FOUND_VAR Shapelib_FOUND + REQUIRED_VARS Shapelib_INCLUDE_DIR Shapelib_LIBRARY ) set(Shapelib_INCLUDE_DIRS ${Shapelib_INCLUDE_DIR}) diff --git a/scripts/cmake/cmake/Findcppcheck.cmake b/scripts/cmake/cmake/Findcppcheck.cmake index fe5e32c0b2610a419fa73de0c3109add375d1cb2..cfa4ffc91ea36ef554613269a43f5f3d788a2c66 100644 --- a/scripts/cmake/cmake/Findcppcheck.cmake +++ b/scripts/cmake/cmake/Findcppcheck.cmake @@ -30,30 +30,30 @@ file(TO_CMAKE_PATH "${CPPCHECK_ROOT_DIR}" CPPCHECK_ROOT_DIR) set(CPPCHECK_ROOT_DIR - "${CPPCHECK_ROOT_DIR}" - CACHE - PATH - "Path to search for cppcheck") + "${CPPCHECK_ROOT_DIR}" + CACHE + PATH + "Path to search for cppcheck") # cppcheck app bundles on Mac OS X are GUI, we want command line only set(_oldappbundlesetting ${CMAKE_FIND_APPBUNDLE}) set(CMAKE_FIND_APPBUNDLE NEVER) if(CPPCHECK_EXECUTABLE AND NOT EXISTS "${CPPCHECK_EXECUTABLE}") - set(CPPCHECK_EXECUTABLE "notfound" CACHE PATH FORCE "") + set(CPPCHECK_EXECUTABLE "notfound" CACHE PATH FORCE "") endif() # If we have a custom path, look there first. if(CPPCHECK_ROOT_DIR) - find_program(CPPCHECK_EXECUTABLE - NAMES - cppcheck - cli - PATHS - "${CPPCHECK_ROOT_DIR}" - PATH_SUFFIXES - cli - NO_DEFAULT_PATH) + find_program(CPPCHECK_EXECUTABLE + NAMES + cppcheck + cli + PATHS + "${CPPCHECK_ROOT_DIR}" + PATH_SUFFIXES + cli + NO_DEFAULT_PATH) endif() find_program(CPPCHECK_EXECUTABLE NAMES cppcheck) @@ -66,95 +66,95 @@ get_filename_component(_cppcheckmoddir ${CMAKE_CURRENT_LIST_FILE} PATH) set(_cppcheckdummyfile "${_cppcheckmoddir}/Findcppcheck.cpp") function(_cppcheck_test_arg _resultvar _arg) - if(NOT CPPCHECK_EXECUTABLE) - set(${_resultvar} NO) - return() - endif() - execute_process(COMMAND - "${CPPCHECK_EXECUTABLE}" - "${_arg}" - "--quiet" - "${_cppcheckdummyfile}" - RESULT_VARIABLE - _cppcheck_result - OUTPUT_QUIET - ERROR_QUIET) - if("${_cppcheck_result}" EQUAL 0) - set(${_resultvar} YES PARENT_SCOPE) - else() - set(${_resultvar} NO PARENT_SCOPE) - endif() + if(NOT CPPCHECK_EXECUTABLE) + set(${_resultvar} NO) + return() + endif() + execute_process(COMMAND + "${CPPCHECK_EXECUTABLE}" + "${_arg}" + "--quiet" + "${_cppcheckdummyfile}" + RESULT_VARIABLE + _cppcheck_result + OUTPUT_QUIET + ERROR_QUIET) + if("${_cppcheck_result}" EQUAL 0) + set(${_resultvar} YES PARENT_SCOPE) + else() + set(${_resultvar} NO PARENT_SCOPE) + endif() endfunction() function(_cppcheck_set_arg_var _argvar _arg) - if("${${_argvar}}" STREQUAL "") - _cppcheck_test_arg(_cppcheck_arg "${_arg}") - if(_cppcheck_arg) - set(${_argvar} "${_arg}" PARENT_SCOPE) - endif() - endif() + if("${${_argvar}}" STREQUAL "") + _cppcheck_test_arg(_cppcheck_arg "${_arg}") + if(_cppcheck_arg) + set(${_argvar} "${_arg}" PARENT_SCOPE) + endif() + endif() endfunction() if(CPPCHECK_EXECUTABLE) - # Check for the two types of command line arguments by just trying them - _cppcheck_set_arg_var(CPPCHECK_STYLE_ARG "--enable=style") - _cppcheck_set_arg_var(CPPCHECK_STYLE_ARG "--style") - if("${CPPCHECK_STYLE_ARG}" STREQUAL "--enable=style") - - _cppcheck_set_arg_var(CPPCHECK_UNUSEDFUNC_ARG "--enable=unusedFunctions") - _cppcheck_set_arg_var(CPPCHECK_INFORMATION_ARG "--enable=information") - _cppcheck_set_arg_var(CPPCHECK_MISSINGINCLUDE_ARG "--enable=missingInclude") - _cppcheck_set_arg_var(CPPCHECK_POSIX_ARG "--enable=posix") - _cppcheck_set_arg_var(CPPCHECK_POSSIBLEERROR_ARG "--enable=possibleError") - _cppcheck_set_arg_var(CPPCHECK_POSSIBLEERROR_ARG "--enable=all") - - if(MSVC) - set(CPPCHECK_TEMPLATE_ARG --template vs) - set(CPPCHECK_FAIL_REGULAR_EXPRESSION "[(]error[)]") - set(CPPCHECK_WARN_REGULAR_EXPRESSION "[(]style[)]") - elseif(CMAKE_COMPILER_IS_GNUCXX) - set(CPPCHECK_TEMPLATE_ARG --template gcc) - set(CPPCHECK_FAIL_REGULAR_EXPRESSION " error: ") - set(CPPCHECK_WARN_REGULAR_EXPRESSION " style: ") - else() - set(CPPCHECK_TEMPLATE_ARG --template gcc) - set(CPPCHECK_FAIL_REGULAR_EXPRESSION " error: ") - set(CPPCHECK_WARN_REGULAR_EXPRESSION " style: ") - endif() - elseif("${CPPCHECK_STYLE_ARG}" STREQUAL "--style") - # Old arguments - _cppcheck_set_arg_var(CPPCHECK_UNUSEDFUNC_ARG "--unused-functions") - _cppcheck_set_arg_var(CPPCHECK_POSSIBLEERROR_ARG "--all") - set(CPPCHECK_FAIL_REGULAR_EXPRESSION "error:") - set(CPPCHECK_WARN_REGULAR_EXPRESSION "[(]style[)]") - else() - # No idea - some other issue must be getting in the way - message(STATUS - "WARNING: Can't detect whether CPPCHECK wants new or old-style arguments!") - endif() - - set(CPPCHECK_QUIET_ARG "--quiet") - set(CPPCHECK_INCLUDEPATH_ARG "-I") + # Check for the two types of command line arguments by just trying them + _cppcheck_set_arg_var(CPPCHECK_STYLE_ARG "--enable=style") + _cppcheck_set_arg_var(CPPCHECK_STYLE_ARG "--style") + if("${CPPCHECK_STYLE_ARG}" STREQUAL "--enable=style") + + _cppcheck_set_arg_var(CPPCHECK_UNUSEDFUNC_ARG "--enable=unusedFunctions") + _cppcheck_set_arg_var(CPPCHECK_INFORMATION_ARG "--enable=information") + _cppcheck_set_arg_var(CPPCHECK_MISSINGINCLUDE_ARG "--enable=missingInclude") + _cppcheck_set_arg_var(CPPCHECK_POSIX_ARG "--enable=posix") + _cppcheck_set_arg_var(CPPCHECK_POSSIBLEERROR_ARG "--enable=possibleError") + _cppcheck_set_arg_var(CPPCHECK_POSSIBLEERROR_ARG "--enable=all") + + if(MSVC) + set(CPPCHECK_TEMPLATE_ARG --template vs) + set(CPPCHECK_FAIL_REGULAR_EXPRESSION "[(]error[)]") + set(CPPCHECK_WARN_REGULAR_EXPRESSION "[(]style[)]") + elseif(CMAKE_COMPILER_IS_GNUCXX) + set(CPPCHECK_TEMPLATE_ARG --template gcc) + set(CPPCHECK_FAIL_REGULAR_EXPRESSION " error: ") + set(CPPCHECK_WARN_REGULAR_EXPRESSION " style: ") + else() + set(CPPCHECK_TEMPLATE_ARG --template gcc) + set(CPPCHECK_FAIL_REGULAR_EXPRESSION " error: ") + set(CPPCHECK_WARN_REGULAR_EXPRESSION " style: ") + endif() + elseif("${CPPCHECK_STYLE_ARG}" STREQUAL "--style") + # Old arguments + _cppcheck_set_arg_var(CPPCHECK_UNUSEDFUNC_ARG "--unused-functions") + _cppcheck_set_arg_var(CPPCHECK_POSSIBLEERROR_ARG "--all") + set(CPPCHECK_FAIL_REGULAR_EXPRESSION "error:") + set(CPPCHECK_WARN_REGULAR_EXPRESSION "[(]style[)]") + else() + # No idea - some other issue must be getting in the way + message(STATUS + "WARNING: Can't detect whether CPPCHECK wants new or old-style arguments!") + endif() + + set(CPPCHECK_QUIET_ARG "--quiet") + set(CPPCHECK_INCLUDEPATH_ARG "-I") endif() set(CPPCHECK_ALL - "${CPPCHECK_EXECUTABLE} ${CPPCHECK_POSSIBLEERROR_ARG} ${CPPCHECK_UNUSEDFUNC_ARG} ${CPPCHECK_STYLE_ARG} ${CPPCHECK_QUIET_ARG} ${CPPCHECK_INCLUDEPATH_ARG} some/include/path") + "${CPPCHECK_EXECUTABLE} ${CPPCHECK_POSSIBLEERROR_ARG} ${CPPCHECK_UNUSEDFUNC_ARG} ${CPPCHECK_STYLE_ARG} ${CPPCHECK_QUIET_ARG} ${CPPCHECK_INCLUDEPATH_ARG} some/include/path") include(FindPackageHandleStandardArgs) find_package_handle_standard_args(cppcheck - DEFAULT_MSG - CPPCHECK_ALL - CPPCHECK_EXECUTABLE - CPPCHECK_POSSIBLEERROR_ARG - CPPCHECK_UNUSEDFUNC_ARG - CPPCHECK_STYLE_ARG - CPPCHECK_INCLUDEPATH_ARG - CPPCHECK_QUIET_ARG) + DEFAULT_MSG + CPPCHECK_ALL + CPPCHECK_EXECUTABLE + CPPCHECK_POSSIBLEERROR_ARG + CPPCHECK_UNUSEDFUNC_ARG + CPPCHECK_STYLE_ARG + CPPCHECK_INCLUDEPATH_ARG + CPPCHECK_QUIET_ARG) if(CPPCHECK_FOUND OR CPPCHECK_MARK_AS_ADVANCED) - mark_as_advanced(CPPCHECK_ROOT_DIR) + mark_as_advanced(CPPCHECK_ROOT_DIR) endif() mark_as_advanced(CPPCHECK_EXECUTABLE) diff --git a/scripts/cmake/cmake/Findcppcheck.cpp b/scripts/cmake/cmake/Findcppcheck.cpp index 84350db47a689d6745f3f7384d04cd78e3feb56e..6ff38876c0119aeb55f0e34aebd7c91e56db8f0f 100644 --- a/scripts/cmake/cmake/Findcppcheck.cpp +++ b/scripts/cmake/cmake/Findcppcheck.cpp @@ -12,5 +12,5 @@ int main(int argc, char* argv[]) { - return 0; + return 0; } diff --git a/scripts/cmake/cmake/Findcutil.cmake b/scripts/cmake/cmake/Findcutil.cmake index b38712d6ec7eb5a029ef68d909f610b2372a8686..54a9758cc3a375da79c44aec9b4e8f3719ac3766 100644 --- a/scripts/cmake/cmake/Findcutil.cmake +++ b/scripts/cmake/cmake/Findcutil.cmake @@ -23,7 +23,7 @@ find_package(CUDA QUIET) file(TO_CMAKE_PATH "${CUDA_SDK_ROOT_DIR}/C/common" CUTIL_ROOT_DIR) if(NOT EXISTS "${CUTIL_ROOT_DIR}/src/cutil.cpp") - set(CUDA_SDK_ROOT_DIR SDKDIR-NOTFOUND CACHE PATH "NVIDIA GPU Computing SDK dir" FORCE) + set(CUDA_SDK_ROOT_DIR SDKDIR-NOTFOUND CACHE PATH "NVIDIA GPU Computing SDK dir" FORCE) endif() # handle the QUIETLY and REQUIRED arguments and set xxx_FOUND to TRUE if @@ -32,17 +32,17 @@ include(FindPackageHandleStandardArgs) find_package_handle_standard_args(cutil DEFAULT_MSG CUDA_SDK_ROOT_DIR CUDA_FOUND) if(CUTIL_FOUND) - get_filename_component(_moddir "${CMAKE_CURRENT_LIST_FILE}" PATH) - add_subdirectory("${_moddir}/nested_targets/cutil") + get_filename_component(_moddir "${CMAKE_CURRENT_LIST_FILE}" PATH) + add_subdirectory("${_moddir}/nested_targets/cutil") - function(install_cutil dest) - install(TARGETS cutil - RUNTIME DESTINATION "${dest}" - LIBRARY DESTINATION "${dest}") - endfunction() + function(install_cutil dest) + install(TARGETS cutil + RUNTIME DESTINATION "${dest}" + LIBRARY DESTINATION "${dest}") + endfunction() else() - function(install_cutil) - message(FATAL_ERROR "Can't install cutil - didn't find it!") - endfunction() + function(install_cutil) + message(FATAL_ERROR "Can't install cutil - didn't find it!") + endfunction() endif() diff --git a/scripts/cmake/cmake/GetCPUDetails.cmake b/scripts/cmake/cmake/GetCPUDetails.cmake index 9aa5ef1edc6907a91fe4a3d8d99b82131216b85b..a2b84135fc21cd11e333c65ef90627246b679aba 100644 --- a/scripts/cmake/cmake/GetCPUDetails.cmake +++ b/scripts/cmake/cmake/GetCPUDetails.cmake @@ -26,148 +26,148 @@ if(__get_cpu_details) - return() + return() endif() set(__get_cpu_details YES) function(get_cpu_details) - option(CPUDETAILS_VERBOSE - "Should we display results of the CPU info check?" - NO) - mark_as_advanced(CPUDETAILS_VERBOSE) - - ### - # CPU_INTEL - - if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "x86_64" OR "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "i[3456]86") - set(CPU_INTEL YES) - elseif(APPLE) - # Mac Intel boxes return i386 in 10.5 - so assume this is a PPC - set(CPU_INTEL NO) - else() - # TODO: Assuming yes in case of doubt - probably not a great idea - set(CPU_INTEL YES) - endif() - - set(CPU_INTEL - ${CPU_INTEL} - CACHE - INTERNAL - "Intel x86 or x86_64 architecture machine?") - - ### - # CPU_EXE_64BIT/32BIT - if(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(CPU_EXE_64BIT ON) - set(CPU_EXE_32BIT OFF) - else() - set(CPU_EXE_64BIT OFF) - set(CPU_EXE_32BIT ON) - endif() - - ### - # CPU_HAS_SSE/SSE2/SSE3/SSSE3/SSE4.1/SSE4.2 - if(CPU_INTEL) - if(CMAKE_SYSTEM_NAME STREQUAL "Linux") - # Use /proc/cpuinfo to find this out. - file(STRINGS "/proc/cpuinfo" _cpuinfo) - if(_cpuinfo MATCHES "(sse)|(xmm)") - set(CPU_HAS_SSE YES) - else() - set(CPU_HAS_SSE NO) - endif() - - if(_cpuinfo MATCHES "(sse2)|(xmm2)") - set(CPU_HAS_SSE2 YES) - else() - set(CPU_HAS_SSE2 NO) - endif() - - if(_cpuinfo MATCHES "(sse3)|(xmm3)") - set(CPU_HAS_SSE3 YES) - else() - set(CPU_HAS_SSE3 NO) - endif() - - if(_cpuinfo MATCHES "ssse3") - set(CPU_HAS_SSSE3 YES) - else() - set(CPU_HAS_SSSE3 NO) - endif() - - if(_cpuinfo MATCHES "(sse4_1)|(xmm4_1)") - set(CPU_HAS_SSE4_1 YES) - else() - set(CPU_HAS_SSE4_1 NO) - endif() - - if(_cpuinfo MATCHES "(sse4_2)|(xmm4_2)") - set(CPU_HAS_SSE4_2 YES) - else() - set(CPU_HAS_SSE4_2 NO) - endif() - - elseif(APPLE) - # Mac OS X Intel requires SSE3 - set(CPU_HAS_SSE YES) - set(CPU_HAS_SSE2 YES) - set(CPU_HAS_SSE3 YES) - set(CPU_HAS_SSSE3 NO) - set(CPU_HAS_SSE4_1 NO) - set(CPU_HAS_SSE4_2 NO) - elseif(WIN32) - if(CPU_EXE_64BIT) - #TODO: Assume only common-denominator for 64-bit machines, - # since I don't know how to check. - set(CPU_HAS_SSE YES) - set(CPU_HAS_SSE2 YES) - set(CPU_HAS_SSE3 NO) - set(CPU_HAS_SSSE3 NO) - set(CPU_HAS_SSE4_1 NO) - set(CPU_HAS_SSE4_2 NO) - else() - #TODO: Assume no SSE, since I don't know how to check. - set(CPU_HAS_SSE NO) - set(CPU_HAS_SSE2 NO) - set(CPU_HAS_SSE3 NO) - set(CPU_HAS_SSSE3 NO) - set(CPU_HAS_SSE4_1 NO) - set(CPU_HAS_SSE4_2 NO) - endif() - endif() - endif() - - set(CPU_INTEL - ${CPU_INTEL} - CACHE - INTERNAL - "Intel x86 or x86_64 architecture machine?") - - foreach(_var - CPU_EXE_64BIT - CPU_EXE_32BIT - CPU_HAS_SSE - CPU_HAS_SSE2 - CPU_HAS_SSE3 - CPU_HAS_SSSE3 - CPU_HAS_SSE4_1 - CPU_HAS_SSE4_2) - set(${_var} ${${_var}} CACHE INTERNAL "") - endforeach() - - if(CPUDETAILS_VERBOSE) - foreach(_var - CPU_INTEL - CPU_EXE_64BIT - CPU_EXE_32BIT - CPU_HAS_SSE - CPU_HAS_SSE2 - CPU_HAS_SSE3 - CPU_HAS_SSSE3 - CPU_HAS_SSE4_1 - CPU_HAS_SSE4_2) - get_property(_help CACHE ${_var} PROPERTY HELPSTRING) - message(STATUS "[get_cpu_details] ${_var} (${_help}): ${${_var}}") - endforeach() - endif() + option(CPUDETAILS_VERBOSE + "Should we display results of the CPU info check?" + NO) + mark_as_advanced(CPUDETAILS_VERBOSE) + + ### + # CPU_INTEL + + if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "x86_64" OR "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "i[3456]86") + set(CPU_INTEL YES) + elseif(APPLE) + # Mac Intel boxes return i386 in 10.5 - so assume this is a PPC + set(CPU_INTEL NO) + else() + # TODO: Assuming yes in case of doubt - probably not a great idea + set(CPU_INTEL YES) + endif() + + set(CPU_INTEL + ${CPU_INTEL} + CACHE + INTERNAL + "Intel x86 or x86_64 architecture machine?") + + ### + # CPU_EXE_64BIT/32BIT + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(CPU_EXE_64BIT ON) + set(CPU_EXE_32BIT OFF) + else() + set(CPU_EXE_64BIT OFF) + set(CPU_EXE_32BIT ON) + endif() + + ### + # CPU_HAS_SSE/SSE2/SSE3/SSSE3/SSE4.1/SSE4.2 + if(CPU_INTEL) + if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + # Use /proc/cpuinfo to find this out. + file(STRINGS "/proc/cpuinfo" _cpuinfo) + if(_cpuinfo MATCHES "(sse)|(xmm)") + set(CPU_HAS_SSE YES) + else() + set(CPU_HAS_SSE NO) + endif() + + if(_cpuinfo MATCHES "(sse2)|(xmm2)") + set(CPU_HAS_SSE2 YES) + else() + set(CPU_HAS_SSE2 NO) + endif() + + if(_cpuinfo MATCHES "(sse3)|(xmm3)") + set(CPU_HAS_SSE3 YES) + else() + set(CPU_HAS_SSE3 NO) + endif() + + if(_cpuinfo MATCHES "ssse3") + set(CPU_HAS_SSSE3 YES) + else() + set(CPU_HAS_SSSE3 NO) + endif() + + if(_cpuinfo MATCHES "(sse4_1)|(xmm4_1)") + set(CPU_HAS_SSE4_1 YES) + else() + set(CPU_HAS_SSE4_1 NO) + endif() + + if(_cpuinfo MATCHES "(sse4_2)|(xmm4_2)") + set(CPU_HAS_SSE4_2 YES) + else() + set(CPU_HAS_SSE4_2 NO) + endif() + + elseif(APPLE) + # Mac OS X Intel requires SSE3 + set(CPU_HAS_SSE YES) + set(CPU_HAS_SSE2 YES) + set(CPU_HAS_SSE3 YES) + set(CPU_HAS_SSSE3 NO) + set(CPU_HAS_SSE4_1 NO) + set(CPU_HAS_SSE4_2 NO) + elseif(WIN32) + if(CPU_EXE_64BIT) + #TODO: Assume only common-denominator for 64-bit machines, + # since I don't know how to check. + set(CPU_HAS_SSE YES) + set(CPU_HAS_SSE2 YES) + set(CPU_HAS_SSE3 NO) + set(CPU_HAS_SSSE3 NO) + set(CPU_HAS_SSE4_1 NO) + set(CPU_HAS_SSE4_2 NO) + else() + #TODO: Assume no SSE, since I don't know how to check. + set(CPU_HAS_SSE NO) + set(CPU_HAS_SSE2 NO) + set(CPU_HAS_SSE3 NO) + set(CPU_HAS_SSSE3 NO) + set(CPU_HAS_SSE4_1 NO) + set(CPU_HAS_SSE4_2 NO) + endif() + endif() + endif() + + set(CPU_INTEL + ${CPU_INTEL} + CACHE + INTERNAL + "Intel x86 or x86_64 architecture machine?") + + foreach(_var + CPU_EXE_64BIT + CPU_EXE_32BIT + CPU_HAS_SSE + CPU_HAS_SSE2 + CPU_HAS_SSE3 + CPU_HAS_SSSE3 + CPU_HAS_SSE4_1 + CPU_HAS_SSE4_2) + set(${_var} ${${_var}} CACHE INTERNAL "") + endforeach() + + if(CPUDETAILS_VERBOSE) + foreach(_var + CPU_INTEL + CPU_EXE_64BIT + CPU_EXE_32BIT + CPU_HAS_SSE + CPU_HAS_SSE2 + CPU_HAS_SSE3 + CPU_HAS_SSSE3 + CPU_HAS_SSE4_1 + CPU_HAS_SSE4_2) + get_property(_help CACHE ${_var} PROPERTY HELPSTRING) + message(STATUS "[get_cpu_details] ${_var} (${_help}): ${${_var}}") + endforeach() + endif() endfunction() diff --git a/scripts/cmake/cmake/GetCompilerInfoString.cmake b/scripts/cmake/cmake/GetCompilerInfoString.cmake index 7bcd9d9dfb372323f0503c00b5cc0fc17708c58e..6b5da92323a44c0fa7a2d6a6be68ae7d29c06057 100644 --- a/scripts/cmake/cmake/GetCompilerInfoString.cmake +++ b/scripts/cmake/cmake/GetCompilerInfoString.cmake @@ -75,46 +75,46 @@ #============================================================================= if(__get_compiler_info_string) - return() + return() endif() set(__get_compiler_info_string YES) function(get_compiler_info_string _var) - set(_out) + set(_out) - if(CTEST_CMAKE_GENERATOR AND NOT CMAKE_GENERATOR) - # We're running in CTest - use that generator. - set(CMAKE_GENERATOR ${CTEST_CMAKE_GENERATOR}) - endif() + if(CTEST_CMAKE_GENERATOR AND NOT CMAKE_GENERATOR) + # We're running in CTest - use that generator. + set(CMAKE_GENERATOR ${CTEST_CMAKE_GENERATOR}) + endif() - if(NOT CMAKE_CXX_COMPILER) - # Also for use in CTest scripts - include(CMakeDetermineCXXCompiler) - endif() + if(NOT CMAKE_CXX_COMPILER) + # Also for use in CTest scripts + include(CMakeDetermineCXXCompiler) + endif() - if(MSVC) - # Parse version for Visual Studio - get_vs_short_version_string("${CMAKE_GENERATOR}" _verstring) - if(${CMAKE_GENERATOR} MATCHES "Win64") - set(_verstring "${_verstring}win64") - endif() + if(MSVC) + # Parse version for Visual Studio + get_vs_short_version_string("${CMAKE_GENERATOR}" _verstring) + if(${CMAKE_GENERATOR} MATCHES "Win64") + set(_verstring "${_verstring}win64") + endif() - elseif(CMAKE_COMPILER_IS_GNUCXX) - # Parse version for GCC - get_gcc_version(_gccver) - set(_verstring "gcc${_gccver}") + elseif(CMAKE_COMPILER_IS_GNUCXX) + # Parse version for GCC + get_gcc_version(_gccver) + set(_verstring "gcc${_gccver}") - else() - # Some other compiler we don't handle yet. - message(STATUS - "WARNING: Not GCC or MSVC, so we invented a messy compiler info string") - string(REGEX REPLACE " " "_" _verstring "${CMAKE_GENERATOR}") - set(_verstring "generator:${_verstring}") - endif() + else() + # Some other compiler we don't handle yet. + message(STATUS + "WARNING: Not GCC or MSVC, so we invented a messy compiler info string") + string(REGEX REPLACE " " "_" _verstring "${CMAKE_GENERATOR}") + set(_verstring "generator:${_verstring}") + endif() - # Return _verstring - set(${_var} "${_verstring}" PARENT_SCOPE) + # Return _verstring + set(${_var} "${_verstring}" PARENT_SCOPE) endfunction() ## Based on a function in FindBoost.cmake from CMake 2.8.0 @@ -124,21 +124,21 @@ endfunction() # version with a regex. # function(get_gcc_version _var) - exec_program(${CMAKE_CXX_COMPILER} - ARGS - ${CMAKE_CXX_COMPILER_ARG1} - -dumpversion - OUTPUT_VARIABLE - _compilerinfo_COMPILER_VERSION) + exec_program(${CMAKE_CXX_COMPILER} + ARGS + ${CMAKE_CXX_COMPILER_ARG1} + -dumpversion + OUTPUT_VARIABLE + _compilerinfo_COMPILER_VERSION) - string(REGEX - MATCH - "([.0-9]+)" - "\\1" - _compilerinfo_COMPILER_VERSION - "${_compilerinfo_COMPILER_VERSION}") + string(REGEX + MATCH + "([.0-9]+)" + "\\1" + _compilerinfo_COMPILER_VERSION + "${_compilerinfo_COMPILER_VERSION}") - set(${_var} ${_compilerinfo_COMPILER_VERSION} PARENT_SCOPE) + set(${_var} ${_compilerinfo_COMPILER_VERSION} PARENT_SCOPE) endfunction() ## Based on a function in CTest.cmake from CMake 2.8.0 @@ -148,34 +148,34 @@ endfunction() # like vs7 vs71 vs8 vs9 # function(get_vs_short_version_string _generator _var) - set(_ver_string) - if("${_generator}" MATCHES "Visual Studio") - string(REGEX - REPLACE - "Visual Studio ([0-9][0-9]?)($|.*)" - "\\1" - _vsver - "${_generator}") - if("${_generator}" MATCHES "Visual Studio 7 .NET 2003") - # handle the weird one - set(_ver_string "vs71") - else() - set(_ver_string "vs${_vsver}") - endif() - elseif(MSVC) - if(MSVC71) - set(_ver_string "vs71") - else() - foreach(_ver 6 7 8 9 10) - if(MSVC${_ver}0) - set(_ver_string "vs${_ver}") - break() - endif() - endforeach() - endif() - endif() + set(_ver_string) + if("${_generator}" MATCHES "Visual Studio") + string(REGEX + REPLACE + "Visual Studio ([0-9][0-9]?)($|.*)" + "\\1" + _vsver + "${_generator}") + if("${_generator}" MATCHES "Visual Studio 7 .NET 2003") + # handle the weird one + set(_ver_string "vs71") + else() + set(_ver_string "vs${_vsver}") + endif() + elseif(MSVC) + if(MSVC71) + set(_ver_string "vs71") + else() + foreach(_ver 6 7 8 9 10) + if(MSVC${_ver}0) + set(_ver_string "vs${_ver}") + break() + endif() + endforeach() + endif() + endif() - if(_ver_string) - set(${_var} ${_ver_string} PARENT_SCOPE) - endif() + if(_ver_string) + set(${_var} ${_ver_string} PARENT_SCOPE) + endif() endfunction() diff --git a/scripts/cmake/cmake/GetGitRevisionDescription.cmake b/scripts/cmake/cmake/GetGitRevisionDescription.cmake index 22317f49e20540ef8773e48a0b46fb33676c0298..1175e673a07b3c0bc1568f7971df5aad72ca6e98 100644 --- a/scripts/cmake/cmake/GetGitRevisionDescription.cmake +++ b/scripts/cmake/cmake/GetGitRevisionDescription.cmake @@ -31,7 +31,7 @@ # http://www.boost.org/LICENSE_1_0.txt) if(__get_git_revision_description) - return() + return() endif() set(__get_git_revision_description YES) @@ -40,102 +40,102 @@ set(__get_git_revision_description YES) get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH) function(get_git_head_revision _refspecvar _hashvar) - set(GIT_PARENT_DIR "${CMAKE_CURRENT_SOURCE_DIR}") - set(GIT_DIR "${GIT_PARENT_DIR}/.git") - while(NOT EXISTS "${GIT_DIR}") # .git dir not found, search parent directories - set(GIT_PREVIOUS_PARENT "${GIT_PARENT_DIR}") - get_filename_component(GIT_PARENT_DIR ${GIT_PARENT_DIR} PATH) - if(GIT_PARENT_DIR STREQUAL GIT_PREVIOUS_PARENT) - # We have reached the root directory, we are not in git - set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE) - set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE) - return() - endif() - set(GIT_DIR "${GIT_PARENT_DIR}/.git") - endwhile() - # check if this is a submodule - if(NOT IS_DIRECTORY ${GIT_DIR}) - file(READ ${GIT_DIR} submodule) - string(REGEX REPLACE "gitdir: (.*)\n$" "\\1" GIT_DIR_RELATIVE ${submodule}) - get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH) + set(GIT_PARENT_DIR "${CMAKE_CURRENT_SOURCE_DIR}") + set(GIT_DIR "${GIT_PARENT_DIR}/.git") + while(NOT EXISTS "${GIT_DIR}") # .git dir not found, search parent directories + set(GIT_PREVIOUS_PARENT "${GIT_PARENT_DIR}") + get_filename_component(GIT_PARENT_DIR ${GIT_PARENT_DIR} PATH) + if(GIT_PARENT_DIR STREQUAL GIT_PREVIOUS_PARENT) + # We have reached the root directory, we are not in git + set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE) + set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE) + return() + endif() + set(GIT_DIR "${GIT_PARENT_DIR}/.git") + endwhile() + # check if this is a submodule + if(NOT IS_DIRECTORY ${GIT_DIR}) + file(READ ${GIT_DIR} submodule) + string(REGEX REPLACE "gitdir: (.*)\n$" "\\1" GIT_DIR_RELATIVE ${submodule}) + get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH) - if (IS_ABSOLUTE ${GIT_DIR_RELATIVE}) - set(GIT_DIR ${GIT_DIR_RELATIVE}) - else() - get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} ABSOLUTE) - endif() + if (IS_ABSOLUTE ${GIT_DIR_RELATIVE}) + set(GIT_DIR ${GIT_DIR_RELATIVE}) + else() + get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} ABSOLUTE) + endif() - endif() - set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data") - if(NOT EXISTS "${GIT_DATA}") - file(MAKE_DIRECTORY "${GIT_DATA}") - endif() + endif() + set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data") + if(NOT EXISTS "${GIT_DATA}") + file(MAKE_DIRECTORY "${GIT_DATA}") + endif() - if(NOT EXISTS "${GIT_DIR}/HEAD") - return() - endif() - set(HEAD_FILE "${GIT_DATA}/HEAD") - configure_file("${GIT_DIR}/HEAD" "${HEAD_FILE}" COPYONLY) + if(NOT EXISTS "${GIT_DIR}/HEAD") + return() + endif() + set(HEAD_FILE "${GIT_DATA}/HEAD") + configure_file("${GIT_DIR}/HEAD" "${HEAD_FILE}" COPYONLY) - configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in" - "${GIT_DATA}/grabRef.cmake" - @ONLY) - include("${GIT_DATA}/grabRef.cmake") + configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in" + "${GIT_DATA}/grabRef.cmake" + @ONLY) + include("${GIT_DATA}/grabRef.cmake") - set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE) - set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE) + set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE) + set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE) endfunction() function(git_describe _var) - if(NOT GIT_FOUND) - find_package(Git QUIET) - endif() - get_git_head_revision(refspec hash) - if(NOT GIT_FOUND) - set(${_var} "GIT-NOTFOUND" PARENT_SCOPE) - return() - endif() - if(NOT hash) - set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE) - return() - endif() + if(NOT GIT_FOUND) + find_package(Git QUIET) + endif() + get_git_head_revision(refspec hash) + if(NOT GIT_FOUND) + set(${_var} "GIT-NOTFOUND" PARENT_SCOPE) + return() + endif() + if(NOT hash) + set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE) + return() + endif() - # TODO sanitize - #if((${ARGN}" MATCHES "&&") OR - # (ARGN MATCHES "||") OR - # (ARGN MATCHES "\\;")) - # message("Please report the following error to the project!") - # message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}") - #endif() + # TODO sanitize + #if((${ARGN}" MATCHES "&&") OR + # (ARGN MATCHES "||") OR + # (ARGN MATCHES "\\;")) + # message("Please report the following error to the project!") + # message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}") + #endif() - #message(STATUS "Arguments to execute_process: ${ARGN}") + #message(STATUS "Arguments to execute_process: ${ARGN}") - execute_process(COMMAND - ${GIT_EXECUTABLE} - describe - ${hash} - ${ARGN} - WORKING_DIRECTORY - "${CMAKE_SOURCE_DIR}" - RESULT_VARIABLE - res - OUTPUT_VARIABLE - out - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - if(NOT res EQUAL 0) - set(out "${out}-${res}-NOTFOUND") - endif() + execute_process(COMMAND + ${GIT_EXECUTABLE} + describe + ${hash} + ${ARGN} + WORKING_DIRECTORY + "${CMAKE_SOURCE_DIR}" + RESULT_VARIABLE + res + OUTPUT_VARIABLE + out + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT res EQUAL 0) + set(out "${out}-${res}-NOTFOUND") + endif() - set(${_var} "${out}" PARENT_SCOPE) + set(${_var} "${out}" PARENT_SCOPE) endfunction() function(git_get_exact_tag _var) - git_describe(out --exact-match ${ARGN}) - set(${_var} "${out}" PARENT_SCOPE) + git_describe(out --exact-match ${ARGN}) + set(${_var} "${out}" PARENT_SCOPE) endfunction() function(git_get_tag _var) - git_describe(out --tags ${ARGN}) - set(${_var} "${out}" PARENT_SCOPE) + git_describe(out --tags ${ARGN}) + set(${_var} "${out}" PARENT_SCOPE) endfunction() diff --git a/scripts/cmake/cmake/GetGitRevisionDescription.cmake.in b/scripts/cmake/cmake/GetGitRevisionDescription.cmake.in index b6285b12c9ba79fe2d718ab3c9c51c2c88b956a1..b6896f53f4368af167981f52eb4bd519564e593c 100644 --- a/scripts/cmake/cmake/GetGitRevisionDescription.cmake.in +++ b/scripts/cmake/cmake/GetGitRevisionDescription.cmake.in @@ -20,29 +20,29 @@ file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024) string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS) if(HEAD_CONTENTS MATCHES "ref") - # named branch - string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}") + # named branch + string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}") - set(GIT_D "@GIT_DIR@") - # to make secondary git working directory work - if(EXISTS "${GIT_D}/commondir") - file(READ "${GIT_D}/commondir" cdir_contents LIMIT 1024) - string(STRIP "${cdir_contents}" cdir_contents) - set(GIT_D "${GIT_D}/${cdir_contents}") - endif() + set(GIT_D "@GIT_DIR@") + # to make secondary git working directory work + if(EXISTS "${GIT_D}/commondir") + file(READ "${GIT_D}/commondir" cdir_contents LIMIT 1024) + string(STRIP "${cdir_contents}" cdir_contents) + set(GIT_D "${GIT_D}/${cdir_contents}") + endif() - if(EXISTS "${GIT_D}/${HEAD_REF}") - configure_file("${GIT_D}/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY) - elseif(EXISTS "${GIT_D}/logs/${HEAD_REF}") - configure_file("${GIT_D}/logs/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY) - set(HEAD_HASH "${HEAD_REF}") - endif() + if(EXISTS "${GIT_D}/${HEAD_REF}") + configure_file("${GIT_D}/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY) + elseif(EXISTS "${GIT_D}/logs/${HEAD_REF}") + configure_file("${GIT_D}/logs/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY) + set(HEAD_HASH "${HEAD_REF}") + endif() else() - # detached HEAD - configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY) + # detached HEAD + configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY) endif() if(NOT HEAD_HASH) - file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024) - string(STRIP "${HEAD_HASH}" HEAD_HASH) + file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024) + string(STRIP "${HEAD_HASH}" HEAD_HASH) endif() diff --git a/scripts/cmake/cmake/Licensing.cmake b/scripts/cmake/cmake/Licensing.cmake index dae8e8b5a781ab7d06d0dcbee718470bb211ad9c..957861cd480f9c28cd60952923195a084a857cc7 100644 --- a/scripts/cmake/cmake/Licensing.cmake +++ b/scripts/cmake/cmake/Licensing.cmake @@ -11,123 +11,123 @@ # http://www.boost.org/LICENSE_1_0.txt) define_property(GLOBAL - PROPERTY - PROPRIETARY_LICENSES - BRIEF_DOCS - "Text for proprietary licenses" - FULL_DOCS - "Text for proprietary licenses") + PROPERTY + PROPRIETARY_LICENSES + BRIEF_DOCS + "Text for proprietary licenses" + FULL_DOCS + "Text for proprietary licenses") define_property(GLOBAL - PROPERTY - SHAREALIKE_LICENSES - BRIEF_DOCS - "Text for share-alike licenses" - FULL_DOCS - "Text for share-alike licenses (e.g. GPL)") + PROPERTY + SHAREALIKE_LICENSES + BRIEF_DOCS + "Text for share-alike licenses" + FULL_DOCS + "Text for share-alike licenses (e.g. GPL)") define_property(GLOBAL - PROPERTY - PERMISSIVE_LICENSES - BRIEF_DOCS - "Text for permissive licenses" - FULL_DOCS - "Text for permissive licenses (e.g. BSD, MIT, X11)") + PROPERTY + PERMISSIVE_LICENSES + BRIEF_DOCS + "Text for permissive licenses" + FULL_DOCS + "Text for permissive licenses (e.g. BSD, MIT, X11)") define_property(GLOBAL - PROPERTY - PACKAGES_LICENSED - BRIEF_DOCS - "List of all packages whose licenses are registered here" - FULL_DOCS - "List of all packages whose licenses are registered here") + PROPERTY + PACKAGES_LICENSED + BRIEF_DOCS + "List of all packages whose licenses are registered here" + FULL_DOCS + "List of all packages whose licenses are registered here") define_property(GLOBAL - PROPERTY - REDISTRIBUTION_WARNINGS - BRIEF_DOCS - "Text for important redistribution warnings" - FULL_DOCS - "Text for important redistribution warnings, such as 'This is not redistributable!'") + PROPERTY + REDISTRIBUTION_WARNINGS + BRIEF_DOCS + "Text for important redistribution warnings" + FULL_DOCS + "Text for important redistribution warnings, such as 'This is not redistributable!'") function(add_license LICENSE_TYPE_PROPERTY package license) - get_property(def GLOBAL PROPERTY LICENSE_PACKAGE_${package} DEFINED) - if(NOT def) - define_property(GLOBAL - PROPERTY - LICENSE_PACKAGE_${package} - BRIEF_DOCS - "Flag to indicate the addition of the license for ${package}" - FULL_DOCS - "Flag to indicate the addition of the license for ${package}") - get_property(existing GLOBAL PROPERTY ${LICENSE_TYPE_PROPERTY}) - set_property(GLOBAL - PROPERTY - ${LICENSE_TYPE_PROPERTY} - "${existing}${license}\n\n") + get_property(def GLOBAL PROPERTY LICENSE_PACKAGE_${package} DEFINED) + if(NOT def) + define_property(GLOBAL + PROPERTY + LICENSE_PACKAGE_${package} + BRIEF_DOCS + "Flag to indicate the addition of the license for ${package}" + FULL_DOCS + "Flag to indicate the addition of the license for ${package}") + get_property(existing GLOBAL PROPERTY ${LICENSE_TYPE_PROPERTY}) + set_property(GLOBAL + PROPERTY + ${LICENSE_TYPE_PROPERTY} + "${existing}${license}\n\n") - if(ARGN) - define_property(GLOBAL - PROPERTY - LICENSE_EXTRAS_PACKAGE_${package} - BRIEF_DOCS - "Extras (like URL) for the license for ${package}" - FULL_DOCS - "Extras (like URL) for the license for ${package}") - set_property(GLOBAL - PROPERTY - LICENSE_EXTRAS_PACKAGE_${package} - "${ARGN}") - endif() + if(ARGN) + define_property(GLOBAL + PROPERTY + LICENSE_EXTRAS_PACKAGE_${package} + BRIEF_DOCS + "Extras (like URL) for the license for ${package}" + FULL_DOCS + "Extras (like URL) for the license for ${package}") + set_property(GLOBAL + PROPERTY + LICENSE_EXTRAS_PACKAGE_${package} + "${ARGN}") + endif() - get_property(allpackages GLOBAL PROPERTY PACKAGES_LICENSED) - list(APPEND allpackages "${package}") - set_property(GLOBAL PROPERTY PACKAGES_LICENSED "${allpackages}") - endif() + get_property(allpackages GLOBAL PROPERTY PACKAGES_LICENSED) + list(APPEND allpackages "${package}") + set_property(GLOBAL PROPERTY PACKAGES_LICENSED "${allpackages}") + endif() endfunction() function(add_proprietary_license package license) - add_license(PROPRIETARY_LICENSES "${package}" "${license}" ${ARGN}) + add_license(PROPRIETARY_LICENSES "${package}" "${license}" ${ARGN}) endfunction() function(add_sharealike_license package license) - add_license(SHAREALIKE_LICENSES "${package}" "${license}" ${ARGN}) + add_license(SHAREALIKE_LICENSES "${package}" "${license}" ${ARGN}) endfunction() function(add_permissive_license package license) - add_license(PERMISSIVE_LICENSES "${package}" "${license}" ${ARGN}) + add_license(PERMISSIVE_LICENSES "${package}" "${license}" ${ARGN}) endfunction() function(add_redistribution_warning warning) - get_property(existing GLOBAL PROPERTY REDISTRIBUTION_WARNINGS) - set_property(GLOBAL - PROPERTY - REDISTRIBUTION_WARNINGS - "${warning} ${existing}") + get_property(existing GLOBAL PROPERTY REDISTRIBUTION_WARNINGS) + set_property(GLOBAL + PROPERTY + REDISTRIBUTION_WARNINGS + "${warning} ${existing}") endfunction() function(configure_license_file input output) - get_property(PACKAGES_LICENSED GLOBAL PROPERTY PACKAGES_LICENSED) - if(PACKAGES_LICENSED) - list(SORT PACKAGES_LICENSED) - set(PACKAGES_LICENSED_BULLETED) - foreach(package ${PACKAGES_LICENSED}) - set(EXTRAS) - get_property(package_extras - GLOBAL - PROPERTY - "LICENSE_EXTRAS_PACKAGE_${package}") - if(package_extras) - set(EXTRAS " ${package_extras}") - endif() - set(PACKAGES_LICENSED_BULLETED - "${PACKAGES_LICENSED_BULLETED} * ${package}${EXTRAS}\n") - endforeach() - endif() - get_property(REDISTRIBUTION_WARNINGS - GLOBAL - PROPERTY - REDISTRIBUTION_WARNINGS) - get_property(PROPRIETARY_LICENSES GLOBAL PROPERTY PROPRIETARY_LICENSES) - get_property(SHAREALIKE_LICENSES GLOBAL PROPERTY SHAREALIKE_LICENSES) - get_property(PERMISSIVE_LICENSES GLOBAL PROPERTY PERMISSIVE_LICENSES) - configure_file("${input}" "${output}" ${ARGN}) + get_property(PACKAGES_LICENSED GLOBAL PROPERTY PACKAGES_LICENSED) + if(PACKAGES_LICENSED) + list(SORT PACKAGES_LICENSED) + set(PACKAGES_LICENSED_BULLETED) + foreach(package ${PACKAGES_LICENSED}) + set(EXTRAS) + get_property(package_extras + GLOBAL + PROPERTY + "LICENSE_EXTRAS_PACKAGE_${package}") + if(package_extras) + set(EXTRAS " ${package_extras}") + endif() + set(PACKAGES_LICENSED_BULLETED + "${PACKAGES_LICENSED_BULLETED} * ${package}${EXTRAS}\n") + endforeach() + endif() + get_property(REDISTRIBUTION_WARNINGS + GLOBAL + PROPERTY + REDISTRIBUTION_WARNINGS) + get_property(PROPRIETARY_LICENSES GLOBAL PROPERTY PROPRIETARY_LICENSES) + get_property(SHAREALIKE_LICENSES GLOBAL PROPERTY SHAREALIKE_LICENSES) + get_property(PERMISSIVE_LICENSES GLOBAL PROPERTY PERMISSIVE_LICENSES) + configure_file("${input}" "${output}" ${ARGN}) endfunction() diff --git a/scripts/cmake/cmake/ListCombinations.cmake b/scripts/cmake/cmake/ListCombinations.cmake index 4321f624a8d4ad8c2b4d459c3e2061ce99333172..bf12c50ddcfc85384ef6a5ac782296dec44865c9 100644 --- a/scripts/cmake/cmake/ListCombinations.cmake +++ b/scripts/cmake/cmake/ListCombinations.cmake @@ -16,38 +16,38 @@ # http://www.boost.org/LICENSE_1_0.txt) if(__list_combinations) - return() + return() endif() set(__list_combinations YES) function(list_combinations var) - # Parse arguments - set(_prefixes) - set(_suffixes) - set(_nowhere) - set(_curdest _nowhere) - foreach(_element ${ARGN}) - if("${_element}" STREQUAL "PREFIXES") - set(_curdest _prefixes) - elseif("${_element}" STREQUAL "SUFFIXES") - set(_curdest _suffixes) - else() - list(APPEND ${_curdest} "${_element}") - endif() - endforeach() - if(_nowhere) - message(STATUS "_prefixes ${_prefixes}") - message(STATUS "_prefixes ${_suffixes}") - message(STATUS "_prefixes ${_nowhere}") - message(FATAL_ERROR - "Syntax error in use of ${CMAKE_CURRENT_LIST_FILE}") - endif() + # Parse arguments + set(_prefixes) + set(_suffixes) + set(_nowhere) + set(_curdest _nowhere) + foreach(_element ${ARGN}) + if("${_element}" STREQUAL "PREFIXES") + set(_curdest _prefixes) + elseif("${_element}" STREQUAL "SUFFIXES") + set(_curdest _suffixes) + else() + list(APPEND ${_curdest} "${_element}") + endif() + endforeach() + if(_nowhere) + message(STATUS "_prefixes ${_prefixes}") + message(STATUS "_prefixes ${_suffixes}") + message(STATUS "_prefixes ${_nowhere}") + message(FATAL_ERROR + "Syntax error in use of ${CMAKE_CURRENT_LIST_FILE}") + endif() - foreach(_prefix ${_prefixes}) - foreach(_suffix ${_suffixes}) - list(APPEND _out "${_prefix}${_suffix}") - endforeach() - endforeach() + foreach(_prefix ${_prefixes}) + foreach(_suffix ${_suffixes}) + list(APPEND _out "${_prefix}${_suffix}") + endforeach() + endforeach() - set(${var} "${_out}" PARENT_SCOPE) + set(${var} "${_out}" PARENT_SCOPE) endfunction() diff --git a/scripts/cmake/cmake/ListFilter.cmake b/scripts/cmake/cmake/ListFilter.cmake index 037859520ba7d503aa2fce3dea7ccb09fb973047..360a63fbd5bac7aa1be6c998c3c0806677b4f33b 100644 --- a/scripts/cmake/cmake/ListFilter.cmake +++ b/scripts/cmake/cmake/ListFilter.cmake @@ -21,30 +21,30 @@ # http://www.boost.org/LICENSE_1_0.txt) if(__list_filter_out) - return() + return() endif() set(__list_filter_out YES) function(list_filter_out var regex) - set(_out) - foreach(_item ${ARGN}) - set(_re) - string(REGEX MATCH "${regex}" _re "${_item}") - if(NOT _re) - list(APPEND _out "${_item}") - endif() - endforeach() - set(${var} "${_out}" PARENT_SCOPE) + set(_out) + foreach(_item ${ARGN}) + set(_re) + string(REGEX MATCH "${regex}" _re "${_item}") + if(NOT _re) + list(APPEND _out "${_item}") + endif() + endforeach() + set(${var} "${_out}" PARENT_SCOPE) endfunction() function(list_filter var regex) - set(_out) - foreach(_item ${ARGN}) - set(_re) - string(REGEX MATCH "${regex}" _re "${_item}") - if(_re) - list(APPEND _out "${_item}") - endif() - endforeach() - set(${var} "${_out}" PARENT_SCOPE) + set(_out) + foreach(_item ${ARGN}) + set(_re) + string(REGEX MATCH "${regex}" _re "${_item}") + if(_re) + list(APPEND _out "${_item}") + endif() + endforeach() + set(${var} "${_out}" PARENT_SCOPE) endfunction() diff --git a/scripts/cmake/cmake/MSVCMultipleProcessCompile.cmake b/scripts/cmake/cmake/MSVCMultipleProcessCompile.cmake index aad4eabded62acc0e0ecc97c9c154103176f800d..fc4ed3b56a31ff3bb81ae368a7b69d6a9117a335 100644 --- a/scripts/cmake/cmake/MSVCMultipleProcessCompile.cmake +++ b/scripts/cmake/cmake/MSVCMultipleProcessCompile.cmake @@ -16,16 +16,16 @@ # http://www.boost.org/LICENSE_1_0.txt) if(MSVC AND NOT "${MSVC_VERSION}" LESS 1400) - # Only available in VS 2005 and newer - string(TOUPPER "${CMAKE_CONFIGURATION_TYPES}" _conftypesUC) - include(ListCombinations) - list_combinations(_varnames - PREFIXES - CMAKE_C_FLAGS_ - CMAKE_CXX_FLAGS_ - SUFFIXES - ${_conftypesUC}) - foreach(_var ${_varnames}) - set(${_var} "${${_var}} /MP") - endforeach() + # Only available in VS 2005 and newer + string(TOUPPER "${CMAKE_CONFIGURATION_TYPES}" _conftypesUC) + include(ListCombinations) + list_combinations(_varnames + PREFIXES + CMAKE_C_FLAGS_ + CMAKE_CXX_FLAGS_ + SUFFIXES + ${_conftypesUC}) + foreach(_var ${_varnames}) + set(${_var} "${${_var}} /MP") + endforeach() endif() diff --git a/scripts/cmake/cmake/MSVCStaticRuntime.cmake b/scripts/cmake/cmake/MSVCStaticRuntime.cmake index e4ceea6f92bf3a3741d8f7c25533aa2720465db8..637caede1d7e2f2fd646fe9362e7318cf4fe685e 100644 --- a/scripts/cmake/cmake/MSVCStaticRuntime.cmake +++ b/scripts/cmake/cmake/MSVCStaticRuntime.cmake @@ -16,18 +16,18 @@ # http://www.boost.org/LICENSE_1_0.txt) if(MSVC) - string(TOUPPER "${CMAKE_CONFIGURATION_TYPES}" _conftypesUC) - include(ListCombinations) - list_combinations(_varnames - PREFIXES - CMAKE_C_FLAGS_ - CMAKE_CXX_FLAGS_ - SUFFIXES - ${_conftypesUC}) - foreach(_var ${_varnames}) - string(REPLACE "/MDd" "/MTd" ${_var} "${${_var}}") - string(REPLACE "/MD" "/MT" ${_var} "${${_var}}") - endforeach() + string(TOUPPER "${CMAKE_CONFIGURATION_TYPES}" _conftypesUC) + include(ListCombinations) + list_combinations(_varnames + PREFIXES + CMAKE_C_FLAGS_ + CMAKE_CXX_FLAGS_ + SUFFIXES + ${_conftypesUC}) + foreach(_var ${_varnames}) + string(REPLACE "/MDd" "/MTd" ${_var} "${${_var}}") + string(REPLACE "/MD" "/MT" ${_var} "${${_var}}") + endforeach() endif() set(Boost_USE_STATIC_LIBS ON) diff --git a/scripts/cmake/cmake/MSVCVerboseLinking.cmake b/scripts/cmake/cmake/MSVCVerboseLinking.cmake index 84d4a227818313b8936649866407e2da206bef3b..bb2aff2a9847d8f6cec5e85c2051d05daf098522 100644 --- a/scripts/cmake/cmake/MSVCVerboseLinking.cmake +++ b/scripts/cmake/cmake/MSVCVerboseLinking.cmake @@ -19,30 +19,30 @@ # http://www.boost.org/LICENSE_1_0.txt) if(MSVC) - if(NOT DEFINED MSVC_LINK_REALLY_VERBOSE) - if(IN_DASHBOARD_SCRIPT) - set(MSVC_LINK_REALLY_VERBOSE TRUE) - else() - set(MSVC_LINK_REALLY_VERBOSE FALSE) - endif() - endif() - set(MSVC_LINK_REALLY_VERBOSE - "${MSVC_LINK_REALLY_VERBOSE}" - CACHE - BOOL - "Provide maximum linker messages?") - mark_as_advanced(MSVC_LINK_REALLY_VERBOSE) + if(NOT DEFINED MSVC_LINK_REALLY_VERBOSE) + if(IN_DASHBOARD_SCRIPT) + set(MSVC_LINK_REALLY_VERBOSE TRUE) + else() + set(MSVC_LINK_REALLY_VERBOSE FALSE) + endif() + endif() + set(MSVC_LINK_REALLY_VERBOSE + "${MSVC_LINK_REALLY_VERBOSE}" + CACHE + BOOL + "Provide maximum linker messages?") + mark_as_advanced(MSVC_LINK_REALLY_VERBOSE) - if(MSVC_LINK_REALLY_VERBOSE) - set(_verbose_flag "/VERBOSE") - else() - set(_verbose_flag "/VERBOSE:LIB") - endif() + if(MSVC_LINK_REALLY_VERBOSE) + set(_verbose_flag "/VERBOSE") + else() + set(_verbose_flag "/VERBOSE:LIB") + endif() - set(CMAKE_EXE_LINKER_FLAGS - "${CMAKE_EXE_LINKER_FLAGS} ${_verbose_flag}") - set(CMAKE_MODULE_LINKER_FLAGS - "${CMAKE_MODULE_LINKER_FLAGS} ${_verbose_flag}") - set(CMAKE_SHARED_LINKER_FLAGS - "${CMAKE_SHARED_LINKER_FLAGS} ${_verbose_flag}") + set(CMAKE_EXE_LINKER_FLAGS + "${CMAKE_EXE_LINKER_FLAGS} ${_verbose_flag}") + set(CMAKE_MODULE_LINKER_FLAGS + "${CMAKE_MODULE_LINKER_FLAGS} ${_verbose_flag}") + set(CMAKE_SHARED_LINKER_FLAGS + "${CMAKE_SHARED_LINKER_FLAGS} ${_verbose_flag}") endif() diff --git a/scripts/cmake/cmake/OptionRequires.cmake b/scripts/cmake/cmake/OptionRequires.cmake index 35ddf14cae50744bd0b034bba0e744b4d1e854b1..7dc614156ab1e11bfe6c1057bfba25a3df3d4c3e 100644 --- a/scripts/cmake/cmake/OptionRequires.cmake +++ b/scripts/cmake/cmake/OptionRequires.cmake @@ -13,40 +13,40 @@ # http://www.boost.org/LICENSE_1_0.txt) function(option_requires name desc) - set(args ${ARGN}) - - set(OFF_BY_DEFAULT true) - list(FIND args "OFF_BY_DEFAULT" _off_found) - if(NOT _off_found EQUAL -1) - list(REMOVE_AT args ${_off_found}) - set(OFF_BY_DEFAULT true) - endif() - - set(found) - set(missing) - foreach(var ${args}) - if(${var}) - list(APPEND found ${var}) - else() - list(APPEND missing ${var}) - endif() - endforeach() - - if(NOT missing) - set(OK TRUE) - else() - set(OK FALSE) - endif() - - set(default ${OK}) - if(OFF_BY_DEFAULT) - set(default OFF) - endif() - - option(${name} "${desc}" ${default}) - - if(${name} AND (NOT OK)) - message(FATAL_ERROR "${name} enabled but these dependencies were not valid: ${missing}") - endif() + set(args ${ARGN}) + + set(OFF_BY_DEFAULT true) + list(FIND args "OFF_BY_DEFAULT" _off_found) + if(NOT _off_found EQUAL -1) + list(REMOVE_AT args ${_off_found}) + set(OFF_BY_DEFAULT true) + endif() + + set(found) + set(missing) + foreach(var ${args}) + if(${var}) + list(APPEND found ${var}) + else() + list(APPEND missing ${var}) + endif() + endforeach() + + if(NOT missing) + set(OK TRUE) + else() + set(OK FALSE) + endif() + + set(default ${OK}) + if(OFF_BY_DEFAULT) + set(default OFF) + endif() + + option(${name} "${desc}" ${default}) + + if(${name} AND (NOT OK)) + message(FATAL_ERROR "${name} enabled but these dependencies were not valid: ${missing}") + endif() endfunction() diff --git a/scripts/cmake/cmake/PrintVariables.cmake b/scripts/cmake/cmake/PrintVariables.cmake index 38b8ec95555cd3a30461335b88c8250427d57c1e..3369613b84f8d40883251968f3779dd7e5aa4e62 100644 --- a/scripts/cmake/cmake/PrintVariables.cmake +++ b/scripts/cmake/cmake/PrintVariables.cmake @@ -1,6 +1,6 @@ # ------------------------- Begin Generic CMake Variable Logging ------------------ -# /* C++ comment style not allowed */ +# /* C++ comment style not allowed */ # if you are building in-source, this is the same as CMAKE_SOURCE_DIR, otherwise diff --git a/scripts/cmake/cmake/README.md b/scripts/cmake/cmake/README.md index e76e98343e8b8b27e5e9d30571e7c857a5163b92..28ca516f68c881f27817e3fd6a5f1199b6845a71 100644 --- a/scripts/cmake/cmake/README.md +++ b/scripts/cmake/cmake/README.md @@ -18,21 +18,21 @@ so you can easily use this repository for subtree merges, updating simply. For the initial checkout: - cd projectdir + cd projectdir - git subtree add --squash --prefix=cmake git@github.com:bilke/cmake-modules.git master + git subtree add --squash --prefix=cmake git@github.com:bilke/cmake-modules.git master For updates: - cd projectdir + cd projectdir - git subtree pull --squash --prefix=cmake git@github.com:bilke/cmake-modules.git master + git subtree pull --squash --prefix=cmake git@github.com:bilke/cmake-modules.git master For pushing to upstream: - cd projectdir + cd projectdir - git subtree push --prefix=cmake git@github.com:bilke/cmake-modules.git master + git subtree push --prefix=cmake git@github.com:bilke/cmake-modules.git master How to Use @@ -41,12 +41,12 @@ How to Use At the minimum, all you have to do is add a line like this near the top of your root CMakeLists.txt file (but not before your project() call): - list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") + list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") You might also want the extra automatic features/fixes included with the modules, for that, just add another line following the first one: - include(UseBackportedModules) + include(UseBackportedModules) Licenses diff --git a/scripts/cmake/cmake/ResetConfigurations.cmake b/scripts/cmake/cmake/ResetConfigurations.cmake index 8c13fdf669a8a77e554a717ff5e5e001d62e4ab8..1ac8116f0b5e6c6dd328d0d681688abeb7a585ff 100644 --- a/scripts/cmake/cmake/ResetConfigurations.cmake +++ b/scripts/cmake/cmake/ResetConfigurations.cmake @@ -16,16 +16,16 @@ if(__reset_configurations) - return() + return() endif() set(__reset_configurations YES) if(CMAKE_CONFIGURATION_TYPES) - set(CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Release;Debug") - set(CMAKE_CONFIGURATION_TYPES - "${CMAKE_CONFIGURATION_TYPES}" - CACHE - STRING - "Reset the configurations to what we need" - FORCE) + set(CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Release;Debug") + set(CMAKE_CONFIGURATION_TYPES + "${CMAKE_CONFIGURATION_TYPES}" + CACHE + STRING + "Reset the configurations to what we need" + FORCE) endif() diff --git a/scripts/cmake/cmake/SetDefaultBuildType.cmake b/scripts/cmake/cmake/SetDefaultBuildType.cmake index d7e6d987a04c86360638935b801e1a087cd1f90c..7a13be7e3ef4f7774634af45a6c9c2410e3a8429 100644 --- a/scripts/cmake/cmake/SetDefaultBuildType.cmake +++ b/scripts/cmake/cmake/SetDefaultBuildType.cmake @@ -16,16 +16,16 @@ if(__set_default_build_type) - return() + return() endif() set(__set_default_build_type YES) function(set_default_build_type _type) - #if(DEFINED CMAKE_BUILD_TYPE AND NOT CMAKE_BUILD_TYPE) - if(("${CMAKE_GENERATOR}" MATCHES "Makefiles" OR "${CMAKE_GENERATOR}" MATCHES "Ninja") AND NOT CMAKE_BUILD_TYPE) - if(NOT __DEFAULT_BUILD_TYPE_SET) - set(CMAKE_BUILD_TYPE "${_type}" CACHE STRING "" FORCE) - set(__DEFAULT_BUILD_TYPE_SET YES CACHE INTERNAL "") - endif() - endif() + #if(DEFINED CMAKE_BUILD_TYPE AND NOT CMAKE_BUILD_TYPE) + if(("${CMAKE_GENERATOR}" MATCHES "Makefiles" OR "${CMAKE_GENERATOR}" MATCHES "Ninja") AND NOT CMAKE_BUILD_TYPE) + if(NOT __DEFAULT_BUILD_TYPE_SET) + set(CMAKE_BUILD_TYPE "${_type}" CACHE STRING "" FORCE) + set(__DEFAULT_BUILD_TYPE_SET YES CACHE INTERNAL "") + endif() + endif() endfunction() diff --git a/scripts/cmake/cmake/UseBackportedModules.cmake b/scripts/cmake/cmake/UseBackportedModules.cmake index 7ad3baac330a151ea08f1eff172e52f39c72752c..f795ef7713cc578db330e3085fc6ee6759128fcf 100644 --- a/scripts/cmake/cmake/UseBackportedModules.cmake +++ b/scripts/cmake/cmake/UseBackportedModules.cmake @@ -23,11 +23,11 @@ # (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) -if(NOT CMAKE_VERSION) # defined in >=2.6.3 - set(_cmver - "${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}") +if(NOT CMAKE_VERSION) # defined in >=2.6.3 + set(_cmver + "${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}") else() - set(_cmver "${CMAKE_VERSION}") + set(_cmver "${CMAKE_VERSION}") endif() include(CleanDirectoryList) @@ -39,76 +39,76 @@ get_filename_component(_moddir ${CMAKE_CURRENT_LIST_FILE} PATH) file(GLOB _globbed "${_moddir}/cmake-*-modules") if(USE_BACKPORTED_MODULES_VERBOSE) - message(STATUS - "UseBackportedModules: Detected use of CMake version ${_cmver}") - message(STATUS "Checking these base directories: ${_globbed}") + message(STATUS + "UseBackportedModules: Detected use of CMake version ${_cmver}") + message(STATUS "Checking these base directories: ${_globbed}") endif() foreach(_dir ${_globbed}) - string(REGEX - MATCH - "cmake-[0-9].[0-9].[0-9]-modules" - _dirname - "${_dir}") - string(REGEX - REPLACE - "cmake-([0-9].[0-9].[0-9])-modules" - "\\1" - _ver - "${_dirname}") - string(REGEX - REPLACE - "cmake-([0-9]).([0-9]).([0-9])-modules" - "\\1_\\2_\\3" - _ver_clean - "${_dirname}") + string(REGEX + MATCH + "cmake-[0-9].[0-9].[0-9]-modules" + _dirname + "${_dir}") + string(REGEX + REPLACE + "cmake-([0-9].[0-9].[0-9])-modules" + "\\1" + _ver + "${_dirname}") + string(REGEX + REPLACE + "cmake-([0-9]).([0-9]).([0-9])-modules" + "\\1_\\2_\\3" + _ver_clean + "${_dirname}") - if(USE_BACKPORTED_MODULES_VERBOSE) - message(STATUS "${_dir}: ${_ver} ${_ver_clean}") - endif() + if(USE_BACKPORTED_MODULES_VERBOSE) + message(STATUS "${_dir}: ${_ver} ${_ver_clean}") + endif() - if("${_cmver}" VERSION_LESS "${_ver}") - list(APPEND _upgradever "${_ver_clean}") - file(GLOB_RECURSE _modules "${_dir}/*.cmake") + if("${_cmver}" VERSION_LESS "${_ver}") + list(APPEND _upgradever "${_ver_clean}") + file(GLOB_RECURSE _modules "${_dir}/*.cmake") - foreach(_mod ${_modules}) - get_filename_component(_path "${_mod}" PATH) - list(APPEND _paths_${_ver_clean} "${_path}") - endforeach() + foreach(_mod ${_modules}) + get_filename_component(_path "${_mod}" PATH) + list(APPEND _paths_${_ver_clean} "${_path}") + endforeach() - endif() + endif() endforeach() # Autoinclude files from oldest version to newest version if(_upgradever) - set(_save_cmake_module_path ${CMAKE_MODULE_PATH}) - list(REMOVE_DUPLICATES _upgradever) - list(SORT _upgradever) - foreach(_ver_clean ${_upgradever}) - clean_directory_list(_paths_${_ver_clean}) - foreach(_dir ${_paths_${_ver_clean}}) - set(CMAKE_MODULE_PATH ${_dir} ${_save_cmake_module_path}) - include("${_dir}/autoinclude.cmake" OPTIONAL RESULT_VARIABLE _result) - if(USE_BACKPORTED_MODULES_VERBOSE) - message(STATUS "${_dir} - Autoincluded: ${_result}") - endif() - endforeach() - endforeach() - set(CMAKE_MODULE_PATH ${_save_cmake_module_path}) + set(_save_cmake_module_path ${CMAKE_MODULE_PATH}) + list(REMOVE_DUPLICATES _upgradever) + list(SORT _upgradever) + foreach(_ver_clean ${_upgradever}) + clean_directory_list(_paths_${_ver_clean}) + foreach(_dir ${_paths_${_ver_clean}}) + set(CMAKE_MODULE_PATH ${_dir} ${_save_cmake_module_path}) + include("${_dir}/autoinclude.cmake" OPTIONAL RESULT_VARIABLE _result) + if(USE_BACKPORTED_MODULES_VERBOSE) + message(STATUS "${_dir} - Autoincluded: ${_result}") + endif() + endforeach() + endforeach() + set(CMAKE_MODULE_PATH ${_save_cmake_module_path}) endif() # Add the module path from newest version to oldest version set(_added_module_path) if(_upgradever) - list(REVERSE _upgradever) - foreach(_ver_clean ${_upgradever}) - list(APPEND _added_module_path ${_paths_${_ver_clean}}) - endforeach() + list(REVERSE _upgradever) + foreach(_ver_clean ${_upgradever}) + list(APPEND _added_module_path ${_paths_${_ver_clean}}) + endforeach() endif() list(APPEND CMAKE_MODULE_PATH ${_added_module_path}) if(USE_BACKPORTED_MODULES_VERBOSE) - message(STATUS "New module path: ${CMAKE_MODULE_PATH}") + message(STATUS "New module path: ${CMAKE_MODULE_PATH}") endif() diff --git a/scripts/cmake/cmake/WarningDev.cmake b/scripts/cmake/cmake/WarningDev.cmake index 851b5f5e88c9eec3be5c5b65b4902f1b78e7e3d2..4f2a8d35808f06ce6a09e27e63efd1e306c2f5df 100644 --- a/scripts/cmake/cmake/WarningDev.cmake +++ b/scripts/cmake/cmake/WarningDev.cmake @@ -13,12 +13,12 @@ # http://www.boost.org/LICENSE_1_0.txt) function(warning_dev _yourmsg) - if("1.${CMAKE_VERSION}" VERSION_LESS "1.2.8.0") - # CMake version <2.8.0 - message(STATUS - "The following is a developer warning - end users may ignore it") - message(STATUS "Dev Warning: ${_yourmsg}") - else() - message(AUTHOR_WARNING "${_yourmsg}") - endif() + if("1.${CMAKE_VERSION}" VERSION_LESS "1.2.8.0") + # CMake version <2.8.0 + message(STATUS + "The following is a developer warning - end users may ignore it") + message(STATUS "Dev Warning: ${_yourmsg}") + else() + message(AUTHOR_WARNING "${_yourmsg}") + endif() endfunction() diff --git a/scripts/cmake/cmake/package-licensing/Boost.cmake b/scripts/cmake/cmake/package-licensing/Boost.cmake index 22e7d86ee31947beceefdde935138dd0c2316d89..8701ead7bb746850333adca9af3767ffe36203de 100644 --- a/scripts/cmake/cmake/package-licensing/Boost.cmake +++ b/scripts/cmake/cmake/package-licensing/Boost.cmake @@ -9,5 +9,5 @@ # http://www.boost.org/LICENSE_1_0.txt) add_permissive_license(Boost - "Based in part on the work of the Boost project. Boost is distributed under the Boost Software License, Version 1.0. See copy at http://www.boost.org/LICENSE_1_0.txt" - "<http://www.boost.org>") + "Based in part on the work of the Boost project. Boost is distributed under the Boost Software License, Version 1.0. See copy at http://www.boost.org/LICENSE_1_0.txt" + "<http://www.boost.org>") diff --git a/scripts/cmake/cmake/package-licensing/Eigen.cmake b/scripts/cmake/cmake/package-licensing/Eigen.cmake index 538d787ed146f4ca73fa86cd1046f7c67cb16d8d..ce6fcb326d135217ff44fd805c4070c4db850af2 100644 --- a/scripts/cmake/cmake/package-licensing/Eigen.cmake +++ b/scripts/cmake/cmake/package-licensing/Eigen.cmake @@ -9,5 +9,5 @@ # http://www.boost.org/LICENSE_1_0.txt) add_permissive_license(Eigen - "Based in part on the work of the Eigen project. Eigen is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.\nEigen is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details." - "<http://eigen.tuxfamily.org>") + "Based in part on the work of the Eigen project. Eigen is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.\nEigen is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details." + "<http://eigen.tuxfamily.org>") diff --git a/scripts/cmake/cmake/package-licensing/Qt-LGPL.cmake b/scripts/cmake/cmake/package-licensing/Qt-LGPL.cmake index db4d78d32b794a18b4d825bf36058da8b46533ee..f94557c60a424c945e56e830492d0566aa4090c2 100644 --- a/scripts/cmake/cmake/package-licensing/Qt-LGPL.cmake +++ b/scripts/cmake/cmake/package-licensing/Qt-LGPL.cmake @@ -9,5 +9,5 @@ # http://www.boost.org/LICENSE_1_0.txt) add_permissive_license(Qt - "Based in part on the work of the Qt GUI Toolkit project. The Qt GUI Toolkit is Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). You may use, distribute and copy the Qt GUI Toolkit under the terms of GNU Lesser General Public License version 2.1, as published by the Free Software Foundation." - "<http://qt.nokia.com/>") + "Based in part on the work of the Qt GUI Toolkit project. The Qt GUI Toolkit is Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). You may use, distribute and copy the Qt GUI Toolkit under the terms of GNU Lesser General Public License version 2.1, as published by the Free Software Foundation." + "<http://qt.nokia.com/>") diff --git a/scripts/cmake/packaging/ArchiveTestdata.cmake b/scripts/cmake/packaging/ArchiveTestdata.cmake index b876fcfbaee929672deb30f8c1ac38c15fc1d426..3632122192b7b579e821c049a72765ed46fef54c 100644 --- a/scripts/cmake/packaging/ArchiveTestdata.cmake +++ b/scripts/cmake/packaging/ArchiveTestdata.cmake @@ -1,18 +1,18 @@ if(APPLE) - find_program(REALPATH_TOOL_PATH grealpath) + find_program(REALPATH_TOOL_PATH grealpath) elseif(UNIX) - find_program(REALPATH_TOOL_PATH realpath) + find_program(REALPATH_TOOL_PATH realpath) else() - return() + return() endif() find_program(ZIP_TOOL_PATH zip) if(NOT REALPATH_TOOL_PATH OR NOT ZIP_TOOL_PATH) - return() + return() endif() add_custom_target(archive-data - bash ${CMAKE_SOURCE_DIR}/scripts/packaging/archive-testdata.sh - DEPENDS data - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - COMMENT "Packaging testdata to ogs6-data.tar.gz and ogs6-data.zip" VERBATIM + bash ${CMAKE_SOURCE_DIR}/scripts/packaging/archive-testdata.sh + DEPENDS data + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + COMMENT "Packaging testdata to ogs6-data.tar.gz and ogs6-data.zip" VERBATIM ) diff --git a/scripts/cmake/packaging/InstallDependencies.cmake b/scripts/cmake/packaging/InstallDependencies.cmake index 56621250cf42d3c9ad36d054fbab3f66e3ce749a..5416c232703831176ba4e00aba8bc48831ebb4ba 100644 --- a/scripts/cmake/packaging/InstallDependencies.cmake +++ b/scripts/cmake/packaging/InstallDependencies.cmake @@ -1,31 +1,31 @@ macro(InstallDependencies TARGET INSTALL_COMPONENT) - if(MSVC) - set(TARGET_EXE ${EXECUTABLE_OUTPUT_PATH}/Release/${TARGET}.exe) - else() - set(TARGET_EXE ${EXECUTABLE_OUTPUT_PATH}/${TARGET}) - endif() + if(MSVC) + set(TARGET_EXE ${EXECUTABLE_OUTPUT_PATH}/Release/${TARGET}.exe) + else() + set(TARGET_EXE ${EXECUTABLE_OUTPUT_PATH}/${TARGET}) + endif() - if(EXISTS ${TARGET_EXE}) - include(GetPrerequisites) - # arg3: exclude system, arg4: recursive - get_prerequisites(${TARGET_EXE} TARGET_DEPENDENCIES 1 1 "" "/usr/local/lib") - message(STATUS "${TARGET_EXE} dependencies:") - foreach(DEPENDENCY ${TARGET_DEPENDENCIES}) - if(NOT ${DEPENDENCY} MATCHES "@loader_path") - gp_resolve_item("${TARGET_EXE}" "${DEPENDENCY}" "" "" DEPENDENCY_PATH) - get_filename_component(RESOLVED_DEPENDENCY_PATH "${DEPENDENCY_PATH}" REALPATH) - string(TOLOWER ${DEPENDENCY} DEPENDENCY_LOWER) - set(DEPENDENCY_PATHS ${DEPENDENCY_PATHS} ${RESOLVED_DEPENDENCY_PATH}) - message(" ${RESOLVED_DEPENDENCY_PATH}") - endif() - endforeach() - install(FILES ${DEPENDENCY_PATHS} DESTINATION bin COMPONENT ${INSTALL_COMPONENT}) - add_custom_command(TARGET ${TARGET} POST_BUILD COMMAND ;) - else() - # Run CMake after target was built to run GetPrerequisites on executable - add_custom_command(TARGET ${TARGET} POST_BUILD COMMAND ${CMAKE_COMMAND} - ARGS ${CMAKE_SOURCE_DIR} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} VERBATIM) - endif() + if(EXISTS ${TARGET_EXE}) + include(GetPrerequisites) + # arg3: exclude system, arg4: recursive + get_prerequisites(${TARGET_EXE} TARGET_DEPENDENCIES 1 1 "" "/usr/local/lib") + message(STATUS "${TARGET_EXE} dependencies:") + foreach(DEPENDENCY ${TARGET_DEPENDENCIES}) + if(NOT ${DEPENDENCY} MATCHES "@loader_path") + gp_resolve_item("${TARGET_EXE}" "${DEPENDENCY}" "" "" DEPENDENCY_PATH) + get_filename_component(RESOLVED_DEPENDENCY_PATH "${DEPENDENCY_PATH}" REALPATH) + string(TOLOWER ${DEPENDENCY} DEPENDENCY_LOWER) + set(DEPENDENCY_PATHS ${DEPENDENCY_PATHS} ${RESOLVED_DEPENDENCY_PATH}) + message(" ${RESOLVED_DEPENDENCY_PATH}") + endif() + endforeach() + install(FILES ${DEPENDENCY_PATHS} DESTINATION bin COMPONENT ${INSTALL_COMPONENT}) + add_custom_command(TARGET ${TARGET} POST_BUILD COMMAND ;) + else() + # Run CMake after target was built to run GetPrerequisites on executable + add_custom_command(TARGET ${TARGET} POST_BUILD COMMAND ${CMAKE_COMMAND} + ARGS ${CMAKE_SOURCE_DIR} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} VERBATIM) + endif() endmacro() diff --git a/scripts/cmake/packaging/Pack.cmake b/scripts/cmake/packaging/Pack.cmake index e0b7a274b9cb215b8ef981ddf7b6eb79bb7fad81..415dadf360096710d170780a96761709832e93c9 100644 --- a/scripts/cmake/packaging/Pack.cmake +++ b/scripts/cmake/packaging/Pack.cmake @@ -1,6 +1,6 @@ if(IS_SUBPROJECT) - include (CPack) - return() + include (CPack) + return() endif() include(packaging/PackagingMacros) @@ -15,76 +15,76 @@ set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.txt") set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md") # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_SOURCE_DIR}/README.md") if(APPLE) - string(REGEX MATCH "(^[0-9]*)" TMP ${CMAKE_SYSTEM_VERSION}) - math(EXPR OSX_VERSION_MINOR "${CMAKE_MATCH_1} - 4") - set(CPACK_PACKAGE_FILE_NAME - "ogs-${OGS_VERSION}-OSX-10.${OSX_VERSION_MINOR}-x${BITS}") - set(CPACK_SOURCE_PACKAGE_FILE_NAME ${CPACK_PACKAGE_FILE_NAME}) + string(REGEX MATCH "(^[0-9]*)" TMP ${CMAKE_SYSTEM_VERSION}) + math(EXPR OSX_VERSION_MINOR "${CMAKE_MATCH_1} - 4") + set(CPACK_PACKAGE_FILE_NAME + "ogs-${OGS_VERSION}-OSX-10.${OSX_VERSION_MINOR}-x${BITS}") + set(CPACK_SOURCE_PACKAGE_FILE_NAME ${CPACK_PACKAGE_FILE_NAME}) else() - set(CPACK_PACKAGE_FILE_NAME "ogs-${OGS_VERSION}-${CMAKE_SYSTEM}-x${BITS}") + set(CPACK_PACKAGE_FILE_NAME "ogs-${OGS_VERSION}-${CMAKE_SYSTEM}-x${BITS}") endif() if (WIN32) - include (packaging/PackagingWin) + include (packaging/PackagingWin) endif() if(UNIX) - include (packaging/PackagingLinux) + include (packaging/PackagingLinux) endif() if(APPLE) - include (packaging/PackagingMac) + include (packaging/PackagingMac) endif() # Download additional content if(OGS_DOWNLOAD_ADDITIONAL_CONTENT) - DownloadAdditionalFilesForPackaging( - URLS http://docs.opengeosys.org/assets/releases/head/docs/DataExplorer-Manual.pdf - # http://docs.opengeosys.org/assets/releases/head/docs/User-Manual.pdf - # http://docs.opengeosys.org/assets/releases/head/docs/Theory-Manual.pdf - DESTINATION docs - PACKAGE_GROUP ogs_docs - ) + DownloadAdditionalFilesForPackaging( + URLS http://docs.opengeosys.org/assets/releases/head/docs/DataExplorer-Manual.pdf + # http://docs.opengeosys.org/assets/releases/head/docs/User-Manual.pdf + # http://docs.opengeosys.org/assets/releases/head/docs/Theory-Manual.pdf + DESTINATION docs + PACKAGE_GROUP ogs_docs + ) - if(WIN32) - DownloadAdditionalFilesForPackaging( - URLS http://docs.opengeosys.org/assets/releases/head/win/OGSFileConverter.exe - DESTINATION bin - EXECUTABLE TRUE - PACKAGE_GROUP ogs_converter - ) - endif() - if(APPLE) - DownloadAdditionalFilesForPackaging( - URLS http://docs.opengeosys.org/assets/releases/head/mac/OGSFileConverter - DESTINATION bin - EXECUTABLE TRUE - PACKAGE_GROUP ogs_converter - ) - endif() + if(WIN32) + DownloadAdditionalFilesForPackaging( + URLS http://docs.opengeosys.org/assets/releases/head/win/OGSFileConverter.exe + DESTINATION bin + EXECUTABLE TRUE + PACKAGE_GROUP ogs_converter + ) + endif() + if(APPLE) + DownloadAdditionalFilesForPackaging( + URLS http://docs.opengeosys.org/assets/releases/head/mac/OGSFileConverter + DESTINATION bin + EXECUTABLE TRUE + PACKAGE_GROUP ogs_converter + ) + endif() endif() include (CPack) cpack_add_component_group(Applications - DISPLAY_NAME Applications - DESCRIPTION "OpenGeoSys applications" - EXPANDED - BOLD_TITLE + DISPLAY_NAME Applications + DESCRIPTION "OpenGeoSys applications" + EXPANDED + BOLD_TITLE ) cpack_add_component_group(Utilities - DISPLAY_NAME Utilities - DESCRIPTION "OpenGeoSys utilities" - EXPANDED + DISPLAY_NAME Utilities + DESCRIPTION "OpenGeoSys utilities" + EXPANDED ) cpack_add_component(ogs_extras - DISPLAY_NAME "Extra tools" - DESCRIPTION "Miscellaneous tools." - GROUP Utilities + DISPLAY_NAME "Extra tools" + DESCRIPTION "Miscellaneous tools." + GROUP Utilities ) cpack_add_component(ogs_docs - DISPLAY_NAME "Documentation" - DESCRIPTION "PDF documentation." - GROUP Utilities + DISPLAY_NAME "Documentation" + DESCRIPTION "PDF documentation." + GROUP Utilities ) diff --git a/scripts/cmake/packaging/PackagingMacros.cmake b/scripts/cmake/packaging/PackagingMacros.cmake index 854ae353376339d6faa937d14f95b6a84db46d75..3569f149fd11f343484a412d0f5a5d92cb1b1325 100644 --- a/scripts/cmake/packaging/PackagingMacros.cmake +++ b/scripts/cmake/packaging/PackagingMacros.cmake @@ -1,21 +1,21 @@ # From http://www.cmake.org/pipermail/cmake/2012-September/052098.html macro(ConfigureMacOSXBundle TARGET_NAME ICON_FILE_PATH) - get_filename_component(ICON_FILE_NAME "${ICON_FILE_PATH}" NAME) + get_filename_component(ICON_FILE_NAME "${ICON_FILE_PATH}" NAME) - set_target_properties(${TARGET_NAME} PROPERTIES - MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME} ${OGS_VERSION} - ${TARGET_NAME}" - MACOSX_BUNDLE_ICON_FILE ${ICON_FILE_NAME} - MACOSX_BUNDLE_GUI_IDENTIFIER "org.opengeosys" - MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME}-${TARGET_NAME} - MACOSX_BUNDLE_SHORT_VERSION_STRING ${OGS_VERSION} - MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_NAME} ${OGS_VERSION}" - MACOSX_BUNDLE_BUNDLE_VERSION ${OGS_VERSION} - MACOSX_BUNDLE_COPYRIGHT "Copyright (c) 2012-2016, OpenGeoSys Community. All Rights Reserved." - ) + set_target_properties(${TARGET_NAME} PROPERTIES + MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME} ${OGS_VERSION} - ${TARGET_NAME}" + MACOSX_BUNDLE_ICON_FILE ${ICON_FILE_NAME} + MACOSX_BUNDLE_GUI_IDENTIFIER "org.opengeosys" + MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME}-${TARGET_NAME} + MACOSX_BUNDLE_SHORT_VERSION_STRING ${OGS_VERSION} + MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_NAME} ${OGS_VERSION}" + MACOSX_BUNDLE_BUNDLE_VERSION ${OGS_VERSION} + MACOSX_BUNDLE_COPYRIGHT "Copyright (c) 2012-2016, OpenGeoSys Community. All Rights Reserved." + ) - set_source_files_properties(${ICON_FILE_PATH} PROPERTIES - MACOSX_PACKAGE_LOCATION Resources) + set_source_files_properties(${ICON_FILE_PATH} PROPERTIES + MACOSX_PACKAGE_LOCATION Resources) endmacro() # @@ -32,33 +32,33 @@ endmacro() # ) function(DownloadAdditionalFilesForPackaging) - # parse args - set(options NONE) - set(oneValueArgs DESTINATION EXECUTABLE PACKAGE_GROUP) - set(multiValueArgs URLS) - cmake_parse_arguments(DownloadAdditionalFilesForPackaging - "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + # parse args + set(options NONE) + set(oneValueArgs DESTINATION EXECUTABLE PACKAGE_GROUP) + set(multiValueArgs URLS) + cmake_parse_arguments(DownloadAdditionalFilesForPackaging + "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - # set defaults - if(NOT DownloadAdditionalFilesForPackaging_EXECUTABLE) - set(DownloadAdditionalFilesForPackaging_EXECUTABLE FALSE) - endif() - if(NOT DownloadAdditionalFilesForPackaging_PACKAGE_GROUP) - set(DownloadAdditionalFilesForPackaging_PACKAGE_GROUP ogs_extras) - endif() + # set defaults + if(NOT DownloadAdditionalFilesForPackaging_EXECUTABLE) + set(DownloadAdditionalFilesForPackaging_EXECUTABLE FALSE) + endif() + if(NOT DownloadAdditionalFilesForPackaging_PACKAGE_GROUP) + set(DownloadAdditionalFilesForPackaging_PACKAGE_GROUP ogs_extras) + endif() - foreach(URL ${DownloadAdditionalFilesForPackaging_URLS}) - get_filename_component(FILE_NAME ${URL} NAME) - get_filename_component(FILE_EXTENSION ${URL} EXT) - set(FILE_PATH ${CMAKE_BINARY_DIR}/AdditionalContent/${FILE_NAME}) - if(NOT EXISTS ${FILE_PATH}) - file(DOWNLOAD ${URL} ${FILE_PATH} SHOW_PROGRESS) - endif() - if(EXE) - install(PROGRAMS ${FILE_PATH} DESTINATION ${DownloadAdditionalFilesForPackaging_DESTINATION} COMPONENT ${DownloadAdditionalFilesForPackaging_PACKAGE_GROUP}) - else() - install(FILES ${FILE_PATH} DESTINATION ${DownloadAdditionalFilesForPackaging_DESTINATION} COMPONENT ${DownloadAdditionalFilesForPackaging_PACKAGE_GROUP}) - endif() - endforeach() + foreach(URL ${DownloadAdditionalFilesForPackaging_URLS}) + get_filename_component(FILE_NAME ${URL} NAME) + get_filename_component(FILE_EXTENSION ${URL} EXT) + set(FILE_PATH ${CMAKE_BINARY_DIR}/AdditionalContent/${FILE_NAME}) + if(NOT EXISTS ${FILE_PATH}) + file(DOWNLOAD ${URL} ${FILE_PATH} SHOW_PROGRESS) + endif() + if(EXE) + install(PROGRAMS ${FILE_PATH} DESTINATION ${DownloadAdditionalFilesForPackaging_DESTINATION} COMPONENT ${DownloadAdditionalFilesForPackaging_PACKAGE_GROUP}) + else() + install(FILES ${FILE_PATH} DESTINATION ${DownloadAdditionalFilesForPackaging_DESTINATION} COMPONENT ${DownloadAdditionalFilesForPackaging_PACKAGE_GROUP}) + endif() + endforeach() endfunction() diff --git a/scripts/cmake/packaging/PackagingWin.cmake b/scripts/cmake/packaging/PackagingWin.cmake index 346d06c40e6ee30c7b1c4e2359e48da3694ca9f6..0a9195d07a31d37b870b05895333c957f81d7f11 100644 --- a/scripts/cmake/packaging/PackagingWin.cmake +++ b/scripts/cmake/packaging/PackagingWin.cmake @@ -2,7 +2,7 @@ set(CMAKE_INSTALL_OPENMP_LIBRARIES ON) include(InstallRequiredSystemLibraries) set(CPACK_GENERATOR ZIP) if(NOT CMAKE_CROSSCOMPILING) - set(CPACK_GENERATOR NSIS ZIP) + set(CPACK_GENERATOR NSIS ZIP) endif() set(CPACK_NSIS_MUI_ICON ${CMAKE_SOURCE_DIR}/scripts/packaging/ogs-de-icon.ico) file(TO_NATIVE_PATH "${CMAKE_SOURCE_DIR}/Documentation/OpenGeoSys-Logo.bmp" BACKGROUND_IMAGE) @@ -14,10 +14,10 @@ set(CPACK_NSIS_MODIFY_PATH OFF) set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON) set(CPACK_NSIS_HELP_LINK "http://docs.opengeosys.org/assets/files/Documentation/User_Manual.pdf") set(CPACK_NSIS_MENU_LINKS - "bin" "Executables folder" - "http://www.opengeosys.org" "Website" - "https://github.com/ufz/ogs" "Source code on GitHub" + "bin" "Executables folder" + "http://www.opengeosys.org" "Website" + "https://github.com/ufz/ogs" "Source code on GitHub" ) if(OGS_DOWNLOAD_ADDITIONAL_CONTENT) - set(CPACK_NSIS_MENU_LINKS ${CPACK_NSIS_MENU_LINKS} "docs" "Documentation folder") + set(CPACK_NSIS_MENU_LINKS ${CPACK_NSIS_MENU_LINKS} "docs" "Documentation folder") endif() diff --git a/scripts/cmake/test/AddTest.cmake b/scripts/cmake/test/AddTest.cmake index 66a9aa3175a085c0a9479b7a3dbab05e8ccac87e..ddcba06b317d087a617e73425de42f59cd29674a 100644 --- a/scripts/cmake/test/AddTest.cmake +++ b/scripts/cmake/test/AddTest.cmake @@ -32,179 +32,179 @@ function (AddTest) - # parse arguments - set(options NONE) - set(oneValueArgs EXECUTABLE PATH NAME WRAPPER TESTER) - set(multiValueArgs EXECUTABLE_ARGS DATA DIFF_DATA WRAPPER_ARGS) - cmake_parse_arguments(AddTest "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - - set(AddTest_SOURCE_PATH "${Data_SOURCE_DIR}/${AddTest_PATH}") - set(AddTest_BINARY_PATH "${Data_BINARY_DIR}/${AddTest_PATH}") - file(MAKE_DIRECTORY ${AddTest_BINARY_PATH}) - file(TO_NATIVE_PATH "${AddTest_BINARY_PATH}" AddTest_BINARY_PATH_NATIVE) - - # set defaults - if(NOT AddTest_EXECUTABLE) - set(AddTest_EXECUTABLE ogs) - endif() - - if("${AddTest_EXECUTABLE}" STREQUAL "ogs") - set(AddTest_EXECUTABLE_ARGS -o ${AddTest_BINARY_PATH_NATIVE} ${AddTest_EXECUTABLE_ARGS}) - endif() - - if(NOT AddTest_WRAPPER) - set(AddTest_WRAPPER time) - endif() - - # --- Implement wrappers --- - # check requirements, disable if not met - if(AddTest_WRAPPER STREQUAL "time" AND NOT TIME_TOOL_PATH) - return() - endif() - if(AddTest_WRAPPER STREQUAL "memcheck" AND NOT VALGRIND_TOOL_PATH) - return() - endif() - if(AddTest_WRAPPER STREQUAL "callgrind" AND NOT VALGRIND_TOOL_PATH) - return() - endif() - if(AddTest_WRAPPER STREQUAL "mpirun" AND NOT MPIRUN_TOOL_PATH) - return() - endif() - - if(AddTest_WRAPPER STREQUAL "time") - set(WRAPPER_COMMAND time) - elseif(AddTest_WRAPPER STREQUAL "memcheck" AND VALGRIND_TOOL_PATH) - set(WRAPPER_COMMAND "${VALGRIND_TOOL_PATH} --tool=memcheck --log-file=${AddTest_SOURCE_PATH}/${AddTest_NAME}_memcheck.log -v --leak-check=full --show-reachable=yes --track-origins=yes --malloc-fill=0xff --free-fill=0xff") - set(tester memcheck) - elseif(AddTest_WRAPPER STREQUAL "callgrind" AND VALGRIND_TOOL_PATH) - set(WRAPPER_COMMAND "${VALGRIND_TOOL_PATH} --tool=callgrind --branch-sim=yes --cache-sim=yes --dump-instr=yes --collect-jumps=yes") - unset(tester) - elseif(AddTest_WRAPPER STREQUAL "mpirun") - set(WRAPPER_COMMAND ${MPIRUN_TOOL_PATH}) - endif() - - # --- Implement testers --- - # check requirements, disable if not met - if(AddTest_TESTER STREQUAL "diff" AND NOT DIFF_TOOL_PATH) - return() - endif() - if(AddTest_TESTER STREQUAL "numdiff" AND NOT NUMDIFF_TOOL_PATH) - return() - endif() - if(AddTest_TESTER STREQUAL "vtkdiff" AND NOT TARGET vtkdiff) - return() - endif() - if(AddTest_TESTER STREQUAL "memcheck" AND NOT GREP_TOOL_PATH) - return() - endif() - - if((AddTest_TESTER STREQUAL "diff" OR AddTest_TESTER STREQUAL "numdiff" OR AddTest_TESTER STREQUAL "vtkdiff") AND NOT AddTest_DIFF_DATA) - message(FATAL_ERROR "AddTest(): ${AddTest_NAME} - no DIFF_DATA given!") - endif() - - if(AddTest_TESTER STREQUAL "diff") - set(SELECTED_DIFF_TOOL_PATH ${DIFF_TOOL_PATH}) - set(TESTER_ARGS "-sbB") - elseif(AddTest_TESTER STREQUAL "numdiff") - set(SELECTED_DIFF_TOOL_PATH ${NUMDIFF_TOOL_PATH}) - set(TESTER_ARGS "--statistics --absolute-tolerance=1e-5 --relative-tolerance=1e-4") - elseif(AddTest_TESTER STREQUAL "vtkdiff") - set(SELECTED_DIFF_TOOL_PATH $<TARGET_FILE:vtkdiff>) - set(TESTER_ARGS "-q --abs 1e-2 --rel 1e-4") - endif() - - if(AddTest_TESTER STREQUAL "diff" OR AddTest_TESTER STREQUAL "numdiff") - foreach(FILE ${AddTest_DIFF_DATA}) - get_filename_component(FILE_EXPECTED ${FILE} NAME) - set(TESTER_COMMAND ${TESTER_COMMAND} "${SELECTED_DIFF_TOOL_PATH} \ - ${TESTER_ARGS} ${AddTest_SOURCE_PATH}/${FILE_EXPECTED} \ - ${AddTest_BINARY_PATH}/${FILE}") - if(AddTest_DIFF_DATA_PARSED) - set(AddTest_DIFF_DATA_PARSED "${AddTest_DIFF_DATA_PARSED},${FILE_EXPECTED}") - else() - set(AddTest_DIFF_DATA_PARSED "${FILE_EXPECTED}") - endif() - endforeach() - string(REPLACE ";" " && " TESTER_COMMAND "${TESTER_COMMAND}") - set(AddTest_DIFF_DATA_PARSED "${AddTest_SOURCE_PATH}/${AddTest_DIFF_DATA_PARSED}") - elseif(AddTest_TESTER STREQUAL "vtkdiff") - list(LENGTH AddTest_DIFF_DATA DiffDataLength) - if (NOT ${DiffDataLength} EQUAL 3) - message(FATAL_ERROR "For vtkdiff tester 3 diff data arguments are required.") - endif() - list(GET AddTest_DIFF_DATA 0 VTK_FILE) - list(GET AddTest_DIFF_DATA 1 NAME_A) - list(GET AddTest_DIFF_DATA 2 NAME_B) - - set(TESTER_COMMAND ${TESTER_COMMAND} "${SELECTED_DIFF_TOOL_PATH} \ - ${AddTest_BINARY_PATH}/${VTK_FILE} \ - -a ${NAME_A} -b ${NAME_B} \ - ${TESTER_ARGS}") - string(REPLACE ";" " && " TESTER_COMMAND "${TESTER_COMMAND}") - elseif(tester STREQUAL "memcheck") - set(TESTER_COMMAND "! ${GREP_TOOL_PATH} definitely ${AddTest_SOURCE_PATH}/${AddTest_NAME}_memcheck.log") - endif() - - ## ----------- - if(TARGET ${AddTest_EXECUTABLE}) - set(AddTest_EXECUTABLE_PARSED $<TARGET_FILE:${AddTest_EXECUTABLE}>) - else() - set(AddTest_EXECUTABLE_PARSED ${AddTest_EXECUTABLE}) - endif() - - set(FILES_TO_DELETE "") - foreach(ITEM ${AddTest_DIFF_DATA}) - if(ITEM MATCHES "^.*\.(vtu|vtk)$") - list(APPEND FILES_TO_DELETE "${ITEM}") - endif() - endforeach() - - # Run the wrapper - Add_Test( - NAME "${AddTest_EXECUTABLE}-${AddTest_NAME}-${AddTest_WRAPPER}" - COMMAND ${CMAKE_COMMAND} - -DEXECUTABLE=${AddTest_EXECUTABLE_PARSED} - "-DEXECUTABLE_ARGS=${AddTest_EXECUTABLE_ARGS}" - -Dcase_path=${AddTest_SOURCE_PATH} - -DBINARY_PATH=${AddTest_BINARY_PATH} - -DWRAPPER_COMMAND=${WRAPPER_COMMAND} - "-DWRAPPER_ARGS=${AddTest_WRAPPER_ARGS}" - "-DFILES_TO_DELETE=${FILES_TO_DELETE}" - -P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestWrapper.cmake - ) - - if(NOT AddTest_TESTER OR OGS_COVERAGE) - return() - endif() - - # Run the tester - if(AddTest_TESTER STREQUAL "diff" OR AddTest_TESTER STREQUAL "numdiff") - Add_Test( - NAME "${AddTest_EXECUTABLE}-${AddTest_NAME}-${AddTest_WRAPPER}-${AddTest_TESTER}" - COMMAND ${CMAKE_COMMAND} - -Dcase_path=${AddTest_SOURCE_PATH} - -DTESTER_COMMAND=${TESTER_COMMAND} - -P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestTester.cmake - DATA{${AddTest_DIFF_DATA_PARSED}} - ) - elseif(AddTest_TESTER STREQUAL "vtkdiff") - add_test( - NAME "${AddTest_EXECUTABLE}-${AddTest_NAME}-${AddTest_WRAPPER}-${AddTest_TESTER}" - COMMAND ${CMAKE_COMMAND} - -Dcase_path=${AddTest_SOURCE_PATH} - -DTESTER_COMMAND=${TESTER_COMMAND} - -P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestTester.cmake - ) - else() - add_test( - NAME "${AddTest_EXECUTABLE}-${AddTest_NAME}-${AddTest_WRAPPER}-${AddTest_TESTER}" - COMMAND ${CMAKE_COMMAND} - -Dcase_path=${AddTest_SOURCE_PATH} - -DTESTER_COMMAND=${TESTER_COMMAND} - -P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestTester.cmake - ) - endif() - set_tests_properties(${AddTest_EXECUTABLE}-${AddTest_NAME}-${AddTest_WRAPPER}-${AddTest_TESTER} - PROPERTIES DEPENDS ${AddTest_EXECUTABLE}-${AddTest_NAME}-${AddTest_WRAPPER}) + # parse arguments + set(options NONE) + set(oneValueArgs EXECUTABLE PATH NAME WRAPPER TESTER) + set(multiValueArgs EXECUTABLE_ARGS DATA DIFF_DATA WRAPPER_ARGS) + cmake_parse_arguments(AddTest "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + set(AddTest_SOURCE_PATH "${Data_SOURCE_DIR}/${AddTest_PATH}") + set(AddTest_BINARY_PATH "${Data_BINARY_DIR}/${AddTest_PATH}") + file(MAKE_DIRECTORY ${AddTest_BINARY_PATH}) + file(TO_NATIVE_PATH "${AddTest_BINARY_PATH}" AddTest_BINARY_PATH_NATIVE) + + # set defaults + if(NOT AddTest_EXECUTABLE) + set(AddTest_EXECUTABLE ogs) + endif() + + if("${AddTest_EXECUTABLE}" STREQUAL "ogs") + set(AddTest_EXECUTABLE_ARGS -o ${AddTest_BINARY_PATH_NATIVE} ${AddTest_EXECUTABLE_ARGS}) + endif() + + if(NOT AddTest_WRAPPER) + set(AddTest_WRAPPER time) + endif() + + # --- Implement wrappers --- + # check requirements, disable if not met + if(AddTest_WRAPPER STREQUAL "time" AND NOT TIME_TOOL_PATH) + return() + endif() + if(AddTest_WRAPPER STREQUAL "memcheck" AND NOT VALGRIND_TOOL_PATH) + return() + endif() + if(AddTest_WRAPPER STREQUAL "callgrind" AND NOT VALGRIND_TOOL_PATH) + return() + endif() + if(AddTest_WRAPPER STREQUAL "mpirun" AND NOT MPIRUN_TOOL_PATH) + return() + endif() + + if(AddTest_WRAPPER STREQUAL "time") + set(WRAPPER_COMMAND time) + elseif(AddTest_WRAPPER STREQUAL "memcheck" AND VALGRIND_TOOL_PATH) + set(WRAPPER_COMMAND "${VALGRIND_TOOL_PATH} --tool=memcheck --log-file=${AddTest_SOURCE_PATH}/${AddTest_NAME}_memcheck.log -v --leak-check=full --show-reachable=yes --track-origins=yes --malloc-fill=0xff --free-fill=0xff") + set(tester memcheck) + elseif(AddTest_WRAPPER STREQUAL "callgrind" AND VALGRIND_TOOL_PATH) + set(WRAPPER_COMMAND "${VALGRIND_TOOL_PATH} --tool=callgrind --branch-sim=yes --cache-sim=yes --dump-instr=yes --collect-jumps=yes") + unset(tester) + elseif(AddTest_WRAPPER STREQUAL "mpirun") + set(WRAPPER_COMMAND ${MPIRUN_TOOL_PATH}) + endif() + + # --- Implement testers --- + # check requirements, disable if not met + if(AddTest_TESTER STREQUAL "diff" AND NOT DIFF_TOOL_PATH) + return() + endif() + if(AddTest_TESTER STREQUAL "numdiff" AND NOT NUMDIFF_TOOL_PATH) + return() + endif() + if(AddTest_TESTER STREQUAL "vtkdiff" AND NOT TARGET vtkdiff) + return() + endif() + if(AddTest_TESTER STREQUAL "memcheck" AND NOT GREP_TOOL_PATH) + return() + endif() + + if((AddTest_TESTER STREQUAL "diff" OR AddTest_TESTER STREQUAL "numdiff" OR AddTest_TESTER STREQUAL "vtkdiff") AND NOT AddTest_DIFF_DATA) + message(FATAL_ERROR "AddTest(): ${AddTest_NAME} - no DIFF_DATA given!") + endif() + + if(AddTest_TESTER STREQUAL "diff") + set(SELECTED_DIFF_TOOL_PATH ${DIFF_TOOL_PATH}) + set(TESTER_ARGS "-sbB") + elseif(AddTest_TESTER STREQUAL "numdiff") + set(SELECTED_DIFF_TOOL_PATH ${NUMDIFF_TOOL_PATH}) + set(TESTER_ARGS "--statistics --absolute-tolerance=1e-5 --relative-tolerance=1e-4") + elseif(AddTest_TESTER STREQUAL "vtkdiff") + set(SELECTED_DIFF_TOOL_PATH $<TARGET_FILE:vtkdiff>) + set(TESTER_ARGS "-q --abs 1e-2 --rel 1e-4") + endif() + + if(AddTest_TESTER STREQUAL "diff" OR AddTest_TESTER STREQUAL "numdiff") + foreach(FILE ${AddTest_DIFF_DATA}) + get_filename_component(FILE_EXPECTED ${FILE} NAME) + set(TESTER_COMMAND ${TESTER_COMMAND} "${SELECTED_DIFF_TOOL_PATH} \ + ${TESTER_ARGS} ${AddTest_SOURCE_PATH}/${FILE_EXPECTED} \ + ${AddTest_BINARY_PATH}/${FILE}") + if(AddTest_DIFF_DATA_PARSED) + set(AddTest_DIFF_DATA_PARSED "${AddTest_DIFF_DATA_PARSED},${FILE_EXPECTED}") + else() + set(AddTest_DIFF_DATA_PARSED "${FILE_EXPECTED}") + endif() + endforeach() + string(REPLACE ";" " && " TESTER_COMMAND "${TESTER_COMMAND}") + set(AddTest_DIFF_DATA_PARSED "${AddTest_SOURCE_PATH}/${AddTest_DIFF_DATA_PARSED}") + elseif(AddTest_TESTER STREQUAL "vtkdiff") + list(LENGTH AddTest_DIFF_DATA DiffDataLength) + if (NOT ${DiffDataLength} EQUAL 3) + message(FATAL_ERROR "For vtkdiff tester 3 diff data arguments are required.") + endif() + list(GET AddTest_DIFF_DATA 0 VTK_FILE) + list(GET AddTest_DIFF_DATA 1 NAME_A) + list(GET AddTest_DIFF_DATA 2 NAME_B) + + set(TESTER_COMMAND ${TESTER_COMMAND} "${SELECTED_DIFF_TOOL_PATH} \ + ${AddTest_BINARY_PATH}/${VTK_FILE} \ + -a ${NAME_A} -b ${NAME_B} \ + ${TESTER_ARGS}") + string(REPLACE ";" " && " TESTER_COMMAND "${TESTER_COMMAND}") + elseif(tester STREQUAL "memcheck") + set(TESTER_COMMAND "! ${GREP_TOOL_PATH} definitely ${AddTest_SOURCE_PATH}/${AddTest_NAME}_memcheck.log") + endif() + + ## ----------- + if(TARGET ${AddTest_EXECUTABLE}) + set(AddTest_EXECUTABLE_PARSED $<TARGET_FILE:${AddTest_EXECUTABLE}>) + else() + set(AddTest_EXECUTABLE_PARSED ${AddTest_EXECUTABLE}) + endif() + + set(FILES_TO_DELETE "") + foreach(ITEM ${AddTest_DIFF_DATA}) + if(ITEM MATCHES "^.*\.(vtu|vtk)$") + list(APPEND FILES_TO_DELETE "${ITEM}") + endif() + endforeach() + + # Run the wrapper + Add_Test( + NAME "${AddTest_EXECUTABLE}-${AddTest_NAME}-${AddTest_WRAPPER}" + COMMAND ${CMAKE_COMMAND} + -DEXECUTABLE=${AddTest_EXECUTABLE_PARSED} + "-DEXECUTABLE_ARGS=${AddTest_EXECUTABLE_ARGS}" + -Dcase_path=${AddTest_SOURCE_PATH} + -DBINARY_PATH=${AddTest_BINARY_PATH} + -DWRAPPER_COMMAND=${WRAPPER_COMMAND} + "-DWRAPPER_ARGS=${AddTest_WRAPPER_ARGS}" + "-DFILES_TO_DELETE=${FILES_TO_DELETE}" + -P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestWrapper.cmake + ) + + if(NOT AddTest_TESTER OR OGS_COVERAGE) + return() + endif() + + # Run the tester + if(AddTest_TESTER STREQUAL "diff" OR AddTest_TESTER STREQUAL "numdiff") + Add_Test( + NAME "${AddTest_EXECUTABLE}-${AddTest_NAME}-${AddTest_WRAPPER}-${AddTest_TESTER}" + COMMAND ${CMAKE_COMMAND} + -Dcase_path=${AddTest_SOURCE_PATH} + -DTESTER_COMMAND=${TESTER_COMMAND} + -P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestTester.cmake + DATA{${AddTest_DIFF_DATA_PARSED}} + ) + elseif(AddTest_TESTER STREQUAL "vtkdiff") + add_test( + NAME "${AddTest_EXECUTABLE}-${AddTest_NAME}-${AddTest_WRAPPER}-${AddTest_TESTER}" + COMMAND ${CMAKE_COMMAND} + -Dcase_path=${AddTest_SOURCE_PATH} + -DTESTER_COMMAND=${TESTER_COMMAND} + -P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestTester.cmake + ) + else() + add_test( + NAME "${AddTest_EXECUTABLE}-${AddTest_NAME}-${AddTest_WRAPPER}-${AddTest_TESTER}" + COMMAND ${CMAKE_COMMAND} + -Dcase_path=${AddTest_SOURCE_PATH} + -DTESTER_COMMAND=${TESTER_COMMAND} + -P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestTester.cmake + ) + endif() + set_tests_properties(${AddTest_EXECUTABLE}-${AddTest_NAME}-${AddTest_WRAPPER}-${AddTest_TESTER} + PROPERTIES DEPENDS ${AddTest_EXECUTABLE}-${AddTest_NAME}-${AddTest_WRAPPER}) endfunction() diff --git a/scripts/cmake/test/AddTestTester.cmake b/scripts/cmake/test/AddTestTester.cmake index 15adfbe41ef92a63e3b0347cdc2ede4616775e9e..12c79cf4c2c0f65ca887f1610c57cdc626d7e70e 100644 --- a/scripts/cmake/test/AddTestTester.cmake +++ b/scripts/cmake/test/AddTestTester.cmake @@ -1,9 +1,9 @@ execute_process( - COMMAND bash -c ${TESTER_COMMAND} - WORKING_DIRECTORY ${case_path} - RESULT_VARIABLE EXIT_CODE + COMMAND bash -c ${TESTER_COMMAND} + WORKING_DIRECTORY ${case_path} + RESULT_VARIABLE EXIT_CODE ) if(NOT EXIT_CODE STREQUAL "0") - message(FATAL_ERROR "Error exit code: ${EXIT_CODE}") + message(FATAL_ERROR "Error exit code: ${EXIT_CODE}") endif() diff --git a/scripts/cmake/test/AddTestWrapper.cmake b/scripts/cmake/test/AddTestWrapper.cmake index 3a3f65a5333dc72f640dd6e378c7e156e01cbe8e..aff1c23534bc385a8c72c66cd7ac7a78eb13ff35 100644 --- a/scripts/cmake/test/AddTestWrapper.cmake +++ b/scripts/cmake/test/AddTestWrapper.cmake @@ -1,15 +1,15 @@ # IMPORTANT: multiple arguments in one variables have to be in list notation (;) # and have to be quoted when passed "-DEXECUTABLE_ARGS=${AddTest_EXECUTABLE_ARGS}" foreach(FILE ${FILES_TO_DELETE}) - file(REMOVE ${BINARY_PATH}/${FILE}) + file(REMOVE ${BINARY_PATH}/${FILE}) endforeach() execute_process( - COMMAND ${WRAPPER_COMMAND} ${WRAPPER_ARGS} ${EXECUTABLE} ${EXECUTABLE_ARGS} - WORKING_DIRECTORY ${case_path} - RESULT_VARIABLE EXIT_CODE + COMMAND ${WRAPPER_COMMAND} ${WRAPPER_ARGS} ${EXECUTABLE} ${EXECUTABLE_ARGS} + WORKING_DIRECTORY ${case_path} + RESULT_VARIABLE EXIT_CODE ) if(NOT EXIT_CODE STREQUAL "0") - message(FATAL_ERROR "Test wrapper exited with code: ${EXIT_CODE}") + message(FATAL_ERROR "Test wrapper exited with code: ${EXIT_CODE}") endif() diff --git a/scripts/cmake/test/MoveDataToStore.cmake b/scripts/cmake/test/MoveDataToStore.cmake index bb2d8b2549d877254d7badaf0603597f593eaab3..84d22d2f02f4ab4d172aee5395f46a2ff4525079 100644 --- a/scripts/cmake/test/MoveDataToStore.cmake +++ b/scripts/cmake/test/MoveDataToStore.cmake @@ -1,7 +1,7 @@ # Get all files matching .ExternalData_<algo>_<hash> file(GLOB_RECURSE FILES "" ${ExternalData_SOURCE_ROOT}/.ExternalData_${ExternalData_LINK_CONTENT}_*) foreach(HASH_FILE ${FILES}) - string(REGEX MATCH [^_]+$ HASH ${HASH_FILE}) - message("Copying ${HASH_FILE} to ${ExternalData_OBJECT_STORES}/${HASH}") - file(RENAME ${HASH_FILE} ${ExternalData_OBJECT_STORES}/${ExternalData_LINK_CONTENT}/${HASH}) + string(REGEX MATCH [^_]+$ HASH ${HASH_FILE}) + message("Copying ${HASH_FILE} to ${ExternalData_OBJECT_STORES}/${HASH}") + file(RENAME ${HASH_FILE} ${ExternalData_OBJECT_STORES}/${ExternalData_LINK_CONTENT}/${HASH}) endforeach() diff --git a/scripts/cmake/test/Test.cmake b/scripts/cmake/test/Test.cmake index 1db60c5fffc673a4b9b9d64902afcd83a0453fb5..99ec87bb52e398f88d942ecf19195c351f1de832 100644 --- a/scripts/cmake/test/Test.cmake +++ b/scripts/cmake/test/Test.cmake @@ -8,25 +8,25 @@ find_program(VALGRIND_TOOL_PATH valgrind) find_program(MPIRUN_TOOL_PATH mpirun) if(NOT TIME_TOOL_PATH) - message(STATUS "time-command is required for time wrapper but was not found! All corresponding tests are disabled.") + message(STATUS "time-command is required for time wrapper but was not found! All corresponding tests are disabled.") endif() if(NOT VALGRIND_TOOL_PATH) - message(STATUS "Valgrind is required for memcheck wrapper but was not found! All corresponding tests are disabled.") + message(STATUS "Valgrind is required for memcheck wrapper but was not found! All corresponding tests are disabled.") endif() if(NOT VALGRIND_TOOL_PATH) - message(STATUS "Valgrind is required for callgrind wrapper but was not found! All corresponding tests are disabled.") + message(STATUS "Valgrind is required for callgrind wrapper but was not found! All corresponding tests are disabled.") endif() if(NOT MPIRUN_TOOL_PATH) - message(STATUS "mpirun is required for mpirun wrapper but was not found! All corresponding tests are disabled.") + message(STATUS "mpirun is required for mpirun wrapper but was not found! All corresponding tests are disabled.") endif() if(NOT DIFF_TOOL_PATH) - message(STATUS "diff-command is required for diff tester but was not found! All corresponding tests are disabled.") + message(STATUS "diff-command is required for diff tester but was not found! All corresponding tests are disabled.") endif() if(NOT NUMDIFF_TOOL_PATH) - message(STATUS "numdiff-command is required for numdiff tester but was not found! All corresponding tests are disabled.") + message(STATUS "numdiff-command is required for numdiff tester but was not found! All corresponding tests are disabled.") endif() if(NOT GREP_TOOL_PATH) - message(STATUS "grep-command is required for memcheck tester but was not found! All corresponding tests are disabled.") + message(STATUS "grep-command is required for memcheck tester but was not found! All corresponding tests are disabled.") endif() enable_testing() # Enable CTest @@ -34,35 +34,35 @@ enable_testing() # Enable CTest # See http://www.vtk.org/Wiki/CMake/Testing_With_CTest for some customization options set(CTEST_CUSTOM_TESTS_IGNORE test-harness) # ignore logog test configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/test/CTestCustom.cmake.in - ${CMAKE_BINARY_DIR}/CTestCustom.cmake + ${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/test/CTestCustom.cmake.in + ${CMAKE_BINARY_DIR}/CTestCustom.cmake ) include(${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/test/AddTest.cmake) if(CMAKE_CONFIGURATION_TYPES) - set(CONFIG_PARAMETER --build-config "$<CONFIGURATION>") + set(CONFIG_PARAMETER --build-config "$<CONFIGURATION>") endif() add_custom_target(ctest-cleanup ${CMAKE_COMMAND} -E remove Tests/ctest.log) add_custom_target( - ctest - COMMAND ${CMAKE_CTEST_COMMAND} -T Test - --force-new-ctest-process - --output-on-failure --output-log Tests/ctest.log - --exclude-regex LARGE - ${CONFIG_PARAMETER} --parallel ${NUM_PROCESSORS} --test-action test - DEPENDS ogs vtkdiff ctest-cleanup + ctest + COMMAND ${CMAKE_CTEST_COMMAND} -T Test + --force-new-ctest-process + --output-on-failure --output-log Tests/ctest.log + --exclude-regex LARGE + ${CONFIG_PARAMETER} --parallel ${NUM_PROCESSORS} --test-action test + DEPENDS ogs vtkdiff ctest-cleanup ) add_custom_target(ctest-large-cleanup ${CMAKE_COMMAND} -E remove Tests/ctest-large.log) add_custom_target( - ctest-large - COMMAND ${CMAKE_CTEST_COMMAND} -T Test - --force-new-ctest-process - --output-on-failure --output-log Tests/ctest-large.log - --tests-regex LARGE - ${CONFIG_PARAMETER} --parallel ${NUM_PROCESSORS} --test-action test - DEPENDS ogs vtkdiff ctest-large-cleanup + ctest-large + COMMAND ${CMAKE_CTEST_COMMAND} -T Test + --force-new-ctest-process + --output-on-failure --output-log Tests/ctest-large.log + --tests-regex LARGE + ${CONFIG_PARAMETER} --parallel ${NUM_PROCESSORS} --test-action test + DEPENDS ogs vtkdiff ctest-large-cleanup ) set_directory_properties(PROPERTIES - ADDITIONAL_MAKE_CLEAN_FILES ${PROJECT_BINARY_DIR}/Tests/Data + ADDITIONAL_MAKE_CLEAN_FILES ${PROJECT_BINARY_DIR}/Tests/Data ) diff --git a/scripts/jenkins/clang.groovy b/scripts/jenkins/clang.groovy index 58b735dbb6648b79f7af1e86115d69316ae6172a..d7cc15d923bb3c9c10cac7df01e51db8855d47fe 100644 --- a/scripts/jenkins/clang.groovy +++ b/scripts/jenkins/clang.groovy @@ -2,43 +2,43 @@ defaultDockerArgs = '-v /home/jenkins/.ccache:/usr/src/.ccache' node('docker') { - stage 'Checkout' - dir('ogs') { checkout scm } - - // Multiple configurations are build in parallel - parallel linux: { - docker.image('ogs6/clang-base:latest') - .inside(defaultDockerArgs) - { - catchError { - build 'build', '-DOGS_ADDRESS_SANITIZER=ON -DOGS_UNDEFINED_BEHAVIOR_SANITIZER=ON', '' - - stage 'Unit tests' - sh '''cd build - UBSAN_OPTIONS=print_stacktrace=1 make tests''' - - stage 'End-to-end tests' - sh '''cd build - UBSAN_OPTIONS=print_stacktrace=1 make ctest''' - } - } - step([$class: 'LogParserPublisher', failBuildOnError: true, unstableOnWarning: true, - projectRulePath: 'ogs/scripts/jenkins/clang-log-parser.rules', useProjectRule: true]) - } - - step([$class: 'JUnitResultArchiver', - testResults: 'build/Tests/testrunner.xml']) - - archive 'build*/*.tar.gz' + stage 'Checkout' + dir('ogs') { checkout scm } + + // Multiple configurations are build in parallel + parallel linux: { + docker.image('ogs6/clang-base:latest') + .inside(defaultDockerArgs) + { + catchError { + build 'build', '-DOGS_ADDRESS_SANITIZER=ON -DOGS_UNDEFINED_BEHAVIOR_SANITIZER=ON', '' + + stage 'Unit tests' + sh '''cd build + UBSAN_OPTIONS=print_stacktrace=1 make tests''' + + stage 'End-to-end tests' + sh '''cd build + UBSAN_OPTIONS=print_stacktrace=1 make ctest''' + } + } + step([$class: 'LogParserPublisher', failBuildOnError: true, unstableOnWarning: true, + projectRulePath: 'ogs/scripts/jenkins/clang-log-parser.rules', useProjectRule: true]) + } + + step([$class: 'JUnitResultArchiver', + testResults: 'build/Tests/testrunner.xml']) + + archive 'build*/*.tar.gz' } // end node def build(buildDir, cmakeOptions, target) { - sh "rm -rf ${buildDir} && mkdir ${buildDir}" + sh "rm -rf ${buildDir} && mkdir ${buildDir}" - stage 'Configure' - sh "cd ${buildDir} && cmake ../ogs ${cmakeOptions}" + stage 'Configure' + sh "cd ${buildDir} && cmake ../ogs ${cmakeOptions}" - stage 'Build' - sh "cd ${buildDir} && make -j \$(nproc) ${target}" + stage 'Build' + sh "cd ${buildDir} && make -j \$(nproc) ${target}" } diff --git a/scripts/jenkins/coverage.groovy b/scripts/jenkins/coverage.groovy index c7ae73531a007976335d249a3a2898c55eb07106..66a191a2657629ed82f75bc18c94c29a71caaf8d 100644 --- a/scripts/jenkins/coverage.groovy +++ b/scripts/jenkins/coverage.groovy @@ -3,26 +3,26 @@ defaultCMakeOptions = '-DOGS_LIB_BOOST=System -DOGS_LIB_VTK=System' node('docker') { - stage 'Checkout' - checkout scm + stage 'Checkout' + checkout scm - stage 'Build' - docker.image('ogs6/gcc-base:latest') - .inside(defaultDockerArgs) { - build 'build', '-DOGS_COVERAGE=ON', - 'testrunner_coverage_cobertura ctest_coverage_cobertura' - } + stage 'Build' + docker.image('ogs6/gcc-base:latest') + .inside(defaultDockerArgs) { + build 'build', '-DOGS_COVERAGE=ON', + 'testrunner_coverage_cobertura ctest_coverage_cobertura' + } - archive 'build/*.xml' - // Report is published in a free-style child job + archive 'build/*.xml' + // Report is published in a free-style child job } def build(buildDir, cmakeOptions, target) { - sh "rm -rf ${buildDir} && mkdir ${buildDir}" + sh "rm -rf ${buildDir} && mkdir ${buildDir}" - stage 'Configure' - sh "cd ${buildDir} && cmake ../ogs ${defaultCMakeOptions} ${cmakeOptions}" + stage 'Configure' + sh "cd ${buildDir} && cmake ../ogs ${defaultCMakeOptions} ${cmakeOptions}" - stage 'Build' - sh "cd ${buildDir} && make -j \$(nproc) ${target}" + stage 'Build' + sh "cd ${buildDir} && make -j \$(nproc) ${target}" } diff --git a/scripts/jenkins/gcc.groovy b/scripts/jenkins/gcc.groovy index 77cbc1e583dab97b6b5d007072c8c8f0ba445401..e81488d33853c6ba412669992f374b331dbb623d 100644 --- a/scripts/jenkins/gcc.groovy +++ b/scripts/jenkins/gcc.groovy @@ -3,54 +3,54 @@ defaultCMakeOptions = '-DOGS_LIB_BOOST=System -DOGS_LIB_VTK=System' node('docker') { - step([$class: 'GitHubSetCommitStatusBuilder', statusMessage: [content: 'Started Jenkins gcc build']]) + step([$class: 'GitHubSetCommitStatusBuilder', statusMessage: [content: 'Started Jenkins gcc build']]) - stage 'Checkout' - dir('ogs') { checkout scm } + stage 'Checkout' + dir('ogs') { checkout scm } - docker.image('ogs6/gcc-base:latest').inside(defaultDockerArgs) - { - stage 'Configure' - configure 'build', '' + docker.image('ogs6/gcc-base:latest').inside(defaultDockerArgs) + { + stage 'Configure' + configure 'build', '' - stage 'Build' - build 'build', '' - if (env.BRANCH_NAME == 'master') - build 'build', 'package' + stage 'Build' + build 'build', '' + if (env.BRANCH_NAME == 'master') + build 'build', 'package' - stage 'Test' - build 'build', 'tests ctest' - } + stage 'Test' + build 'build', 'tests ctest' + } - stage 'Post' - publishTestReports 'build/Testing/**/*.xml', 'build/Tests/testrunner.xml', - 'ogs/scripts/jenkins/clang-log-parser.rules' + stage 'Post' + publishTestReports 'build/Testing/**/*.xml', 'build/Tests/testrunner.xml', + 'ogs/scripts/jenkins/clang-log-parser.rules' - archive 'build*/*.tar.gz' + archive 'build*/*.tar.gz' } def configure(buildDir, cmakeOptions) { - sh "rm -rf ${buildDir} && mkdir ${buildDir}" - sh "cd ${buildDir} && cmake ../ogs ${defaultCMakeOptions} ${cmakeOptions}" + sh "rm -rf ${buildDir} && mkdir ${buildDir}" + sh "cd ${buildDir} && cmake ../ogs ${defaultCMakeOptions} ${cmakeOptions}" } def build(buildDir, target) { - sh "cd ${buildDir} && make -j \$(nproc) ${target}" + sh "cd ${buildDir} && make -j \$(nproc) ${target}" } def publishTestReports(ctestPattern, gtestPattern, parseRulefile) { - step([$class: 'XUnitPublisher', testTimeMargin: '3000', thresholdMode: 1, - thresholds: [ - [$class: 'FailedThreshold', failureNewThreshold: '', failureThreshold: '', unstableNewThreshold: '', unstableThreshold: ''], - [$class: 'SkippedThreshold', failureNewThreshold: '', failureThreshold: '', unstableNewThreshold: '', unstableThreshold: '']], - tools: [ - [$class: 'CTestType', deleteOutputFiles: true, failIfNotNew: true, pattern: "${ctestPattern}", skipNoTestFiles: false, stopProcessingIfError: true], - [$class: 'GoogleTestType', deleteOutputFiles: true, failIfNotNew: true, pattern: "${gtestPattern}", skipNoTestFiles: false, stopProcessingIfError: true]] - ]) - - step([$class: 'LogParserPublisher', failBuildOnError: true, unstableOnWarning: false, - projectRulePath: "${parseRulefile}", useProjectRule: true]) - - step([$class: 'GitHubCommitNotifier', resultOnFailure: 'FAILURE', statusMessage: [content: 'Finished Jenkins gcc build']]) + step([$class: 'XUnitPublisher', testTimeMargin: '3000', thresholdMode: 1, + thresholds: [ + [$class: 'FailedThreshold', failureNewThreshold: '', failureThreshold: '', unstableNewThreshold: '', unstableThreshold: ''], + [$class: 'SkippedThreshold', failureNewThreshold: '', failureThreshold: '', unstableNewThreshold: '', unstableThreshold: '']], + tools: [ + [$class: 'CTestType', deleteOutputFiles: true, failIfNotNew: true, pattern: "${ctestPattern}", skipNoTestFiles: false, stopProcessingIfError: true], + [$class: 'GoogleTestType', deleteOutputFiles: true, failIfNotNew: true, pattern: "${gtestPattern}", skipNoTestFiles: false, stopProcessingIfError: true]] + ]) + + step([$class: 'LogParserPublisher', failBuildOnError: true, unstableOnWarning: false, + projectRulePath: "${parseRulefile}", useProjectRule: true]) + + step([$class: 'GitHubCommitNotifier', resultOnFailure: 'FAILURE', statusMessage: [content: 'Finished Jenkins gcc build']]) } diff --git a/scripts/packaging/.DS_Store b/scripts/packaging/.DS_Store index 2b9e2725a4f0065e2b5cff9ef8ddb1391b044998..0819ff8859ca535c38a0d079d776f0e7d8b73c54 100644 Binary files a/scripts/packaging/.DS_Store and b/scripts/packaging/.DS_Store differ diff --git a/scripts/packaging/archive-testdata.sh b/scripts/packaging/archive-testdata.sh index 4a0f42bd1db82ce4c8c3faa577f1bf15eed2f0af..58968224c23f49a962dc6cbb0258fe943dcb56de 100644 --- a/scripts/packaging/archive-testdata.sh +++ b/scripts/packaging/archive-testdata.sh @@ -1,8 +1,8 @@ #!/bin/bash if [[ $OSTYPE == darwin* ]]; then - find ./Tests/Data -not -name "*.md5-stamp" -not -name "*expected*" -not -type d -exec bash -c 'mkdir -p ./tmp/`dirname {}`' \; -exec bash -c 'cp `grealpath {}` ./tmp/{}' \; + find ./Tests/Data -not -name "*.md5-stamp" -not -name "*expected*" -not -type d -exec bash -c 'mkdir -p ./tmp/`dirname {}`' \; -exec bash -c 'cp `grealpath {}` ./tmp/{}' \; else - find ./Tests/Data -not -name "*.md5-stamp" -not -name "*expected*" -not -type d -exec bash -c 'mkdir -p ./tmp/`dirname {}`' \; -exec bash -c 'cp `realpath {}` ./tmp/{}' \; + find ./Tests/Data -not -name "*.md5-stamp" -not -name "*expected*" -not -type d -exec bash -c 'mkdir -p ./tmp/`dirname {}`' \; -exec bash -c 'cp `realpath {}` ./tmp/{}' \; fi pushd . > /dev/null cd ./tmp/Tests/Data diff --git a/scripts/test/CTest2JUnit.xsl b/scripts/test/CTest2JUnit.xsl index 3ea29e501d7c0abd724956a4b33bae46261dd2e0..5d5248c394ca2ba9cc9915ad3f9662b77b8387e4 100644 --- a/scripts/test/CTest2JUnit.xsl +++ b/scripts/test/CTest2JUnit.xsl @@ -1,120 +1,120 @@ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" indent="yes"/> <xsl:template match="/Site"> - <xsl:variable name="Name"><xsl:value-of select="@Name"/></xsl:variable> - <xsl:variable name="Hostname"><xsl:value-of select="@Hostname"/></xsl:variable> - <xsl:variable name="TestCount"><xsl:value-of select="count(//TestList/Test)"/> </xsl:variable> - <xsl:variable name="ErrorCount"><xsl:value-of select="count(//TestList/Test[@Status='error'])"/> </xsl:variable> - <xsl:variable name="FailureCount"><xsl:value-of select="count(//Testing/Test[@Status='failed'])"/> </xsl:variable> - <testsuite name="{$Name}" hostname="{$Hostname}" errors="0" failures="{$FailureCount}" tests="{$TestCount}"> - <xsl:variable name="BuildName"><xsl:value-of select="@BuildName"/></xsl:variable> - <xsl:variable name="BuildStamp"><xsl:value-of select="@BuildStamp"/></xsl:variable> - <xsl:variable name="Generator"><xsl:value-of select="@Generator"/></xsl:variable> - <xsl:variable name="CompilerName"><xsl:value-of select="@CompilerName"/></xsl:variable> - <xsl:variable name="OSName"><xsl:value-of select="@OSName"/></xsl:variable> - <xsl:variable name="OSRelease"><xsl:value-of select="@OSRelease"/></xsl:variable> - <xsl:variable name="OSVersion"><xsl:value-of select="@OSVersion"/></xsl:variable> - <xsl:variable name="OSPlatform"><xsl:value-of select="@OSPlatform"/></xsl:variable> - <xsl:variable name="Is64Bits"><xsl:value-of select="@Is64Bits"/></xsl:variable> - <xsl:variable name="VendorString"><xsl:value-of select="@VendorString"/></xsl:variable> - <xsl:variable name="VendorID"><xsl:value-of select="@VendorID"/></xsl:variable> - <xsl:variable name="FamilyID"><xsl:value-of select="@FamilyID"/></xsl:variable> - <xsl:variable name="ModelID"><xsl:value-of select="@ModelID"/></xsl:variable> - <xsl:variable name="ProcessorCacheSize"><xsl:value-of select="@ProcessorCacheSize"/></xsl:variable> - <xsl:variable name="NumberOfLogicalCPU"><xsl:value-of select="@NumberOfLogicalCPU"/></xsl:variable> - <xsl:variable name="NumberOfPhysicalCPU"><xsl:value-of select="@NumberOfPhysicalCPU"/></xsl:variable> - <xsl:variable name="TotalVirtualMemory"><xsl:value-of select="@TotalVirtualMemory"/></xsl:variable> - <xsl:variable name="TotalPhysicalMemory"><xsl:value-of select="@TotalPhysicalMemory"/></xsl:variable> - <xsl:variable name="LogicalProcessorsPerPhysical"><xsl:value-of select="@LogicalProcessorsPerPhysical"/></xsl:variable> - <xsl:variable name="ProcessorClockFrequency"><xsl:value-of select="@ProcessorClockFrequency"/></xsl:variable> - <properties> - <property name="BuildName" value="{$BuildName}" /> - <property name="BuildStamp" value="{$BuildStamp}" /> - <property name="Name" value="{$Name}" /> - <property name="Generator" value="{$Generator}" /> - <property name="CompilerName" value="{$CompilerName}" /> - <property name="OSName" value="{$OSName}" /> - <property name="Hostname" value="{$Hostname}" /> - <property name="OSRelease" value="{$OSRelease}" /> - <property name="OSVersion" value="{$OSVersion}" /> - <property name="OSPlatform" value="{$OSPlatform}" /> - <property name="Is64Bits" value="{$Is64Bits}" /> - <property name="VendorString" value="{$VendorString}" /> - <property name="VendorID" value="{$VendorID}" /> - <property name="FamilyID" value="{$FamilyID}" /> - <property name="ModelID" value="{$ModelID}" /> - <property name="ProcessorCacheSize" value="{$ProcessorCacheSize}" /> - <property name="NumberOfLogicalCPU" value="{$NumberOfLogicalCPU}" /> - <property name="NumberOfPhysicalCPU" value="{$NumberOfPhysicalCPU}" /> - <property name="TotalVirtualMemory" value="{$TotalVirtualMemory}" /> - <property name="TotalPhysicalMemory" value="{$TotalPhysicalMemory}" /> - <property name="LogicalProcessorsPerPhysical" value="{$LogicalProcessorsPerPhysical}" /> - <property name="ProcessorClockFrequency" value="{$ProcessorClockFrequency}" /> - </properties> - <xsl:apply-templates select="Testing/Test"/> + <xsl:variable name="Name"><xsl:value-of select="@Name"/></xsl:variable> + <xsl:variable name="Hostname"><xsl:value-of select="@Hostname"/></xsl:variable> + <xsl:variable name="TestCount"><xsl:value-of select="count(//TestList/Test)"/> </xsl:variable> + <xsl:variable name="ErrorCount"><xsl:value-of select="count(//TestList/Test[@Status='error'])"/> </xsl:variable> + <xsl:variable name="FailureCount"><xsl:value-of select="count(//Testing/Test[@Status='failed'])"/> </xsl:variable> + <testsuite name="{$Name}" hostname="{$Hostname}" errors="0" failures="{$FailureCount}" tests="{$TestCount}"> + <xsl:variable name="BuildName"><xsl:value-of select="@BuildName"/></xsl:variable> + <xsl:variable name="BuildStamp"><xsl:value-of select="@BuildStamp"/></xsl:variable> + <xsl:variable name="Generator"><xsl:value-of select="@Generator"/></xsl:variable> + <xsl:variable name="CompilerName"><xsl:value-of select="@CompilerName"/></xsl:variable> + <xsl:variable name="OSName"><xsl:value-of select="@OSName"/></xsl:variable> + <xsl:variable name="OSRelease"><xsl:value-of select="@OSRelease"/></xsl:variable> + <xsl:variable name="OSVersion"><xsl:value-of select="@OSVersion"/></xsl:variable> + <xsl:variable name="OSPlatform"><xsl:value-of select="@OSPlatform"/></xsl:variable> + <xsl:variable name="Is64Bits"><xsl:value-of select="@Is64Bits"/></xsl:variable> + <xsl:variable name="VendorString"><xsl:value-of select="@VendorString"/></xsl:variable> + <xsl:variable name="VendorID"><xsl:value-of select="@VendorID"/></xsl:variable> + <xsl:variable name="FamilyID"><xsl:value-of select="@FamilyID"/></xsl:variable> + <xsl:variable name="ModelID"><xsl:value-of select="@ModelID"/></xsl:variable> + <xsl:variable name="ProcessorCacheSize"><xsl:value-of select="@ProcessorCacheSize"/></xsl:variable> + <xsl:variable name="NumberOfLogicalCPU"><xsl:value-of select="@NumberOfLogicalCPU"/></xsl:variable> + <xsl:variable name="NumberOfPhysicalCPU"><xsl:value-of select="@NumberOfPhysicalCPU"/></xsl:variable> + <xsl:variable name="TotalVirtualMemory"><xsl:value-of select="@TotalVirtualMemory"/></xsl:variable> + <xsl:variable name="TotalPhysicalMemory"><xsl:value-of select="@TotalPhysicalMemory"/></xsl:variable> + <xsl:variable name="LogicalProcessorsPerPhysical"><xsl:value-of select="@LogicalProcessorsPerPhysical"/></xsl:variable> + <xsl:variable name="ProcessorClockFrequency"><xsl:value-of select="@ProcessorClockFrequency"/></xsl:variable> + <properties> + <property name="BuildName" value="{$BuildName}" /> + <property name="BuildStamp" value="{$BuildStamp}" /> + <property name="Name" value="{$Name}" /> + <property name="Generator" value="{$Generator}" /> + <property name="CompilerName" value="{$CompilerName}" /> + <property name="OSName" value="{$OSName}" /> + <property name="Hostname" value="{$Hostname}" /> + <property name="OSRelease" value="{$OSRelease}" /> + <property name="OSVersion" value="{$OSVersion}" /> + <property name="OSPlatform" value="{$OSPlatform}" /> + <property name="Is64Bits" value="{$Is64Bits}" /> + <property name="VendorString" value="{$VendorString}" /> + <property name="VendorID" value="{$VendorID}" /> + <property name="FamilyID" value="{$FamilyID}" /> + <property name="ModelID" value="{$ModelID}" /> + <property name="ProcessorCacheSize" value="{$ProcessorCacheSize}" /> + <property name="NumberOfLogicalCPU" value="{$NumberOfLogicalCPU}" /> + <property name="NumberOfPhysicalCPU" value="{$NumberOfPhysicalCPU}" /> + <property name="TotalVirtualMemory" value="{$TotalVirtualMemory}" /> + <property name="TotalPhysicalMemory" value="{$TotalPhysicalMemory}" /> + <property name="LogicalProcessorsPerPhysical" value="{$LogicalProcessorsPerPhysical}" /> + <property name="ProcessorClockFrequency" value="{$ProcessorClockFrequency}" /> + </properties> + <xsl:apply-templates select="Testing/Test"/> - <system-out> - BuildName: <xsl:value-of select="$BuildName" /> - BuildStamp: <xsl:value-of select="$BuildStamp" /> - Name: <xsl:value-of select="$Name" /> - Generator: <xsl:value-of select="$Generator" /> - CompilerName: <xsl:value-of select="$CompilerName" /> - OSName: <xsl:value-of select="$OSName" /> - Hostname: <xsl:value-of select="$Hostname" /> - OSRelease: <xsl:value-of select="$OSRelease" /> - OSVersion: <xsl:value-of select="$OSVersion" /> - OSPlatform: <xsl:value-of select="$OSPlatform" /> - Is64Bits: <xsl:value-of select="$Is64Bits" /> - VendorString: <xsl:value-of select="$VendorString" /> - VendorID: <xsl:value-of select="$VendorID" /> - FamilyID: <xsl:value-of select="$FamilyID" /> - ModelID: <xsl:value-of select="$ModelID" /> - ProcessorCacheSize: <xsl:value-of select="$ProcessorCacheSize" /> - NumberOfLogicalCPU: <xsl:value-of select="$NumberOfLogicalCPU" /> - NumberOfPhysicalCPU: <xsl:value-of select="$NumberOfPhysicalCPU" /> - TotalVirtualMemory: <xsl:value-of select="$TotalVirtualMemory" /> - TotalPhysicalMemory: <xsl:value-of select="$TotalPhysicalMemory" /> - LogicalProcessorsPerPhysical: <xsl:value-of select="$LogicalProcessorsPerPhysical" /> - ProcessorClockFrequency: <xsl:value-of select="$ProcessorClockFrequency" /> - </system-out> - </testsuite> + <system-out> + BuildName: <xsl:value-of select="$BuildName" /> + BuildStamp: <xsl:value-of select="$BuildStamp" /> + Name: <xsl:value-of select="$Name" /> + Generator: <xsl:value-of select="$Generator" /> + CompilerName: <xsl:value-of select="$CompilerName" /> + OSName: <xsl:value-of select="$OSName" /> + Hostname: <xsl:value-of select="$Hostname" /> + OSRelease: <xsl:value-of select="$OSRelease" /> + OSVersion: <xsl:value-of select="$OSVersion" /> + OSPlatform: <xsl:value-of select="$OSPlatform" /> + Is64Bits: <xsl:value-of select="$Is64Bits" /> + VendorString: <xsl:value-of select="$VendorString" /> + VendorID: <xsl:value-of select="$VendorID" /> + FamilyID: <xsl:value-of select="$FamilyID" /> + ModelID: <xsl:value-of select="$ModelID" /> + ProcessorCacheSize: <xsl:value-of select="$ProcessorCacheSize" /> + NumberOfLogicalCPU: <xsl:value-of select="$NumberOfLogicalCPU" /> + NumberOfPhysicalCPU: <xsl:value-of select="$NumberOfPhysicalCPU" /> + TotalVirtualMemory: <xsl:value-of select="$TotalVirtualMemory" /> + TotalPhysicalMemory: <xsl:value-of select="$TotalPhysicalMemory" /> + LogicalProcessorsPerPhysical: <xsl:value-of select="$LogicalProcessorsPerPhysical" /> + ProcessorClockFrequency: <xsl:value-of select="$ProcessorClockFrequency" /> + </system-out> + </testsuite> </xsl:template> <xsl:template match="Testing/Test"> - <xsl:variable name="testcasename"><xsl:value-of select= "Name"/></xsl:variable> - <xsl:variable name="testclassname"><xsl:value-of select= " concat('this', substring(Path,2))"/></xsl:variable> - <xsl:variable name="exectime"> - <xsl:for-each select="Results/NamedMeasurement"> - <xsl:if test="@name = 'Execution Time'"> - <xsl:value-of select="."/> - </xsl:if> - </xsl:for-each> - </xsl:variable> + <xsl:variable name="testcasename"><xsl:value-of select= "Name"/></xsl:variable> + <xsl:variable name="testclassname"><xsl:value-of select= " concat('this', substring(Path,2))"/></xsl:variable> + <xsl:variable name="exectime"> + <xsl:for-each select="Results/NamedMeasurement"> + <xsl:if test="@name = 'Execution Time'"> + <xsl:value-of select="."/> + </xsl:if> + </xsl:for-each> + </xsl:variable> - <testcase name="{$testcasename}" classname="{$testclassname}" time="{$exectime}"> - <xsl:if test="@Status = 'passed'"> - </xsl:if> - <xsl:if test="@Status = 'failed'"> - <xsl:variable name="failtype"> - <xsl:for-each select="Results/NamedMeasurement"> - <xsl:if test="@name = 'Exit Code'"> - <xsl:value-of select="."/> - </xsl:if> - </xsl:for-each> - </xsl:variable> - <xsl:variable name="failcode"> - <xsl:for-each select="Results/NamedMeasurement"> - <xsl:if test="@name = 'Exit Value'"> - <xsl:value-of select="."/> - </xsl:if> - </xsl:for-each> - </xsl:variable> - <failure message="{$failtype} ({$failcode})"><xsl:value-of select="Results/Measurement/Value/text()" /></failure> - </xsl:if> - <xsl:if test="@Status = 'notrun'"> - <skipped><xsl:value-of select="Results/Measurement/Value/text()" /></skipped> - </xsl:if> - </testcase> + <testcase name="{$testcasename}" classname="{$testclassname}" time="{$exectime}"> + <xsl:if test="@Status = 'passed'"> + </xsl:if> + <xsl:if test="@Status = 'failed'"> + <xsl:variable name="failtype"> + <xsl:for-each select="Results/NamedMeasurement"> + <xsl:if test="@name = 'Exit Code'"> + <xsl:value-of select="."/> + </xsl:if> + </xsl:for-each> + </xsl:variable> + <xsl:variable name="failcode"> + <xsl:for-each select="Results/NamedMeasurement"> + <xsl:if test="@name = 'Exit Value'"> + <xsl:value-of select="."/> + </xsl:if> + </xsl:for-each> + </xsl:variable> + <failure message="{$failtype} ({$failcode})"><xsl:value-of select="Results/Measurement/Value/text()" /></failure> + </xsl:if> + <xsl:if test="@Status = 'notrun'"> + <skipped><xsl:value-of select="Results/Measurement/Value/text()" /></skipped> + </xsl:if> + </testcase> </xsl:template> </xsl:stylesheet> diff --git a/scripts/travis/boost.sh b/scripts/travis/boost.sh index f5d0f88ca8d924c9415adfe98f9ebda8d87609a7..62955a9af348b26e50dc90241624e97dbc55c705 100644 --- a/scripts/travis/boost.sh +++ b/scripts/travis/boost.sh @@ -2,10 +2,10 @@ set -e # check to see if boost folder is empty if [ ! -d "$HOME/boost_1_56_0/boost" ]; then - TAR="boost_1_56_0.tar.gz" - cd $HOME - curl -L -o $TAR http://sourceforge.net/projects/boost/files/boost/1.56.0/$TAR/download; - tar -xzf $TAR; + TAR="boost_1_56_0.tar.gz" + cd $HOME + curl -L -o $TAR http://sourceforge.net/projects/boost/files/boost/1.56.0/$TAR/download; + tar -xzf $TAR; else - echo 'Using cached boost directory.'; + echo 'Using cached boost directory.'; fi diff --git a/scripts/travis/cmake.sh b/scripts/travis/cmake.sh index bd2827abe1af23a7e8f1b59e838c14c75458fb35..5c63baa489874784ebd95e2df403cdd97f6db2e4 100644 --- a/scripts/travis/cmake.sh +++ b/scripts/travis/cmake.sh @@ -2,10 +2,10 @@ set -e # check to see if cmake folder is empty if [ ! -d "$HOME/cmake-3.1.1-Linux-x86_64/bin" ]; then - CMAKE_TAR="cmake-3.1.1-Linux-x86_64.tar.gz" - cd $HOME - curl -L -o $CMAKE_TAR http://www.cmake.org/files/v3.1/$CMAKE_TAR; - tar -xzf $CMAKE_TAR; + CMAKE_TAR="cmake-3.1.1-Linux-x86_64.tar.gz" + cd $HOME + curl -L -o $CMAKE_TAR http://www.cmake.org/files/v3.1/$CMAKE_TAR; + tar -xzf $CMAKE_TAR; else - echo 'Using cached cmake directory.'; + echo 'Using cached cmake directory.'; fi diff --git a/scripts/travis/vtk.sh b/scripts/travis/vtk.sh index 6728e532c561dd1f81fa8b3d6b89fe0222135e91..b3cf429617436e37c6c51a91a6c5631f247d69c6 100644 --- a/scripts/travis/vtk.sh +++ b/scripts/travis/vtk.sh @@ -1,9 +1,9 @@ #!/bin/sh set -e if [ ! -d "$HOME/VTK-Install/include" ]; then - cd $HOME - wget http://opengeosys.s3.amazonaws.com/ogs6-lib-sources/vtk-6.3.0.tar.gz - tar -xzf vtk-6.3.0.tar.gz + cd $HOME + wget http://opengeosys.s3.amazonaws.com/ogs6-lib-sources/vtk-6.3.0.tar.gz + tar -xzf vtk-6.3.0.tar.gz else echo 'Using cached vtk directory.'; fi