diff options
author | David Bremner <bremner@debian.org> | 2018-12-25 22:44:44 +0900 |
---|---|---|
committer | David Bremner <bremner@debian.org> | 2018-12-25 22:44:44 +0900 |
commit | 33cc53ba511843ac9857470e74e043013d3620fe (patch) | |
tree | ebc0e94b5486710fc2f381d92fab9a594f1dc62c /src/external/rawspeed/cmake/Modules | |
parent | 1fddb41abdd4ca3be5bfdfe019e126b188879e15 (diff) |
Importing darktable_2.6.0.orig.tar.xz
Diffstat (limited to 'src/external/rawspeed/cmake/Modules')
21 files changed, 191 insertions, 56 deletions
diff --git a/src/external/rawspeed/cmake/Modules/CheckZLIB.cmake b/src/external/rawspeed/cmake/Modules/CheckZLIB.cmake index 413b550ca..97d70cef8 100644 --- a/src/external/rawspeed/cmake/Modules/CheckZLIB.cmake +++ b/src/external/rawspeed/cmake/Modules/CheckZLIB.cmake @@ -3,6 +3,8 @@ include(CheckTypeSize) include(CheckPrototypeDefinition) include(CheckCXXSymbolExists) +enable_language(C) + set(CMAKE_REQUIRED_INCLUDES_SAVE "${CMAKE_REQUIRED_INCLUDES}") set(CMAKE_EXTRA_INCLUDE_FILES_SAVE "${CMAKE_EXTRA_INCLUDE_FILES}") set(CMAKE_REQUIRED_LIBRARIES_SAVE "${CMAKE_REQUIRED_LIBRARIES}") diff --git a/src/external/rawspeed/cmake/Modules/FindLLVMAr.cmake b/src/external/rawspeed/cmake/Modules/FindLLVMAr.cmake index aca7db536..4f5a90c20 100644 --- a/src/external/rawspeed/cmake/Modules/FindLLVMAr.cmake +++ b/src/external/rawspeed/cmake/Modules/FindLLVMAr.cmake @@ -1,4 +1,4 @@ -find_program(LLVMAR_EXECUTABLE NAMES llvm-ar llvm-ar-6.0 llvm-ar-5.0 llvm-ar-4.0) +find_program(LLVMAR_EXECUTABLE NAMES llvm-ar llvm-ar-7 llvm-ar-6.0 llvm-ar-5.0 llvm-ar-4.0 llvm-ar-3.9) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(LLVMAr diff --git a/src/external/rawspeed/cmake/Modules/FindLLVMCXXFilt.cmake b/src/external/rawspeed/cmake/Modules/FindLLVMCXXFilt.cmake index 4cc093f09..2381d8df4 100644 --- a/src/external/rawspeed/cmake/Modules/FindLLVMCXXFilt.cmake +++ b/src/external/rawspeed/cmake/Modules/FindLLVMCXXFilt.cmake @@ -1,5 +1,5 @@ find_program(LLVMCXXFilt_EXECUTABLE - NAMES llvm-cxxfilt llvm-cxxfilt-6.0 llvm-cxxfilt-5.0 llvm-cxxfilt-4.0 + NAMES llvm-cxxfilt llvm-cxxfilt-7 llvm-cxxfilt-6.0 llvm-cxxfilt-5.0 llvm-cxxfilt-4.0 llvm-cxxfilt-3.9 DOC "The llvm-cxxfilt executable" ) diff --git a/src/external/rawspeed/cmake/Modules/FindLLVMClangTidy.cmake b/src/external/rawspeed/cmake/Modules/FindLLVMClangTidy.cmake index 019b20c3b..3f3fb7f34 100644 --- a/src/external/rawspeed/cmake/Modules/FindLLVMClangTidy.cmake +++ b/src/external/rawspeed/cmake/Modules/FindLLVMClangTidy.cmake @@ -1,4 +1,4 @@ -find_program(CLANGTIDY_PATH NAMES clang-tidy clang-tidy-6.0) +find_program(CLANGTIDY_PATH NAMES clang-tidy clang-tidy-7 clang-tidy-6.0 clang-tidy-5.0 clang-tidy-4.0 clang-tidy-3.9) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(LLVMClangTidy diff --git a/src/external/rawspeed/cmake/Modules/FindLLVMCov.cmake b/src/external/rawspeed/cmake/Modules/FindLLVMCov.cmake index f8104959e..594c79a57 100644 --- a/src/external/rawspeed/cmake/Modules/FindLLVMCov.cmake +++ b/src/external/rawspeed/cmake/Modules/FindLLVMCov.cmake @@ -1,4 +1,4 @@ -find_program(LLVMCOV_PATH NAMES llvm-cov) +find_program(LLVMCOV_PATH NAMES llvm-cov llvm-cov-7 llvm-cov-6.0 llvm-cov-5.0 llvm-cov-4.0 llvm-cov-3.9) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(LLVMCov diff --git a/src/external/rawspeed/cmake/Modules/FindLLVMLLD.cmake b/src/external/rawspeed/cmake/Modules/FindLLVMLLD.cmake index 6e8574dfd..8016089e9 100644 --- a/src/external/rawspeed/cmake/Modules/FindLLVMLLD.cmake +++ b/src/external/rawspeed/cmake/Modules/FindLLVMLLD.cmake @@ -1,4 +1,4 @@ -find_program(LLVMLLD_EXECUTABLE NAMES ld.lld lld lld-6.0 lld-5.0) +find_program(LLVMLLD_EXECUTABLE NAMES ld.lld lld lld-7 lld-6.0 lld-5.0 lld-4.0 lld-3.9) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(LLVMLLD diff --git a/src/external/rawspeed/cmake/Modules/FindLLVMNm.cmake b/src/external/rawspeed/cmake/Modules/FindLLVMNm.cmake index 2872424e0..f92c4cbe5 100644 --- a/src/external/rawspeed/cmake/Modules/FindLLVMNm.cmake +++ b/src/external/rawspeed/cmake/Modules/FindLLVMNm.cmake @@ -1,4 +1,4 @@ -find_program(LLVMNM_EXECUTABLE NAMES llvm-nm llvm-nm-6.0 llvm-nm-5.0 llvm-nm-4.0) +find_program(LLVMNM_EXECUTABLE NAMES llvm-nm llvm-nm-7 llvm-nm-6.0 llvm-nm-5.0 llvm-nm-4.0 llvm-nm-3.9) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(LLVMNm diff --git a/src/external/rawspeed/cmake/Modules/FindLLVMObjCopy.cmake b/src/external/rawspeed/cmake/Modules/FindLLVMObjCopy.cmake index 1eab8fd4e..f8c65de44 100644 --- a/src/external/rawspeed/cmake/Modules/FindLLVMObjCopy.cmake +++ b/src/external/rawspeed/cmake/Modules/FindLLVMObjCopy.cmake @@ -1,4 +1,4 @@ -find_program(LLVMOBJCOPY_EXECUTABLE NAMES llvm-objcopy llvm-objcopy-6.0) +find_program(LLVMOBJCOPY_EXECUTABLE NAMES llvm-objcopy llvm-objcopy-7 llvm-objcopy-6.0 llvm-objcopy-5.0 llvm-objcopy-4.0 llvm-objcopy-3.9) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(LLVMObjCopy diff --git a/src/external/rawspeed/cmake/Modules/FindLLVMObjDump.cmake b/src/external/rawspeed/cmake/Modules/FindLLVMObjDump.cmake index 59abf7f25..2810ac002 100644 --- a/src/external/rawspeed/cmake/Modules/FindLLVMObjDump.cmake +++ b/src/external/rawspeed/cmake/Modules/FindLLVMObjDump.cmake @@ -1,4 +1,4 @@ -find_program(LLVMOBJDUMP_EXECUTABLE NAMES llvm-objdump llvm-objdump-6.0 llvm-objdump-5.0 llvm-objdump-4.0) +find_program(LLVMOBJDUMP_EXECUTABLE NAMES llvm-objdump llvm-objdump-7 llvm-objdump-6.0 llvm-objdump-5.0 llvm-objdump-4.0 llvm-objdump-3.9) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(LLVMObjDump diff --git a/src/external/rawspeed/cmake/Modules/FindLLVMProfData.cmake b/src/external/rawspeed/cmake/Modules/FindLLVMProfData.cmake index 72ca5a861..b92b9420e 100644 --- a/src/external/rawspeed/cmake/Modules/FindLLVMProfData.cmake +++ b/src/external/rawspeed/cmake/Modules/FindLLVMProfData.cmake @@ -1,4 +1,4 @@ -find_program(LLVMPROFDATA_PATH NAMES llvm-profdata) +find_program(LLVMPROFDATA_PATH NAMES llvm-profdata llvm-profdata-7 llvm-profdata-6.0 llvm-profdata-5.0 llvm-profdata-4.0 llvm-profdata-3.9) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(LLVMProfData diff --git a/src/external/rawspeed/cmake/Modules/FindLLVMRanLib.cmake b/src/external/rawspeed/cmake/Modules/FindLLVMRanLib.cmake index 5db031194..860917a18 100644 --- a/src/external/rawspeed/cmake/Modules/FindLLVMRanLib.cmake +++ b/src/external/rawspeed/cmake/Modules/FindLLVMRanLib.cmake @@ -1,4 +1,4 @@ -find_program(LLVMRANLIB_EXECUTABLE NAMES llvm-ranlib llvm-ranlib-6.0 llvm-ranlib-5.0 llvm-ranlib-4.0) +find_program(LLVMRANLIB_EXECUTABLE NAMES llvm-ranlib llvm-ranlib-7 llvm-ranlib-6.0 llvm-ranlib-5.0 llvm-ranlib-4.0 llvm-ranlib-3.9) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(LLVMRanLib diff --git a/src/external/rawspeed/cmake/Modules/GoogleBenchmark.cmake b/src/external/rawspeed/cmake/Modules/GoogleBenchmark.cmake index 15d4d004e..7fa38528c 100644 --- a/src/external/rawspeed/cmake/Modules/GoogleBenchmark.cmake +++ b/src/external/rawspeed/cmake/Modules/GoogleBenchmark.cmake @@ -1,7 +1,3 @@ -cmake_minimum_required(VERSION 3.0) - -project(googlebenchmark NONE) - # Download and unpack googlebenchmark at configure time configure_file(${RAWSPEED_SOURCE_DIR}/cmake/Modules/GoogleBenchmark.cmake.in ${CMAKE_BINARY_DIR}/googlebenchmark/CMakeLists.txt @ONLY) @@ -44,9 +40,11 @@ set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE_SAVE "${CMAKE_CXX_INCLUDE_WHAT_YOU_USE}") unset(CMAKE_CXX_CLANG_TIDY) unset(CMAKE_CXX_INCLUDE_WHAT_YOU_USE) +include(${CMAKE_BINARY_DIR}/googlebenchmark/googlebenchmark-paths.cmake) + # Add googlebenchmark directly to our build. This defines the benchmark target. -add_subdirectory(${CMAKE_BINARY_DIR}/googlebenchmark/googlebenchmark-src - ${CMAKE_BINARY_DIR}/googlebenchmark/googlebenchmark-build +add_subdirectory(${GOOGLEBENCHMARK_SOURCE_DIR} + ${GOOGLEBENCHMARK_BINARY_DIR} EXCLUDE_FROM_ALL) set_target_properties(benchmark PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:benchmark,INTERFACE_INCLUDE_DIRECTORIES>) diff --git a/src/external/rawspeed/cmake/Modules/GoogleBenchmark.cmake.in b/src/external/rawspeed/cmake/Modules/GoogleBenchmark.cmake.in index ee18edc2c..38c25dcc8 100644 --- a/src/external/rawspeed/cmake/Modules/GoogleBenchmark.cmake.in +++ b/src/external/rawspeed/cmake/Modules/GoogleBenchmark.cmake.in @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.4.0) project(googlebenchmark-download NONE) @@ -17,11 +17,9 @@ if(EXISTS "${GOOGLEBENCHMARK_PATH}" AND IS_DIRECTORY "${GOOGLEBENCHMARK_PATH}" A ExternalProject_Add( googlebenchmark - URL "${GOOGLEBENCHMARK_PATH}" PREFIX "${CMAKE_BINARY_DIR}/googlebenchmark" - SOURCE_DIR "${CMAKE_BINARY_DIR}/googlebenchmark-src" + SOURCE_DIR "${GOOGLEBENCHMARK_PATH}" # use existing src dir. BINARY_DIR "${CMAKE_BINARY_DIR}/googlebenchmark-build" - # PATCH_COMMAND patch -p1 -i "@rawspeed_SOURCE_DIR@/cmake/Modules/GoogleBenchmark-fixes.patch" CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" @@ -34,12 +32,11 @@ else() message(WARNING "Did not find GOOGLEBENCHMARK sources! Fetching from web...") ExternalProject_Add( googlebenchmark - URL https://github.com/google/benchmark/archive/v1.3.0.tar.gz - URL_HASH SHA512=272775e4dbd0ecc65a2a3a64f24e79682b630929dea3af47349329ac8b796341f1197458a67c9aac0e514857ebe7cbc191d18f6fd2c0aea3242562e69d8a6849 + URL https://github.com/google/benchmark/archive/v1.4.1.tar.gz + URL_HASH SHA512=e9d71b4679cb4e4d755f7bb4101e131b37e209b6aebd0853e0c63eb11c42b75faa5da4ff8c265149808a475f3a1cfb140c5b49f877acfda908a4bb7add983aae PREFIX "${CMAKE_BINARY_DIR}/googlebenchmark" SOURCE_DIR "${CMAKE_BINARY_DIR}/googlebenchmark-src" BINARY_DIR "${CMAKE_BINARY_DIR}/googlebenchmark-build" - # PATCH_COMMAND patch -p1 -i "@rawspeed_SOURCE_DIR@/cmake/Modules/GoogleBenchmark-fixes.patch" CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" @@ -47,3 +44,9 @@ else() ) endif() endif() + +ExternalProject_Get_Property(googlebenchmark SOURCE_DIR BINARY_DIR) +file(WRITE googlebenchmark-paths.cmake +"set(GOOGLEBENCHMARK_SOURCE_DIR \"${SOURCE_DIR}\") +set(GOOGLEBENCHMARK_BINARY_DIR \"${BINARY_DIR}\") +") diff --git a/src/external/rawspeed/cmake/Modules/GoogleTest.cmake b/src/external/rawspeed/cmake/Modules/GoogleTest.cmake index 2676db6e9..7839625c8 100644 --- a/src/external/rawspeed/cmake/Modules/GoogleTest.cmake +++ b/src/external/rawspeed/cmake/Modules/GoogleTest.cmake @@ -1,7 +1,3 @@ -cmake_minimum_required(VERSION 3.0) - -project(googletest NONE) - # Download and unpack googletest at configure time configure_file(${RAWSPEED_SOURCE_DIR}/cmake/Modules/GoogleTest.cmake.in ${CMAKE_BINARY_DIR}/googletest/CMakeLists.txt @ONLY) @@ -49,10 +45,12 @@ set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE_SAVE "${CMAKE_CXX_INCLUDE_WHAT_YOU_USE}") unset(CMAKE_CXX_CLANG_TIDY) unset(CMAKE_CXX_INCLUDE_WHAT_YOU_USE) +include(${CMAKE_BINARY_DIR}/googletest/googletest-paths.cmake) + # Add googletest directly to our build. This defines # the gtest and gtest_main targets. -add_subdirectory(${CMAKE_BINARY_DIR}/googletest/googletest-src - ${CMAKE_BINARY_DIR}/googletest/googletest-build +add_subdirectory(${GOOGLETEST_SOURCE_DIR} + ${GOOGLETEST_BINARY_DIR} EXCLUDE_FROM_ALL) set_target_properties(gtest PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:gtest,INTERFACE_INCLUDE_DIRECTORIES>) diff --git a/src/external/rawspeed/cmake/Modules/GoogleTest.cmake.in b/src/external/rawspeed/cmake/Modules/GoogleTest.cmake.in index ca876c4e9..c463accbb 100644 --- a/src/external/rawspeed/cmake/Modules/GoogleTest.cmake.in +++ b/src/external/rawspeed/cmake/Modules/GoogleTest.cmake.in @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.4.0) project(googletest-download NONE) @@ -20,9 +20,8 @@ if(EXISTS "${GOOGLETEST_PATH}" AND IS_DIRECTORY "${GOOGLETEST_PATH}" ExternalProject_Add( googletest - URL "${GOOGLETEST_PATH}" PREFIX "${CMAKE_BINARY_DIR}/googletest" - SOURCE_DIR "${CMAKE_BINARY_DIR}/googletest-src" + SOURCE_DIR "${GOOGLETEST_PATH}" # use existing src dir. BINARY_DIR "${CMAKE_BINARY_DIR}/googletest-build" CONFIGURE_COMMAND "" BUILD_COMMAND "" @@ -36,8 +35,8 @@ else() message(WARNING "Did not find Google Test sources! Fetching from web...") ExternalProject_Add( googletest - URL https://github.com/google/googletest/archive/release-1.8.0.tar.gz - URL_HASH SHA512=1dbece324473e53a83a60601b02c92c089f5d314761351974e097b2cf4d24af4296f9eb8653b6b03b1e363d9c5f793897acae1f0c7ac40149216035c4d395d9d + URL https://github.com/google/googletest/archive/release-1.8.1.tar.gz + URL_HASH SHA512=e6283c667558e1fd6e49fa96e52af0e415a3c8037afe1d28b7ff1ec4c2ef8f49beb70a9327b7fc77eb4052a58c4ccad8b5260ec90e4bceeac7a46ff59c4369d7 PREFIX "${CMAKE_BINARY_DIR}/googletest" SOURCE_DIR "${CMAKE_BINARY_DIR}/googletest-src" BINARY_DIR "${CMAKE_BINARY_DIR}/googletest-build" @@ -48,3 +47,9 @@ else() ) endif() endif() + +ExternalProject_Get_Property(googletest SOURCE_DIR BINARY_DIR) +file(WRITE googletest-paths.cmake +"set(GOOGLETEST_SOURCE_DIR \"${SOURCE_DIR}\") +set(GOOGLETEST_BINARY_DIR \"${BINARY_DIR}\") +") diff --git a/src/external/rawspeed/cmake/Modules/LLVMOpenMP.cmake b/src/external/rawspeed/cmake/Modules/LLVMOpenMP.cmake new file mode 100644 index 000000000..7465f8fcb --- /dev/null +++ b/src/external/rawspeed/cmake/Modules/LLVMOpenMP.cmake @@ -0,0 +1,71 @@ +# Download and unpack LLVM OpenMP runtime library at configure time +configure_file(${RAWSPEED_SOURCE_DIR}/cmake/Modules/LLVMOpenMP.cmake.in ${CMAKE_BINARY_DIR}/llvm-openmp/CMakeLists.txt @ONLY) + +execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" + -DALLOW_DOWNLOADING_LLVMOPENMP=${ALLOW_DOWNLOADING_LLVMOPENMP} -DLLVMOPENMP_PATH:PATH=${LLVMOPENMP_PATH} . + RESULT_VARIABLE result + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/llvm-openmp +) + +if(result) + message(FATAL_ERROR "CMake step for LLVM OpenMP runtime library failed: ${result}") +endif() + +execute_process( + COMMAND ${CMAKE_COMMAND} --build . + RESULT_VARIABLE result + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/llvm-openmp +) + +if(result) + message(FATAL_ERROR "Build step for LLVM OpenMP runtime library failed: ${result}") +endif() + +# We are building it separately from the LLVM itself. +set(OPENMP_STANDALONE_BUILD ON CACHE BOOL "" FORCE) + +# let's insist on static library. +set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) +set(LIBOMP_ENABLE_SHARED OFF CACHE BOOL "" FORCE) + +set(CMAKE_C_FLAGS_SAVE "${CMAKE_C_FLAGS}") +set(CMAKE_CXX_FLAGS_SAVE "${CMAKE_CXX_FLAGS}") + +set(CMAKE_C_FLAGS_SANITIZE_SAVE "${CMAKE_C_FLAGS_SANITIZE}") +set(CMAKE_CXX_FLAGS_SANITIZE_SAVE "${CMAKE_CXX_FLAGS_SANITIZE}") + +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w") + +set(ubsan "-fsanitize-recover=undefined") +if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + set(ubsan "${ubsan} -fsanitize-recover=integer") +endif() + +SET(CMAKE_CXX_FLAGS_SANITIZE "${CMAKE_CXX_FLAGS_SANITIZE} ${ubsan}") +SET(CMAKE_C_FLAGS_SANITIZE "${CMAKE_C_FLAGS_SANITIZE} ${ubsan}") + +set(CMAKE_CXX_CLANG_TIDY_SAVE "${CMAKE_CXX_CLANG_TIDY}") +set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE_SAVE "${CMAKE_CXX_INCLUDE_WHAT_YOU_USE}") + +unset(CMAKE_CXX_CLANG_TIDY) +unset(CMAKE_CXX_INCLUDE_WHAT_YOU_USE) + +include(${CMAKE_BINARY_DIR}/llvm-openmp/llvm-openmp-paths.cmake) + +# Add llvm openmp directly to our build. This defines the omp target. +add_subdirectory(${LLVMOPENMP_SOURCE_DIR} + ${LLVMOPENMP_BINARY_DIR} + EXCLUDE_FROM_ALL) + +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_SAVE}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_SAVE}") + +set(CMAKE_C_FLAGS_SANITIZE "${CMAKE_C_FLAGS_SANITIZE_SAVE}" CACHE STRING "Flags used by the C++ compiler during sanitized (ASAN+UBSAN) builds." FORCE ) +set(CMAKE_CXX_FLAGS_SANITIZE "${CMAKE_CXX_FLAGS_SANITIZE_SAVE}" CACHE STRING "Flags used by the C++ compiler during sanitized (ASAN+UBSAN) builds." FORCE ) +MARK_AS_ADVANCED( + CMAKE_CXX_FLAGS_SANITIZE + CMAKE_C_FLAGS_SANITIZE ) + +set(CMAKE_CXX_CLANG_TIDY "${CMAKE_CXX_CLANG_TIDY_SAVE}") +set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE "${CMAKE_CXX_INCLUDE_WHAT_YOU_USE_SAVE}") diff --git a/src/external/rawspeed/cmake/Modules/LLVMOpenMP.cmake.in b/src/external/rawspeed/cmake/Modules/LLVMOpenMP.cmake.in new file mode 100644 index 000000000..e2f7c9334 --- /dev/null +++ b/src/external/rawspeed/cmake/Modules/LLVMOpenMP.cmake.in @@ -0,0 +1,52 @@ +cmake_minimum_required(VERSION 3.4.0) + +project(llvm-openmp-download NONE) + +# Enable ExternalProject CMake module +include(ExternalProject) + +option(ALLOW_DOWNLOADING_LLVMOPENMP "If LLVM OpenMP runtime library src tree is not found in location specified by LLVMOPENMP_PATH, do fetch the archive from internet" OFF) +set(LLVMOPENMP_PATH "/usr/src/openmp" CACHE PATH "Path to the LLVM OpenMP runtime library root tree.") + +# Download and install LLVM OpenMP runtime library + +message(STATUS "Looking for LLVM OpenMP runtime library sources") +message(STATUS "Looking for LLVM OpenMP runtime library sources in ${LLVMOPENMP_PATH}") +if(EXISTS "${LLVMOPENMP_PATH}" AND IS_DIRECTORY "${LLVMOPENMP_PATH}" AND EXISTS "${LLVMOPENMP_PATH}/CMakeLists.txt") + message(STATUS "Found LLVM OpenMP runtime library in ${LLVMOPENMP_PATH}") + + ExternalProject_Add( + llvm-openmp + PREFIX "${CMAKE_BINARY_DIR}/llvm-openmp" + SOURCE_DIR "${LLVMOPENMP_PATH}" # use existing src dir. + BINARY_DIR "${CMAKE_BINARY_DIR}/llvm-openmp-build" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "" + ) +else() + if(NOT ALLOW_DOWNLOADING_LLVMOPENMP) + message(SEND_ERROR "Did not find LLVM OpenMP runtime library sources! Either pass correct path in LLVMOPENMP_PATH, or enable ALLOW_DOWNLOADING_LLVMOPENMP, or disable USE_BUNDLED_LLVMOPENMP, or disable WITH_OPENMP.") + else() + message(WARNING "Did not find LLVM OpenMP runtime library sources! Fetching from web...") + ExternalProject_Add( + llvm-openmp + URL https://releases.llvm.org/7.0.0/openmp-7.0.0.src.tar.xz + URL_HASH SHA512=bda383d62c822db41504d7774974809cd2af042b03a0b4ca450cc1478c5977682f5c646734801c1b7a16233141d62359c17e87e1435c48a222e159a8763f8857 + PREFIX "${CMAKE_BINARY_DIR}/llvm-openmp" + SOURCE_DIR "${CMAKE_BINARY_DIR}/llvm-openmp-src" + BINARY_DIR "${CMAKE_BINARY_DIR}/llvm-openmp-build" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + endif() +endif() + +ExternalProject_Get_Property(llvm-openmp SOURCE_DIR BINARY_DIR) +file(WRITE llvm-openmp-paths.cmake +"set(LLVMOPENMP_SOURCE_DIR \"${SOURCE_DIR}\") +set(LLVMOPENMP_BINARY_DIR \"${BINARY_DIR}\") +") diff --git a/src/external/rawspeed/cmake/Modules/Pugixml.cmake b/src/external/rawspeed/cmake/Modules/Pugixml.cmake index 752ceb7d6..78454d7a8 100644 --- a/src/external/rawspeed/cmake/Modules/Pugixml.cmake +++ b/src/external/rawspeed/cmake/Modules/Pugixml.cmake @@ -1,7 +1,3 @@ -cmake_minimum_required(VERSION 3.0) - -project(pugixml NONE) - # Download and unpack pugixml at configure time configure_file(${RAWSPEED_SOURCE_DIR}/cmake/Modules/Pugixml.cmake.in ${CMAKE_BINARY_DIR}/pugixml/CMakeLists.txt @ONLY) @@ -43,10 +39,12 @@ set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE_SAVE "${CMAKE_CXX_INCLUDE_WHAT_YOU_USE}") unset(CMAKE_CXX_CLANG_TIDY) unset(CMAKE_CXX_INCLUDE_WHAT_YOU_USE) +include(${CMAKE_BINARY_DIR}/pugixml/pugixml-paths.cmake) + # Add pugixml directly to our build. This defines # the gtest and gtest_main targets. -add_subdirectory(${CMAKE_BINARY_DIR}/pugixml/pugixml-src - ${CMAKE_BINARY_DIR}/pugixml/pugixml-build) +add_subdirectory(${PUGIXML_SOURCE_DIR} + ${PUGIXML_BINARY_DIR}) set_target_properties(pugixml PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:pugixml,INTERFACE_INCLUDE_DIRECTORIES>) diff --git a/src/external/rawspeed/cmake/Modules/Pugixml.cmake.in b/src/external/rawspeed/cmake/Modules/Pugixml.cmake.in index 536f0e258..a6f3f2a4b 100644 --- a/src/external/rawspeed/cmake/Modules/Pugixml.cmake.in +++ b/src/external/rawspeed/cmake/Modules/Pugixml.cmake.in @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.4.0) project(pugixml-download NONE) @@ -17,9 +17,8 @@ if(EXISTS "${PUGIXML_PATH}" AND IS_DIRECTORY "${PUGIXML_PATH}" AND EXISTS "${PUG ExternalProject_Add( pugixml - URL "${PUGIXML_PATH}" PREFIX "${CMAKE_BINARY_DIR}/pugixml" - SOURCE_DIR "${CMAKE_BINARY_DIR}/pugixml-src" + SOURCE_DIR "${PUGIXML_PATH}" # use existing src dir. BINARY_DIR "${CMAKE_BINARY_DIR}/pugixml-build" CONFIGURE_COMMAND "" BUILD_COMMAND "" @@ -33,8 +32,8 @@ else() message(WARNING "Did not find pugixml sources! Fetching from web...") ExternalProject_Add( pugixml - URL https://github.com/zeux/pugixml/releases/download/v1.8.1/pugixml-1.8.1.tar.gz - URL_HASH SHA512=1aec6f8cd0c385b66e848020d94d331db788c78523f72d145726738433a784b518084ec45a6eeffb0a6585bcf2759d09ad1e3d304d15d99068d43dbfd6db9d31 + URL https://github.com/zeux/pugixml/releases/download/v1.9/pugixml-1.9.tar.gz + URL_HASH SHA512=853a9d985aae537391c6524d5413ef4de237d99d96cc58ea7fe7152f786df1e408cdacd2e4387697e23c3e67cdc1d42b29de554501309eae16d86edd0e24785f PREFIX "${CMAKE_BINARY_DIR}/pugixml" SOURCE_DIR "${CMAKE_BINARY_DIR}/pugixml-src" BINARY_DIR "${CMAKE_BINARY_DIR}/pugixml-build" @@ -45,3 +44,9 @@ else() ) endif() endif() + +ExternalProject_Get_Property(pugixml SOURCE_DIR BINARY_DIR) +file(WRITE pugixml-paths.cmake +"set(PUGIXML_SOURCE_DIR \"${SOURCE_DIR}\") +set(PUGIXML_BINARY_DIR \"${BINARY_DIR}\") +") diff --git a/src/external/rawspeed/cmake/Modules/Zlib.cmake b/src/external/rawspeed/cmake/Modules/Zlib.cmake index 31a4d024f..df114c5bf 100644 --- a/src/external/rawspeed/cmake/Modules/Zlib.cmake +++ b/src/external/rawspeed/cmake/Modules/Zlib.cmake @@ -1,7 +1,3 @@ -cmake_minimum_required(VERSION 3.0) - -project(zlib NONE) - # Download and unpack zlib at configure time configure_file(${RAWSPEED_SOURCE_DIR}/cmake/Modules/Zlib.cmake.in ${CMAKE_BINARY_DIR}/zlib/CMakeLists.txt @ONLY) @@ -40,15 +36,17 @@ set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE_SAVE "${CMAKE_CXX_INCLUDE_WHAT_YOU_USE}") unset(CMAKE_CXX_CLANG_TIDY) unset(CMAKE_CXX_INCLUDE_WHAT_YOU_USE) +include(${CMAKE_BINARY_DIR}/zlib/zlib-paths.cmake) + # XXX make sure that zlib is using it's own headers # see https://github.com/madler/zlib/issues/218 -include_directories(BEFORE ${CMAKE_BINARY_DIR}/zlib/zlib-src) -include_directories(BEFORE ${CMAKE_BINARY_DIR}/zlib/zlib-build) +include_directories(BEFORE SYSTEM ${CMAKE_BINARY_DIR}/zlib/zlib-src) +include_directories(BEFORE SYSTEM ${CMAKE_BINARY_DIR}/zlib/zlib-build) # Add zlib directly to our build. This defines # the gtest and gtest_main targets. -add_subdirectory(${CMAKE_BINARY_DIR}/zlib/zlib-src - ${CMAKE_BINARY_DIR}/zlib/zlib-build) +add_subdirectory(${ZLIB_SOURCE_DIR} + ${ZLIB_BINARY_DIR}) set(_zlib_lib zlib) # shared set(_zlib_lib zlibstatic) # static diff --git a/src/external/rawspeed/cmake/Modules/Zlib.cmake.in b/src/external/rawspeed/cmake/Modules/Zlib.cmake.in index 1f4a7a8a9..8a26de4e9 100644 --- a/src/external/rawspeed/cmake/Modules/Zlib.cmake.in +++ b/src/external/rawspeed/cmake/Modules/Zlib.cmake.in @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.4.0) project(zlib-download NONE) @@ -17,9 +17,8 @@ if(EXISTS "${ZLIB_PATH}" AND IS_DIRECTORY "${ZLIB_PATH}" AND EXISTS "${ZLIB_PATH ExternalProject_Add( zlib - URL "${ZLIB_PATH}" PREFIX "${CMAKE_BINARY_DIR}/zlib" - SOURCE_DIR "${CMAKE_BINARY_DIR}/zlib-src" + SOURCE_DIR "${ZLIB_PATH}" # use existing src dir. BINARY_DIR "${CMAKE_BINARY_DIR}/zlib-build" CONFIGURE_COMMAND "" BUILD_COMMAND "" @@ -45,3 +44,9 @@ else() ) endif() endif() + +ExternalProject_Get_Property(zlib SOURCE_DIR BINARY_DIR) +file(WRITE zlib-paths.cmake +"set(ZLIB_SOURCE_DIR \"${SOURCE_DIR}\") +set(ZLIB_BINARY_DIR \"${BINARY_DIR}\") +") |