diff --git a/.github/workflows/build_unittest.yml b/.github/workflows/build_unittest.yml index b186ab0a4..21056196a 100644 --- a/.github/workflows/build_unittest.yml +++ b/.github/workflows/build_unittest.yml @@ -9,6 +9,10 @@ jobs: steps: - uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v1 + with: + python-version: '3.7' - name: configure run: | ls env: @@ -35,6 +39,10 @@ jobs: steps: - uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v1 + with: + python-version: '3.7' - name: configure run: | env diff --git a/cmake/README.md b/cmake/README.md index 09e69d84a..08b121c84 100644 --- a/cmake/README.md +++ b/cmake/README.md @@ -78,9 +78,12 @@ These options may be passed in the cmake configure step as `-DOPTION_NAME="optio |MT_DEFAULT_PINNING|OFF|use affinity-based CPU pinning by default in MT| |ENABLE_BOOST|OFF|build modules dependent on Boost if enabled| |ENABLE_PYTHON|ON|build Python modules if enabled| +|ENABLE_JARS|ON|include jars with the install| |ENABLE_JPEG|ON|build libjpeg driver and modules depending on it| |ENABLE_J2K|ON|build openjpeg (jpeg2000) driver and modules depending on it| |ENABLE_PCRE|ON|build PCRE (PERL Compatible Regular Expressions) library and modules dependent on it| +|ENABLE_UUID|ON|build uuid library and modules dependent on it| +|ENABLE_ZIP|ON|build zlib and modules dependent on it| |PYTHON_VERSION||indicate which version of Python to prefer, e.g. "3" or "3.7"| |BOOST_HOME||path to existing Boost installation (implies ENABLE_BOOST=ON)| |PYTHON_HOME||path to existing Python installation (implies ENABLE_PYTHON=ON)| @@ -88,4 +91,5 @@ These options may be passed in the cmake configure step as `-DOPTION_NAME="optio |J2K_HOME||path to existing openjpeg installation; if not provided, it will be built from source (implies ENABLE_J2K=ON)| |PCRE_HOME||path to existing pcre installation; if not provided, it will be built from source (implies ENABLE_PCRE=ON)| |XML_HOME||path to existing Xerces installation; if not provided, it will be built from source| +|UUID_HOME||path to existing uuid library installation; if not provided, it will be built from source (Linux only)| |ZIP_HOME||path to existing zlib installation; if not provided, it will be built from source| diff --git a/conanfile.py b/conanfile.py index dac4d5871..031dc79eb 100644 --- a/conanfile.py +++ b/conanfile.py @@ -10,6 +10,8 @@ """ from conans import ConanFile, CMake, tools +import os +import sys class CodaOssConan(ConanFile): name = "coda-oss" @@ -42,9 +44,13 @@ class CodaOssConan(ConanFile): license = "GNU LESSER GENERAL PUBLIC LICENSE Version 3" # default to short_paths mode (Windows only) - # check .conan/conan.conf in your home directory to make sure the setting - # user_home_short points to a writable location short_paths = True + # default the short_paths home to ~/.conan_short + # this may be overridden by setting the environment variable + # CONAN_USER_HOME_SHORT or setting user_home_short in ~/.conan/conan.conf + if sys.platform.startswith('win32') and os.getenv("CONAN_USER_HOME_SHORT") is None: + os.environ["CONAN_USER_HOME_SHORT"] = os.path.join( + os.path.expanduser("~"), ".conan_short") def set_version(self): git = tools.Git(folder=self.recipe_folder) diff --git a/modules/c++/CMakeLists.txt b/modules/c++/CMakeLists.txt index 9a5873de6..60917c473 100644 --- a/modules/c++/CMakeLists.txt +++ b/modules/c++/CMakeLists.txt @@ -57,8 +57,8 @@ add_subdirectory("math") add_subdirectory("mt") add_subdirectory("logging") add_subdirectory("xml.lite") -add_subdirectory("net") -add_subdirectory("net.ssl") +add_subdirectory("net") # must be after "re" +add_subdirectory("net.ssl") # must be after "net" add_subdirectory("plugin") add_subdirectory("tiff") add_subdirectory("polygon") diff --git a/modules/c++/net.ssl/CMakeLists.txt b/modules/c++/net.ssl/CMakeLists.txt index 5ae86e74e..0d6782f79 100644 --- a/modules/c++/net.ssl/CMakeLists.txt +++ b/modules/c++/net.ssl/CMakeLists.txt @@ -1,17 +1,19 @@ -set(MODULE_NAME net.ssl) -set(MODULE_DEPS net-c++) +if (TARGET net-c++) + set(MODULE_NAME net.ssl) + set(MODULE_DEPS net-c++) -if (OPENSSL_FOUND) - set(USE_OPENSSL 1) - list(APPEND MODULE_DEPS OpenSSL::SSL OpenSSL::Crypto) -endif() -coda_generate_module_config_header(${MODULE_NAME}) + if (OPENSSL_FOUND) + set(USE_OPENSSL 1) + list(APPEND MODULE_DEPS OpenSSL::SSL OpenSSL::Crypto) + endif() + coda_generate_module_config_header(${MODULE_NAME}) -coda_add_module( - ${MODULE_NAME} - VERSION 1.0 - DEPS ${MODULE_DEPS}) + coda_add_module( + ${MODULE_NAME} + VERSION 1.0 + DEPS ${MODULE_DEPS}) -coda_add_tests( - MODULE_NAME ${MODULE_NAME} - DIRECTORY "tests") + coda_add_tests( + MODULE_NAME ${MODULE_NAME} + DIRECTORY "tests") +endif() diff --git a/modules/c++/net/CMakeLists.txt b/modules/c++/net/CMakeLists.txt index 67e4b0d8a..3be75afd4 100644 --- a/modules/c++/net/CMakeLists.txt +++ b/modules/c++/net/CMakeLists.txt @@ -1,19 +1,21 @@ -set(MODULE_NAME net) -set(MODULE_DEPS logging-c++ re-c++ io-c++ mem-c++) -if (CURL_FOUND) - list(APPEND MODULE_DEPS CURL::libcurl) # From FindCURL - set(NET_CURL_SUPPORT "1") -endif() -coda_generate_module_config_header(${MODULE_NAME}) +if (TARGET re-c++) + set(MODULE_NAME net) + set(MODULE_DEPS logging-c++ re-c++ io-c++ mem-c++) + if (CURL_FOUND) + list(APPEND MODULE_DEPS CURL::libcurl) # From FindCURL + set(NET_CURL_SUPPORT "1") + endif() + coda_generate_module_config_header(${MODULE_NAME}) -coda_add_module( - ${MODULE_NAME} - VERSION 1.0 - DEPS ${MODULE_DEPS}) + coda_add_module( + ${MODULE_NAME} + VERSION 1.0 + DEPS ${MODULE_DEPS}) -coda_add_tests( - MODULE_NAME ${MODULE_NAME} - DIRECTORY "tests" - FILTER_LIST "AckMulticastSender.cpp" "AckMulticastSubscriber.cpp" - "MulticastSender.cpp" "MulticastSubscriber.cpp" - "SerializableTestClient.cpp") + coda_add_tests( + MODULE_NAME ${MODULE_NAME} + DIRECTORY "tests" + FILTER_LIST "AckMulticastSender.cpp" "AckMulticastSubscriber.cpp" + "MulticastSender.cpp" "MulticastSubscriber.cpp" + "SerializableTestClient.cpp") +endif() diff --git a/modules/c++/re/CMakeLists.txt b/modules/c++/re/CMakeLists.txt index f87bb00fb..2af83869c 100644 --- a/modules/c++/re/CMakeLists.txt +++ b/modules/c++/re/CMakeLists.txt @@ -3,29 +3,32 @@ set(MODULE_DEPS sys-c++) # Enable to use std::regex instead of PCRE. set(RE_ENABLE_STD_REGEX OFF CACHE BOOL "use std::regex instead of pcre") -coda_generate_module_config_header(${MODULE_NAME}) -if (NOT RE_ENABLE_STD_REGEX) - list(APPEND MODULE_DEPS pcre2) -endif() +if (RE_ENABLE_STD_REGEX OR TARGET pcre2) + coda_generate_module_config_header(${MODULE_NAME}) + + if (NOT RE_ENABLE_STD_REGEX) + list(APPEND MODULE_DEPS pcre2) + endif() -coda_add_module( - ${MODULE_NAME} - VERSION 1.0 - DEPS ${MODULE_DEPS}) + coda_add_module( + ${MODULE_NAME} + VERSION 1.0 + DEPS ${MODULE_DEPS}) -if (NOT RE_ENABLE_STD_REGEX) - if (NOT BUILD_SHARED_LIBS) - # this definition is required to statically link against pcre2 - # see NON_AUTOTOOLS_BUILD, LINKING PROGRAMS IN WINDOWS ENVIRONMENTS section - target_compile_definitions(${MODULE_NAME}-c++ PUBLIC -DPCRE2_STATIC) + if (NOT RE_ENABLE_STD_REGEX) + if (NOT BUILD_SHARED_LIBS) + # this definition is required to statically link against pcre2 + # see NON_AUTOTOOLS_BUILD, LINKING PROGRAMS IN WINDOWS ENVIRONMENTS section + target_compile_definitions(${MODULE_NAME}-c++ PUBLIC -DPCRE2_STATIC) + endif() endif() -endif() -coda_add_tests( - MODULE_NAME ${MODULE_NAME} - DIRECTORY "tests") -coda_add_tests( - MODULE_NAME ${MODULE_NAME} - DIRECTORY "unittests" - UNITTEST) + coda_add_tests( + MODULE_NAME ${MODULE_NAME} + DIRECTORY "tests") + coda_add_tests( + MODULE_NAME ${MODULE_NAME} + DIRECTORY "unittests" + UNITTEST) +endif() diff --git a/modules/c++/unique/CMakeLists.txt b/modules/c++/unique/CMakeLists.txt index baa63f917..017a223df 100644 --- a/modules/c++/unique/CMakeLists.txt +++ b/modules/c++/unique/CMakeLists.txt @@ -1,10 +1,12 @@ -set(MODULE_NAME unique) +if (UUID_LIB) + set(MODULE_NAME unique) -coda_add_module( - ${MODULE_NAME} - VERSION 1.0 - DEPS except-c++ ${UUID_LIB}) + coda_add_module( + ${MODULE_NAME} + VERSION 1.0 + DEPS except-c++ ${UUID_LIB}) -coda_add_tests( - MODULE_NAME ${MODULE_NAME} - DIRECTORY "tests") + coda_add_tests( + MODULE_NAME ${MODULE_NAME} + DIRECTORY "tests") +endif() diff --git a/modules/c++/zip/CMakeLists.txt b/modules/c++/zip/CMakeLists.txt index 5850c7e5b..060aca3b8 100644 --- a/modules/c++/zip/CMakeLists.txt +++ b/modules/c++/zip/CMakeLists.txt @@ -1,10 +1,12 @@ -set(MODULE_NAME zip) +if (TARGET z AND TARGET minizip) + set(MODULE_NAME zip) -coda_add_module( - ${MODULE_NAME} - VERSION 1.0 - DEPS io-c++ z minizip) + coda_add_module( + ${MODULE_NAME} + VERSION 1.0 + DEPS io-c++ z minizip) -coda_add_tests( - MODULE_NAME ${MODULE_NAME} - DIRECTORY "tests") + coda_add_tests( + MODULE_NAME ${MODULE_NAME} + DIRECTORY "tests") +endif() diff --git a/modules/drivers/CMakeLists.txt b/modules/drivers/CMakeLists.txt index a71e10460..491c02bef 100644 --- a/modules/drivers/CMakeLists.txt +++ b/modules/drivers/CMakeLists.txt @@ -1,11 +1,44 @@ add_subdirectory("boost") #add_subdirectory("curl") # this is handled in coda_find_system_dependencies -add_subdirectory("j2k") -add_subdirectory("jars") -add_subdirectory("jpeg") #add_subdirectory("numpy") # this is handled in coda_find_system_dependencies -add_subdirectory("pcre") -add_subdirectory("sql") -add_subdirectory("uuid") add_subdirectory("xml") -add_subdirectory("zlib") + +set(ENABLE_J2K ON CACHE BOOL "enable J2K library") +set(J2K_HOME "" CACHE PATH "path to J2K installation") +if (ENABLE_J2K OR J2K_HOME) + add_subdirectory("j2k") +endif() + +set(ENABLE_JARS ON CACHE BOOL "include jars in the install") +if (ENABLE_JARS) + add_subdirectory("jars") +endif() + +set(ENABLE_JPEG ON CACHE BOOL "enable use of libjpeg") +set(JPEG_HOME "" CACHE PATH "path to libjpeg installation") +if (ENABLE_JPEG OR JPEG_HOME) + add_subdirectory("jpeg") +endif() + +set(ENABLE_PCRE ON CACHE BOOL "enable PCRE library") +set(PCRE_HOME "" CACHE PATH "path to PCRE installation") +if (ENABLE_PCRE OR PCRE_HOME) + add_subdirectory("pcre") +endif() + +set(SQL_LAYER "" CACHE STRING "SQL backend [mysql, psql, oracle]") +set(SQL_HOME "" CACHE PATH "Path to SQL installation") +if (SQL_LAYER OR SQL_HOME) + add_subdirectory("sql") +endif() + +set(ENABLE_UUID ON CACHE BOOL "enable UUID library") +if (ENABLE_UUID OR UUID_HOME) + add_subdirectory("uuid") +endif() + +set(ENABLE_ZIP ON CACHE BOOL "enable zlib") +set(ZIP_HOME "" CACHE PATH "path to pre-existing zlib installation, if not provided zlib will be built") +if (ENABLE_ZIP OR ZIP_HOME) + add_subdirectory("zlib") +endif() diff --git a/modules/drivers/j2k/openjpeg/CMakeLists.txt b/modules/drivers/j2k/openjpeg/CMakeLists.txt index 418092979..d83c2172c 100644 --- a/modules/drivers/j2k/openjpeg/CMakeLists.txt +++ b/modules/drivers/j2k/openjpeg/CMakeLists.txt @@ -1,111 +1,106 @@ set(TARGET_NAME openjpeg) -set(ENABLE_J2K ON CACHE BOOL "enable J2K library") -set(J2K_HOME "" CACHE PATH "path to J2K installation") - -if (ENABLE_J2K OR J2K_HOME) - if (J2K_HOME) - find_library(${TARGET_NAME}_PATH - ${TARGET_NAME} - PATHS ${J2K_HOME} - PATH_SUFFIXES lib lib64 - NO_DEFAULT_PATH) - if ("${${TARGET_NAME}_PATH}" STREQUAL "${TARGET_NAME}_PATH-NOTFOUND") - message(FATAL_ERROR "openjpeg not found at J2K_HOME ${J2K_HOME}") - else() - message("Found openjpeg at ${${TARGET_NAME}_PATH}") - endif() +if (J2K_HOME) + find_library(${TARGET_NAME}_PATH + ${TARGET_NAME} + PATHS ${J2K_HOME} + PATH_SUFFIXES lib lib64 + NO_DEFAULT_PATH) + if ("${${TARGET_NAME}_PATH}" STREQUAL "${TARGET_NAME}_PATH-NOTFOUND") + message(FATAL_ERROR "openjpeg not found at J2K_HOME ${J2K_HOME}") + else() + message("Found openjpeg at ${${TARGET_NAME}_PATH}") + endif() - # verify we can link the found library - string(REGEX MATCH ".*\.(a|lib)$" OPENJPEG_IS_STATIC ${${TARGET_NAME}_PATH}) - if (OPENJPEG_IS_STATIC) - set(CMAKE_REQUIRED_DEFINITIONS -DOPJ_STATIC) - endif() - set(CMAKE_REQUIRED_INCLUDES "${J2K_HOME}/include") - set(CMAKE_REQUIRED_LIBRARIES ${${TARGET_NAME}_PATH}) - unset(J2K_HOME_VALID CACHE) - check_cxx_source_compiles(" - #include - int main() { auto f = &opj_start_compress; return 0; }" - J2K_HOME_VALID) - unset(CMAKE_REQUIRED_LIBRARIES) - unset(CMAKE_REQUIRED_INCLUDES) - unset(CMAKE_REQUIRED_DEFINITIONS) - if (NOT J2K_HOME_VALID) - message(FATAL_ERROR "Could not link with openjpeg from J2K_HOME ${J2K_HOME}") - endif() + # verify we can link the found library + string(REGEX MATCH ".*\.(a|lib)$" OPENJPEG_IS_STATIC ${${TARGET_NAME}_PATH}) + if (OPENJPEG_IS_STATIC) + set(CMAKE_REQUIRED_DEFINITIONS -DOPJ_STATIC) + endif() + set(CMAKE_REQUIRED_INCLUDES "${J2K_HOME}/include") + set(CMAKE_REQUIRED_LIBRARIES ${${TARGET_NAME}_PATH}) + unset(J2K_HOME_VALID CACHE) + check_cxx_source_compiles(" + #include + int main() { auto f = &opj_start_compress; return 0; }" + J2K_HOME_VALID) + unset(CMAKE_REQUIRED_LIBRARIES) + unset(CMAKE_REQUIRED_INCLUDES) + unset(CMAKE_REQUIRED_DEFINITIONS) + if (NOT J2K_HOME_VALID) + message(FATAL_ERROR "Could not link with openjpeg from J2K_HOME ${J2K_HOME}") + endif() - # create interface library pointing to the external library - add_library(${TARGET_NAME} INTERFACE) - target_include_directories(${TARGET_NAME} INTERFACE "${J2K_HOME}/include") - target_link_libraries(${TARGET_NAME} INTERFACE ${${TARGET_NAME}_PATH}) - if (OPENJPEG_IS_STATIC) - target_compile_definitions(${TARGET_NAME} INTERFACE OPJ_STATIC) - endif() + # create interface library pointing to the external library + add_library(${TARGET_NAME} INTERFACE) + target_include_directories(${TARGET_NAME} INTERFACE "${J2K_HOME}/include") + target_link_libraries(${TARGET_NAME} INTERFACE ${${TARGET_NAME}_PATH}) + if (OPENJPEG_IS_STATIC) + target_compile_definitions(${TARGET_NAME} INTERFACE OPJ_STATIC) + endif() - else() - coda_fetch_driver( - NAME ${TARGET_NAME} - ARCHIVE "openjpeg-2.3.0_mod.tar" - HASH "SHA256=1ddcff11ac2522fffd51693002bab5ddc690adf735d86a5e4c60eade4468bd19" - ) +else() + coda_fetch_driver( + NAME ${TARGET_NAME} + ARCHIVE "openjpeg-2.3.0_mod.tar" + HASH "SHA256=1ddcff11ac2522fffd51693002bab5ddc690adf735d86a5e4c60eade4468bd19" + ) - set(SOURCE_DIR "${${CMAKE_PROJECT_NAME}_${TARGET_NAME}_SOURCE_DIR}") + set(SOURCE_DIR "${${CMAKE_PROJECT_NAME}_${TARGET_NAME}_SOURCE_DIR}") - check_include_file("stdint.h" OPJ_HAVE_STDINT_H) - set(OPENJPEG_VERSION_MAJOR 2) - set(OPENJPEG_VERSION_MINOR 3) - set(OPENJPEG_VERSION_BUILD 0) + check_include_file("stdint.h" OPJ_HAVE_STDINT_H) + set(OPENJPEG_VERSION_MAJOR 2) + set(OPENJPEG_VERSION_MINOR 3) + set(OPENJPEG_VERSION_BUILD 0) - check_include_file("inttypes.h" OPJ_HAVE_INTTYPES_H) - set(PACKAGE_VERSION 2.3.0) - set(_FILE_OFFSET_BITS 64) - set(_LARGEFILE_SOURCE 1) - set(_LARGE_FILES 1) - set(CMAKE_REQUIRED_DEFINITIONS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE) - check_symbol_exists("fseeko" "stdio.h" OPJ_HAVE_FSEEKO) - unset(CMAKE_REQUIRED_DEFINITIONS) - check_include_file("malloc.h" OPJ_HAVE_MALLOC_H) - check_symbol_exists("aligned_alloc" "malloc.h" OPJ_HAVE_ALIGNED_ALLOC) - check_symbol_exists("_aligned_malloc" "malloc.h" OPJ_HAVE__ALIGNED_MALLOC) - check_symbol_exists("memalign" "malloc.h" OPJ_HAVE_MEMALIGN) - check_symbol_exists("posix_memalign" "stdlib.h" OPJ_HAVE_POSIX_MEMALIGN) - test_big_endian(OPJ_BIG_ENDIAN) + check_include_file("inttypes.h" OPJ_HAVE_INTTYPES_H) + set(PACKAGE_VERSION 2.3.0) + set(_FILE_OFFSET_BITS 64) + set(_LARGEFILE_SOURCE 1) + set(_LARGE_FILES 1) + set(CMAKE_REQUIRED_DEFINITIONS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE) + check_symbol_exists("fseeko" "stdio.h" OPJ_HAVE_FSEEKO) + unset(CMAKE_REQUIRED_DEFINITIONS) + check_include_file("malloc.h" OPJ_HAVE_MALLOC_H) + check_symbol_exists("aligned_alloc" "malloc.h" OPJ_HAVE_ALIGNED_ALLOC) + check_symbol_exists("_aligned_malloc" "malloc.h" OPJ_HAVE__ALIGNED_MALLOC) + check_symbol_exists("memalign" "malloc.h" OPJ_HAVE_MEMALIGN) + check_symbol_exists("posix_memalign" "stdlib.h" OPJ_HAVE_POSIX_MEMALIGN) + test_big_endian(OPJ_BIG_ENDIAN) - set(SOURCE_DIR "${${CMAKE_PROJECT_NAME}_${TARGET_NAME}_SOURCE_DIR}") - configure_file("${SOURCE_DIR}/src/lib/openjp2/opj_config.h.cmake.in" - "opj_config.h") - configure_file("${SOURCE_DIR}/src/lib/openjp2/opj_config_private.h.cmake.in" - "opj_config_private.h") + set(SOURCE_DIR "${${CMAKE_PROJECT_NAME}_${TARGET_NAME}_SOURCE_DIR}") + configure_file("${SOURCE_DIR}/src/lib/openjp2/opj_config.h.cmake.in" + "opj_config.h") + configure_file("${SOURCE_DIR}/src/lib/openjp2/opj_config_private.h.cmake.in" + "opj_config_private.h") - foreach(src "bio.c" "cio.c" "dwt.c" "event.c" "image.c" "invert.c" - "j2k.c" "jp2.c" "mct.c" "mqc.c" "openjpeg.c" - "opj_clock.c" "opj_malloc.c" "pi.c" "sparse_array.c" - "t1.c" "t2.c" "tcd.c" "thread.c" "tgt.c" - "function_list.c") - list(APPEND SOURCES "${SOURCE_DIR}/src/lib/openjp2/${src}") - endforeach() + foreach(src "bio.c" "cio.c" "dwt.c" "event.c" "image.c" "invert.c" + "j2k.c" "jp2.c" "mct.c" "mqc.c" "openjpeg.c" + "opj_clock.c" "opj_malloc.c" "pi.c" "sparse_array.c" + "t1.c" "t2.c" "tcd.c" "thread.c" "tgt.c" + "function_list.c") + list(APPEND SOURCES "${SOURCE_DIR}/src/lib/openjp2/${src}") + endforeach() - add_library(${TARGET_NAME} ${SOURCES}) - if (NOT BUILD_SHARED_LIBS) - target_compile_definitions(${TARGET_NAME} PUBLIC OPJ_STATIC) - endif() - target_include_directories(${TARGET_NAME} - PUBLIC "$" - "$" - "$") - install(FILES "${SOURCE_DIR}/src/lib/openjp2/openjpeg.h" - "${SOURCE_DIR}/src/lib/openjp2/opj_stdint.h" - "${CMAKE_CURRENT_BINARY_DIR}/opj_config.h" - "${CMAKE_CURRENT_BINARY_DIR}/opj_config_private.h" - DESTINATION "${CODA_STD_PROJECT_INCLUDE_DIR}" - ${CODA_INSTALL_OPTION}) + add_library(${TARGET_NAME} ${SOURCES}) + if (NOT BUILD_SHARED_LIBS) + target_compile_definitions(${TARGET_NAME} PUBLIC OPJ_STATIC) endif() - install(TARGETS ${TARGET_NAME} - EXPORT ${CODA_EXPORT_SET_NAME} - ${CODA_INSTALL_OPTION} - LIBRARY DESTINATION "${CODA_STD_PROJECT_LIB_DIR}" - ARCHIVE DESTINATION "${CODA_STD_PROJECT_LIB_DIR}") - - set(J2K_LIB ${TARGET_NAME} CACHE INTERNAL "library providing J2K support") + target_include_directories(${TARGET_NAME} + PUBLIC "$" + "$" + "$") + install(FILES "${SOURCE_DIR}/src/lib/openjp2/openjpeg.h" + "${SOURCE_DIR}/src/lib/openjp2/opj_stdint.h" + "${CMAKE_CURRENT_BINARY_DIR}/opj_config.h" + "${CMAKE_CURRENT_BINARY_DIR}/opj_config_private.h" + DESTINATION "${CODA_STD_PROJECT_INCLUDE_DIR}" + ${CODA_INSTALL_OPTION}) endif() +install(TARGETS ${TARGET_NAME} + EXPORT ${CODA_EXPORT_SET_NAME} + ${CODA_INSTALL_OPTION} + LIBRARY DESTINATION "${CODA_STD_PROJECT_LIB_DIR}" + ARCHIVE DESTINATION "${CODA_STD_PROJECT_LIB_DIR}") + +set(J2K_LIB ${TARGET_NAME} CACHE INTERNAL "library providing J2K support") diff --git a/modules/drivers/jpeg/CMakeLists.txt b/modules/drivers/jpeg/CMakeLists.txt index 84cd861b7..3933ca422 100644 --- a/modules/drivers/jpeg/CMakeLists.txt +++ b/modules/drivers/jpeg/CMakeLists.txt @@ -1,99 +1,91 @@ set(TARGET_NAME jpeg) -set(ENABLE_JPEG ON CACHE BOOL "Enable use of libjpeg") -set(JPEG_HOME "" CACHE PATH "path to libjpeg installation") - -if (ENABLE_JPEG OR JPEG_HOME) - if (JPEG_HOME) - find_library(${TARGET_NAME}_PATH - ${TARGET_NAME} - PATHS ${JPEG_HOME} - PATH_SUFFIXES lib lib64 - NO_DEFAULT_PATH) - if ("${${TARGET_NAME}_PATH}" STREQUAL "${TARGET_NAME}_PATH-NOTFOUND") - message(FATAL_ERROR "jpeg not found at JPEG_HOME ${JPEG_HOME}") - else() - message("Found jpeg at ${${TARGET_NAME}_PATH}") - endif() +if (JPEG_HOME) + find_library(${TARGET_NAME}_PATH + ${TARGET_NAME} + PATHS ${JPEG_HOME} + PATH_SUFFIXES lib lib64 + NO_DEFAULT_PATH) + if ("${${TARGET_NAME}_PATH}" STREQUAL "${TARGET_NAME}_PATH-NOTFOUND") + message(FATAL_ERROR "jpeg not found at JPEG_HOME ${JPEG_HOME}") + else() + message("Found jpeg at ${${TARGET_NAME}_PATH}") + endif() - # verify we can link the found library - set(CMAKE_REQUIRED_INCLUDES "${JPEG_HOME}/include") - set(CMAKE_REQUIRED_LIBRARIES ${${TARGET_NAME}_PATH}) - unset(JPEG_HOME_VALID CACHE) - check_cxx_source_compiles(" - #include - #include - #include - int main() { void *p = (void*)(jpeg_destroy_decompress); return 0; }" - JPEG_HOME_VALID) - unset(CMAKE_REQUIRED_LIBRARIES) - unset(CMAKE_REQUIRED_INCLUDES) - if (NOT JPEG_HOME_VALID) - message(FATAL_ERROR "Could not link with jpeg from JPEG_HOME ${JPEG_HOME}") - endif() + # verify we can link the found library + set(CMAKE_REQUIRED_INCLUDES "${JPEG_HOME}/include") + set(CMAKE_REQUIRED_LIBRARIES ${${TARGET_NAME}_PATH}) + unset(JPEG_HOME_VALID CACHE) + check_cxx_source_compiles(" + #include + #include + #include + int main() { void *p = (void*)(jpeg_destroy_decompress); return 0; }" + JPEG_HOME_VALID) + unset(CMAKE_REQUIRED_LIBRARIES) + unset(CMAKE_REQUIRED_INCLUDES) + if (NOT JPEG_HOME_VALID) + message(FATAL_ERROR "Could not link with jpeg from JPEG_HOME ${JPEG_HOME}") + endif() - # create interface library pointing to the external library - add_library(${TARGET_NAME} INTERFACE) - target_include_directories(${TARGET_NAME} INTERFACE "${JPEG_HOME}/include") - target_link_libraries(${TARGET_NAME} INTERFACE ${${TARGET_NAME}_PATH}) + # create interface library pointing to the external library + add_library(${TARGET_NAME} INTERFACE) + target_include_directories(${TARGET_NAME} INTERFACE "${JPEG_HOME}/include") + target_link_libraries(${TARGET_NAME} INTERFACE ${${TARGET_NAME}_PATH}) - else() - message("JPEG_HOME not specified, so it will be built") +else() + message("JPEG_HOME not specified, so it will be built") - coda_fetch_driver( - NAME ${TARGET_NAME} - ARCHIVE "jpegsrc.v9.tar" - HASH "SHA256=650de9b9c73b627c365c2c1617436bfdef47decddc1c6f7e006bd7655c4f8111" - ) - set(HAVE_PROTOTYPES 1) - check_cxx_source_compiles("int main() { unsigned short; return 0; }" - HAVE_UNSIGNED_SHORT) - check_cxx_source_compiles("int main() { unsigned char; return 0; }" - HAVE_UNSIGNED_CHAR) - check_include_file("stddef.h" HAVE_STDDEF_H) - check_include_file("stdlib.h" HAVE_STDLIB_H) - check_include_file("locale.h" HAVE_LOCALE_H) + coda_fetch_driver( + NAME ${TARGET_NAME} + ARCHIVE "jpegsrc.v9.tar" + HASH "SHA256=650de9b9c73b627c365c2c1617436bfdef47decddc1c6f7e006bd7655c4f8111" + ) + set(HAVE_PROTOTYPES 1) + check_cxx_source_compiles("int main() { unsigned short; return 0; }" + HAVE_UNSIGNED_SHORT) + check_cxx_source_compiles("int main() { unsigned char; return 0; }" + HAVE_UNSIGNED_CHAR) + check_include_file("stddef.h" HAVE_STDDEF_H) + check_include_file("stdlib.h" HAVE_STDLIB_H) + check_include_file("locale.h" HAVE_LOCALE_H) - set(SOURCE_DIR "${${CMAKE_PROJECT_NAME}_${TARGET_NAME}_SOURCE_DIR}") - foreach(src "cdjpeg.c" "jaricom.c" "jcapimin.c" "jcapistd.c" - "jcarith.c" "jccoefct.c" "jccolor.c" "jcdctmgr.c" - "jchuff.c" "jcinit.c" "jcmainct.c" "jcmarker.c" - "jcmaster.c" "jcomapi.c" "jcparam.c" "jcprepct.c" - "jcsample.c" "jctrans.c" "jdapimin.c" "jdapistd.c" - "jdarith.c" "jdatadst.c" "jdatasrc.c" "jdcoefct.c" - "jdcolor.c" "jddctmgr.c" "jdhuff.c" "jdinput.c" - "jdmainct.c" "jdmarker.c" "jdmaster.c" "jdmerge.c" - "jdpostct.c" "jdsample.c" "jdtrans.c" "jerror.c" - "jfdctflt.c" "jfdctfst.c" "jfdctint.c" "jidctflt.c" - "jidctfst.c" "jidctint.c" "jmemmgr.c" "jmemnobs.c" - "jquant1.c" "jquant2.c" "jutils.c" "rdbmp.c" - "rdcolmap.c" "rdgif.c" "rdppm.c" "rdrle.c" - "rdswitch.c" "rdtarga.c" "transupp.c" "wrbmp.c" - "wrgif.c" "wrppm.c" "wrrle.c" "wrtarga.c") - list(APPEND SOURCES "${SOURCE_DIR}/${src}") - endforeach() + set(SOURCE_DIR "${${CMAKE_PROJECT_NAME}_${TARGET_NAME}_SOURCE_DIR}") + foreach(src "cdjpeg.c" "jaricom.c" "jcapimin.c" "jcapistd.c" + "jcarith.c" "jccoefct.c" "jccolor.c" "jcdctmgr.c" + "jchuff.c" "jcinit.c" "jcmainct.c" "jcmarker.c" + "jcmaster.c" "jcomapi.c" "jcparam.c" "jcprepct.c" + "jcsample.c" "jctrans.c" "jdapimin.c" "jdapistd.c" + "jdarith.c" "jdatadst.c" "jdatasrc.c" "jdcoefct.c" + "jdcolor.c" "jddctmgr.c" "jdhuff.c" "jdinput.c" + "jdmainct.c" "jdmarker.c" "jdmaster.c" "jdmerge.c" + "jdpostct.c" "jdsample.c" "jdtrans.c" "jerror.c" + "jfdctflt.c" "jfdctfst.c" "jfdctint.c" "jidctflt.c" + "jidctfst.c" "jidctint.c" "jmemmgr.c" "jmemnobs.c" + "jquant1.c" "jquant2.c" "jutils.c" "rdbmp.c" + "rdcolmap.c" "rdgif.c" "rdppm.c" "rdrle.c" + "rdswitch.c" "rdtarga.c" "transupp.c" "wrbmp.c" + "wrgif.c" "wrppm.c" "wrrle.c" "wrtarga.c") + list(APPEND SOURCES "${SOURCE_DIR}/${src}") + endforeach() - set(JCONFIG "${${CMAKE_PROJECT_NAME}_${TARGET_NAME}_BINARY_DIR}/jconfig.h") - configure_file("jconfig.h.in" ${JCONFIG}) - add_library(${TARGET_NAME} ${SOURCES}) - target_include_directories(${TARGET_NAME} - PUBLIC "$" - "$" - "$") + set(JCONFIG "${${CMAKE_PROJECT_NAME}_${TARGET_NAME}_BINARY_DIR}/jconfig.h") + configure_file("jconfig.h.in" ${JCONFIG}) + add_library(${TARGET_NAME} ${SOURCES}) + target_include_directories(${TARGET_NAME} + PUBLIC "$" + "$" + "$") - install(FILES "${SOURCE_DIR}/jpeglib.h" - "${SOURCE_DIR}/jmorecfg.h" - "${SOURCE_DIR}/jerror.h" - "${JCONFIG}" - DESTINATION "${CODA_STD_PROJECT_INCLUDE_DIR}" - ${CODA_INSTALL_OPTION}) - endif() - install(TARGETS ${TARGET_NAME} - EXPORT ${CODA_EXPORT_SET_NAME} - ${CODA_INSTALL_OPTION} - LIBRARY DESTINATION "${CODA_STD_PROJECT_LIB_DIR}" - ARCHIVE DESTINATION "${CODA_STD_PROJECT_LIB_DIR}") - set(HAVE_JPEG ON CACHE INTERNAL "Flag indicating whether jpeg support is available") + install(FILES "${SOURCE_DIR}/jpeglib.h" + "${SOURCE_DIR}/jmorecfg.h" + "${SOURCE_DIR}/jerror.h" + "${JCONFIG}" + DESTINATION "${CODA_STD_PROJECT_INCLUDE_DIR}" + ${CODA_INSTALL_OPTION}) endif() - - +install(TARGETS ${TARGET_NAME} + EXPORT ${CODA_EXPORT_SET_NAME} + ${CODA_INSTALL_OPTION} + LIBRARY DESTINATION "${CODA_STD_PROJECT_LIB_DIR}" + ARCHIVE DESTINATION "${CODA_STD_PROJECT_LIB_DIR}") diff --git a/modules/drivers/pcre/CMakeLists.txt b/modules/drivers/pcre/CMakeLists.txt index a72f8de19..66c73f0b4 100644 --- a/modules/drivers/pcre/CMakeLists.txt +++ b/modules/drivers/pcre/CMakeLists.txt @@ -1,162 +1,156 @@ set(TARGET_NAME pcre2) -set(ENABLE_PCRE ON CACHE BOOL "enable PCRE library") -set(PCRE_HOME "" CACHE PATH "path to PCRE installation") - -if (ENABLE_PCRE OR PCRE_HOME) - if (PCRE_HOME) - find_library(pcre2_PATH - pcre2-8 - PATHS ${PCRE_HOME} - PATH_SUFFIXES lib lib64 - NO_DEFAULT_PATH) - if ("${pcre2_PATH}" STREQUAL "pcre2_PATH-NOTFOUND") - message(FATAL_ERROR "pcre2 not found at PCRE_HOME ${PCRE_HOME}") - else() - message("Found pcre2 at ${pcre2_PATH}") - endif() +if (PCRE_HOME) + find_library(pcre2_PATH + pcre2-8 + PATHS ${PCRE_HOME} + PATH_SUFFIXES lib lib64 + NO_DEFAULT_PATH) + if ("${pcre2_PATH}" STREQUAL "pcre2_PATH-NOTFOUND") + message(FATAL_ERROR "pcre2 not found at PCRE_HOME ${PCRE_HOME}") + else() + message("Found pcre2 at ${pcre2_PATH}") + endif() - # verify we can link pcre - set(CMAKE_REQUIRED_INCLUDES "${PCRE_HOME}/include") - set(CMAKE_REQUIRED_LIBRARIES ${pcre2_PATH}) - set(CMAKE_REQUIRED_DEFINITIONS -DPCRE2_CODE_UNIT_WIDTH=8) - unset(PCRE_HOME_VALID CACHE) - check_cxx_source_compiles(" - #include - int main() { pcre2_code* p; return 0; };" - PCRE_HOME_VALID) - unset(CMAKE_REQUIRED_DEFINITIONS) - unset(CMAKE_REQUIRED_LIBRARIES) - unset(CMAKE_REQUIRED_INCLUDES) - if (NOT PCRE_HOME_VALID) - message(FATAL_ERROR "Could not link with pcre2 from PCRE_HOME ${PCRE_HOME}") - endif() + # verify we can link pcre + set(CMAKE_REQUIRED_INCLUDES "${PCRE_HOME}/include") + set(CMAKE_REQUIRED_LIBRARIES ${pcre2_PATH}) + set(CMAKE_REQUIRED_DEFINITIONS -DPCRE2_CODE_UNIT_WIDTH=8) + unset(PCRE_HOME_VALID CACHE) + check_cxx_source_compiles(" + #include + int main() { pcre2_code* p; return 0; };" + PCRE_HOME_VALID) + unset(CMAKE_REQUIRED_DEFINITIONS) + unset(CMAKE_REQUIRED_LIBRARIES) + unset(CMAKE_REQUIRED_INCLUDES) + if (NOT PCRE_HOME_VALID) + message(FATAL_ERROR "Could not link with pcre2 from PCRE_HOME ${PCRE_HOME}") + endif() - # create interface library pointing to the external pcre2 - add_library(${TARGET_NAME} INTERFACE) - target_include_directories(${TARGET_NAME} INTERFACE "${PCRE_HOME}/include") - target_link_libraries(${TARGET_NAME} INTERFACE ${pcre2_PATH}) - target_compile_definitions(${TARGET_NAME} INTERFACE -DPCRE2_CODE_UNIT_WIDTH=8) - else() - message("PCRE_HOME not specified, so it will be built") + # create interface library pointing to the external pcre2 + add_library(${TARGET_NAME} INTERFACE) + target_include_directories(${TARGET_NAME} INTERFACE "${PCRE_HOME}/include") + target_link_libraries(${TARGET_NAME} INTERFACE ${pcre2_PATH}) + target_compile_definitions(${TARGET_NAME} INTERFACE -DPCRE2_CODE_UNIT_WIDTH=8) +else() + message("PCRE_HOME not specified, so it will be built") - coda_fetch_driver( - NAME ${TARGET_NAME} - ARCHIVE "pcre2-10.22.tar.gz" - HASH "SHA256=6677C66014EBA5610B8FBD8196FD4E5904DB4116CFF1B5A0D14E91121EDA4377" - ) + coda_fetch_driver( + NAME ${TARGET_NAME} + ARCHIVE "pcre2-10.22.tar.gz" + HASH "SHA256=6677C66014EBA5610B8FBD8196FD4E5904DB4116CFF1B5A0D14E91121EDA4377" + ) - check_symbol_exists("bcopy" "strings.h" HAVE_BCOPY) - check_include_file("inttypes.h" HAVE_INTTYPES_H) - check_symbol_exists("memmove" "string.h" HAVE_MEMMOVE) - check_include_file("stdint.h" HAVE_STDINT_H) - check_symbol_exists("strerror" "string.h" HAVE_STRERROR) - set(SUPPORT_PCRE2_8 1) - set(PCRE2_LINK_SIZE 2) - set(PCRE2_MATCH_LIMIT 10000000) - set(PCRE2_MATCH_LIMIT_RECURSION ${PCRE2_MATCH_LIMIT}) - set(MAX_NAME_COUNT 10000) - set(MAX_NAME_SIZE 32) - # This is "\n" - set(NEWLINE_DEFAULT 2) - set(PCRE2_PARENS_NEST_LIMIT 250) - if (NOT BUILD_SHARED_LIBS) - set(PCRE2_STATIC 1) - endif() + check_symbol_exists("bcopy" "strings.h" HAVE_BCOPY) + check_include_file("inttypes.h" HAVE_INTTYPES_H) + check_symbol_exists("memmove" "string.h" HAVE_MEMMOVE) + check_include_file("stdint.h" HAVE_STDINT_H) + check_symbol_exists("strerror" "string.h" HAVE_STRERROR) + set(SUPPORT_PCRE2_8 1) + set(PCRE2_LINK_SIZE 2) + set(PCRE2_MATCH_LIMIT 10000000) + set(PCRE2_MATCH_LIMIT_RECURSION ${PCRE2_MATCH_LIMIT}) + set(MAX_NAME_COUNT 10000) + set(MAX_NAME_SIZE 32) + # This is "\n" + set(NEWLINE_DEFAULT 2) + set(PCRE2_PARENS_NEST_LIMIT 250) + if (NOT BUILD_SHARED_LIBS) + set(PCRE2_STATIC 1) + endif() - # Here are some other things in config.h that aren't used either - # seemingly at all or only by things like pcregrep.c so not - # wasting time doing config checks on them - # STDC_HEADERS - # HAVE_VISIBILITY - # HAVE_PTHREAD - # HAVE_PTHREAD_PRIO_INHERIT - # PACKAGE* - # conf.check_cc(header_name='bzlib.h', mandatory=False) - # conf.check_cc(header_name='dirent.h', mandatory=False) - # conf.check_cc(header_name='dlfcn.h', mandatory=False) - # conf.check_cc(header_name='editline/readline.h', mandatory=False) - # conf.check_cc(header_name='edit/readline/readline.h', mandatory=False) + # Here are some other things in config.h that aren't used either + # seemingly at all or only by things like pcregrep.c so not + # wasting time doing config checks on them + # STDC_HEADERS + # HAVE_VISIBILITY + # HAVE_PTHREAD + # HAVE_PTHREAD_PRIO_INHERIT + # PACKAGE* + # conf.check_cc(header_name='bzlib.h', mandatory=False) + # conf.check_cc(header_name='dirent.h', mandatory=False) + # conf.check_cc(header_name='dlfcn.h', mandatory=False) + # conf.check_cc(header_name='editline/readline.h', mandatory=False) + # conf.check_cc(header_name='edit/readline/readline.h', mandatory=False) - # conf.check_cc(header_name='stdlib.h', mandatory=False) - # conf.check_cc(header_name='memory.h', mandatory=False) - # conf.check_cc(header_name='limits.h', mandatory=False) - # conf.check_cc(header_name='readline/history.h', mandatory=False) - # conf.check_cc(header_name='readline/readline.h', mandatory=False) - # conf.check_cc(header_name='sys/stat.h', mandatory=False) - # conf.check_cc(header_name='sys/types.h', mandatory=False) - # conf.check_cc(header_name='sys/wait.h', mandatory=False) - # conf.check_cc(header_name='unistd.h', mandatory=False) - # conf.check_cc(header_name='strings.h', mandatory=False) - # conf.check_cc(header_name='string.h', mandatory=False) - # conf.check_cc(header_name='windows.h', mandatory=False) - # conf.check_cc(header_name='zlib.h', mandatory=False) + # conf.check_cc(header_name='stdlib.h', mandatory=False) + # conf.check_cc(header_name='memory.h', mandatory=False) + # conf.check_cc(header_name='limits.h', mandatory=False) + # conf.check_cc(header_name='readline/history.h', mandatory=False) + # conf.check_cc(header_name='readline/readline.h', mandatory=False) + # conf.check_cc(header_name='sys/stat.h', mandatory=False) + # conf.check_cc(header_name='sys/types.h', mandatory=False) + # conf.check_cc(header_name='sys/wait.h', mandatory=False) + # conf.check_cc(header_name='unistd.h', mandatory=False) + # conf.check_cc(header_name='strings.h', mandatory=False) + # conf.check_cc(header_name='string.h', mandatory=False) + # conf.check_cc(header_name='windows.h', mandatory=False) + # conf.check_cc(header_name='zlib.h', mandatory=False) - set(SOURCE_DIR "${${CMAKE_PROJECT_NAME}_${TARGET_NAME}_SOURCE_DIR}") + set(SOURCE_DIR "${${CMAKE_PROJECT_NAME}_${TARGET_NAME}_SOURCE_DIR}") - # make config.h - configure_file("${SOURCE_DIR}/config-cmake.h.in" - "config.h") + # make config.h + configure_file("${SOURCE_DIR}/config-cmake.h.in" + "config.h") - # Slide pcre2.h.generic into place as pcre2.h - configure_file("${SOURCE_DIR}/src/pcre2.h.generic" - "pcre2.h" - COPYONLY) + # Slide pcre2.h.generic into place as pcre2.h + configure_file("${SOURCE_DIR}/src/pcre2.h.generic" + "pcre2.h" + COPYONLY) - # Slide pcre2_chartables.c.dist into place as pcre2_chartables.c - # NOTE: Older versions of PCRE used to be more complicated because - # we used to need to compile a dftables executable in the build - # step to generate this (look at older versions of this wscript if - # this ever needs to be resurrected). With the normal PCRE2 - # configure, you can do this via --enable-rebuild-chartables, but - # what it generates is identical to this file - configure_file("${SOURCE_DIR}/src/pcre2_chartables.c.dist" - "pcre2_chartables.c" - COPYONLY) + # Slide pcre2_chartables.c.dist into place as pcre2_chartables.c + # NOTE: Older versions of PCRE used to be more complicated because + # we used to need to compile a dftables executable in the build + # step to generate this (look at older versions of this wscript if + # this ever needs to be resurrected). With the normal PCRE2 + # configure, you can do this via --enable-rebuild-chartables, but + # what it generates is identical to this file + configure_file("${SOURCE_DIR}/src/pcre2_chartables.c.dist" + "pcre2_chartables.c" + COPYONLY) - set(SOURCES "${CMAKE_CURRENT_BINARY_DIR}/pcre2_chartables.c") - foreach(src "pcre2_auto_possess.c" - "pcre2_compile.c" - "pcre2_config.c" - "pcre2_context.c" - "pcre2_dfa_match.c" - "pcre2_error.c" - "pcre2_find_bracket.c" - "pcre2_jit_compile.c" - "pcre2_maketables.c" - "pcre2_match.c" - "pcre2_match_data.c" - "pcre2_newline.c" - "pcre2_ord2utf.c" - "pcre2_pattern_info.c" - "pcre2_serialize.c" - "pcre2_string_utils.c" - "pcre2_study.c" - "pcre2_substitute.c" - "pcre2_substring.c" - "pcre2_tables.c" - "pcre2_ucd.c" - "pcre2_valid_utf.c" - "pcre2_xclass.c") - list(APPEND SOURCES "${SOURCE_DIR}/src/${src}") - endforeach() + set(SOURCES "${CMAKE_CURRENT_BINARY_DIR}/pcre2_chartables.c") + foreach(src "pcre2_auto_possess.c" + "pcre2_compile.c" + "pcre2_config.c" + "pcre2_context.c" + "pcre2_dfa_match.c" + "pcre2_error.c" + "pcre2_find_bracket.c" + "pcre2_jit_compile.c" + "pcre2_maketables.c" + "pcre2_match.c" + "pcre2_match_data.c" + "pcre2_newline.c" + "pcre2_ord2utf.c" + "pcre2_pattern_info.c" + "pcre2_serialize.c" + "pcre2_string_utils.c" + "pcre2_study.c" + "pcre2_substitute.c" + "pcre2_substring.c" + "pcre2_tables.c" + "pcre2_ucd.c" + "pcre2_valid_utf.c" + "pcre2_xclass.c") + list(APPEND SOURCES "${SOURCE_DIR}/src/${src}") + endforeach() - add_library(${TARGET_NAME} ${SOURCES}) - set_target_properties(${TARGET_NAME} PROPERTIES OUTPUT_NAME pcre2-8) - target_compile_definitions(${TARGET_NAME} PUBLIC PCRE2_CODE_UNIT_WIDTH=8 - PRIVATE HAVE_CONFIG_H) - target_include_directories(${TARGET_NAME} - PUBLIC "$" - "$" - "$") - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pcre2.h" - DESTINATION "${CODA_STD_PROJECT_INCLUDE_DIR}" - ${CODA_INSTALL_OPTION}) - endif() - install(TARGETS ${TARGET_NAME} - EXPORT ${CODA_EXPORT_SET_NAME} - ${CODA_INSTALL_OPTION} - LIBRARY DESTINATION "${CODA_STD_PROJECT_LIB_DIR}" - ARCHIVE DESTINATION "${CODA_STD_PROJECT_LIB_DIR}") + add_library(${TARGET_NAME} ${SOURCES}) + set_target_properties(${TARGET_NAME} PROPERTIES OUTPUT_NAME pcre2-8) + target_compile_definitions(${TARGET_NAME} PUBLIC PCRE2_CODE_UNIT_WIDTH=8 + PRIVATE HAVE_CONFIG_H) + target_include_directories(${TARGET_NAME} + PUBLIC "$" + "$" + "$") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pcre2.h" + DESTINATION "${CODA_STD_PROJECT_INCLUDE_DIR}" + ${CODA_INSTALL_OPTION}) endif() - +install(TARGETS ${TARGET_NAME} + EXPORT ${CODA_EXPORT_SET_NAME} + ${CODA_INSTALL_OPTION} + LIBRARY DESTINATION "${CODA_STD_PROJECT_LIB_DIR}" + ARCHIVE DESTINATION "${CODA_STD_PROJECT_LIB_DIR}") diff --git a/modules/drivers/sql/CMakeLists.txt b/modules/drivers/sql/CMakeLists.txt index 1015045fd..8629250ee 100644 --- a/modules/drivers/sql/CMakeLists.txt +++ b/modules/drivers/sql/CMakeLists.txt @@ -1,43 +1,38 @@ -set(SQL_LAYER "" CACHE STRING "SQL backend [mysql, psql, oracle]") -set(SQL_HOME "" CACHE PATH "Path to SQL installation") - -if (SQL_LAYER OR SQL_HOME) - if (SQL_HOME) - if (SQL_LAYER STREQUAL mysql) - set(STLIBPATH_SQL "${SQL_HOME}/lib/mysql") - set(INCLUDES_SQL "${SQL_HOME}/include/mysql") - else() - set(STLIBPATH_SQL "${SQL_HOME}/lib") - set(INCLUDES_SQL "${SQL_HOME}/include") - endif() - set(DEFAULT_PATH_OPTION NO_DEFAULT_PATHS) +if (SQL_HOME) + if (SQL_LAYER STREQUAL mysql) + set(STLIBPATH_SQL "${SQL_HOME}/lib/mysql") + set(INCLUDES_SQL "${SQL_HOME}/include/mysql") + else() + set(STLIBPATH_SQL "${SQL_HOME}/lib") + set(INCLUDES_SQL "${SQL_HOME}/include") endif() + set(DEFAULT_PATH_OPTION NO_DEFAULT_PATHS) +endif() - if (SQL_LAYER STREQUAL "mysql") - if (SQL_HOME STREQUAL "") - list(APPEND STLIBPATH_SQL "/usr/lib/mysql") - list(APPEND INCLUDES_SQL "/usr/include/mysql") - endif() - set(CXX_FLAGS_SQL -DUSE_MYSQL) - set(LIB_SQL mysqlclient_r) - elseif (SQL_LAYER STREQUAL "psql") - set(CXX_FLAGS_SQL -DUSE_PGSQL) - set(LIB_SQL psql) - elseif (SQL_LAYER STREQUAL "oracle") - set(CXX_FLAGS_SQL -DUSE_ORACLE) - set(LIB_SQL clntsh) - else() - message(FATAL_ERROR "Invalid SQL layer, must be one of [mysql, psql, oracle]") +if (SQL_LAYER STREQUAL "mysql") + if (SQL_HOME STREQUAL "") + list(APPEND STLIBPATH_SQL "/usr/lib/mysql") + list(APPEND INCLUDES_SQL "/usr/include/mysql") endif() + set(CXX_FLAGS_SQL -DUSE_MYSQL) + set(LIB_SQL mysqlclient_r) +elseif (SQL_LAYER STREQUAL "psql") + set(CXX_FLAGS_SQL -DUSE_PGSQL) + set(LIB_SQL psql) +elseif (SQL_LAYER STREQUAL "oracle") + set(CXX_FLAGS_SQL -DUSE_ORACLE) + set(LIB_SQL clntsh) +else() + message(FATAL_ERROR "Invalid SQL layer, must be one of [mysql, psql, oracle]") +endif() - find_library(${SQL_LIB_PATH} - ${LIB_SQL} - PATHS ${STLIBPATH_SQL} - ${DEFAULT_PATH_OPTION}) +find_library(${SQL_LIB_PATH} + ${LIB_SQL} + PATHS ${STLIBPATH_SQL} + ${DEFAULT_PATH_OPTION}) - add_library(sql UNKNOWN IMPORTED GLOBAL) - set_property(TARGET sql PROPERTY IMPORTED_LOCATION "${SQL_LIB_PATH}") - target_include_directories(sql INTERFACE ${INCLUDES_SQL}) - target_compile_definitions(sql INTERFACE ${CXX_FLAGS_SQL}) - set(SQL_LIB sql CACHE INTERNAL "") -endif() +add_library(sql UNKNOWN IMPORTED GLOBAL) +set_property(TARGET sql PROPERTY IMPORTED_LOCATION "${SQL_LIB_PATH}") +target_include_directories(sql INTERFACE ${INCLUDES_SQL}) +target_compile_definitions(sql INTERFACE ${CXX_FLAGS_SQL}) +set(SQL_LIB sql CACHE INTERNAL "") diff --git a/modules/drivers/xml/CMakeLists.txt b/modules/drivers/xml/CMakeLists.txt index d1b7a0f00..d741734c1 100644 --- a/modules/drivers/xml/CMakeLists.txt +++ b/modules/drivers/xml/CMakeLists.txt @@ -3,4 +3,6 @@ set(XML_HOME "" CACHE PATH "path to pre-existing XML library installation, if no set(CODA_XML_LAYER "XercesC" CACHE STRING "XML backend to use (currently only XercesC is supported)") set("USE_${CODA_XML_LAYER}" TRUE CACHE INTERNAL "") -add_subdirectory("xerces") +if (CODA_XML_LAYER STREQUAL "XercesC") + add_subdirectory("xerces") +endif() diff --git a/modules/drivers/zlib/CMakeLists.txt b/modules/drivers/zlib/CMakeLists.txt index 564fd8129..ddb219f81 100644 --- a/modules/drivers/zlib/CMakeLists.txt +++ b/modules/drivers/zlib/CMakeLists.txt @@ -1,7 +1,5 @@ set(TARGET_NAME z) -set(ZIP_HOME "" CACHE PATH "path to pre-existing zlib installation, if not provided zlib will be built") - if (ZIP_HOME) find_library(${TARGET_NAME}_PATH ${TARGET_NAME} @@ -63,7 +61,7 @@ if (ZIP_HOME) add_library(minizip INTERFACE) target_include_directories(minizip INTERFACE "${ZIP_HOME}/include") target_link_libraries(minizip INTERFACE ${minizip_PATH}) -else() +elseif(ENABLE_ZIP) message("ZIP_HOME not specified, so zlib and minizip will be built") coda_fetch_driver( NAME ${TARGET_NAME}