diff --git a/.appveyor.yml b/.appveyor.yml index 9ceadd9f253cb63aab144968be62019ca002f7f6..a41c8541fd84258dff8655f00e20151ad2f5d91e 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -22,12 +22,14 @@ before_build: - cd build build_script: - - cmake -G "Visual Studio 15 2017 Win64" -DUSGSCSM_BUILD_TESTS=OFF .. + - cmake -G "Visual Studio 15 2017 Win64" -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON -DUSGSCSM_BUILD_TESTS=OFF .. - cmake --build . --target ALL_BUILD --config Release artifacts: - path: build\Release\usgscsm.dll name: usgscsm.dll + - path: build\Release\ale.dll + name: ale.dll on_success: - cd ../ diff --git a/.gitmodules b/.gitmodules index 23bb6eaeffbe8b11bb0e442d6f4459f5f1f96979..a31704792b0d3a53821bfc5cd043c651ca908e91 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,9 @@ [submodule "csm"] path = csm url = https://github.com/USGS-Astrogeology/csm +[submodule "ale"] + path = ale + url = https://github.com/USGS-Astrogeology/ale.git +[submodule "json"] + path = json + url = https://github.com/nlohmann/json.git diff --git a/.travis.yml b/.travis.yml index be180a247de330c700c2a910ac2534acabd9aa8e..258784ec9aad43aae67a29d978a1b1c3f4b22d05 100644 --- a/.travis.yml +++ b/.travis.yml @@ -39,14 +39,13 @@ install: fi - bash miniconda.sh -b -p $HOME/miniconda - source $HOME/miniconda/etc/profile.d/conda.sh - - conda install -y -c conda-forge cmake ale nlohmann_json + - conda env create -n usgscsm -f environment.yml script: - - conda activate - - ls $CONDA_PREFIX/include/ale + - conda activate usgscsm - mkdir build - cd build - - cmake -DCOVERAGE=ON .. + - cmake -DUSGSCSM_EXTERNAL_DEPS=ON -DCOVERAGE=ON .. - cmake --build . - ctest -VV - cd .. diff --git a/CMakeLists.txt b/CMakeLists.txt index cbc90926884968e6b169b4f6635a52316ba1ed8a..492a290624293fefc60a8b051f37197b7863d737 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,24 +13,43 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) STRING "Choose the type of build." FORCE) endif() -# Optional build or link against CSM -option (BUILD_CSM "Build the CSM library" ON) -if(BUILD_CSM) +# Use external or embedded dependencies +option(USGSCSM_EXTERNAL_DEPS "If the library should be built with external or embedded dependencies" OFF) + +if(USGSCSM_EXTERNAL_DEPS) + # CSM API library + find_path(CSM_INCLUDE_DIR NAMES "csm.h" + PATH_SUFFIXES "csm" + PATHS $ENV{CONDA_PREFIX}/include/) + find_library(CSM_LIBRARY csmapi PATHS $ENV{CONDA_PREFIX}/lib) + message("--Found external CSM Library: ${CSM_LIBRARY}") + message("--Found external CSM Include Directory: ${CSM_INCLUDE_DIR}") + + # Nlohmann JSON + find_package(nlohmann_json REQUIRED) + + # ALE + find_package(ale REQUIRED) + set(ALE_TARGET ale::ale) +else() + # CSM API library add_subdirectory(csm) set(CSM_INCLUDE_DIR /csm) set(CSM_LIBRARY csmapi) -else() - find_path(CSM_INCLUDE_DIR NAMES "csm.h" - PATH_SUFFIXES "csm" - PATHS $ENV{CONDA_PREFIX}/include/) - find_library(CSM_LIBRARY csmapi PATHS $ENV{CONDA_PREFIX}/lib) - message("--Found CSM Library: ${CSM_LIBRARY}") - message("--Found CSM Include Directory: ${CSM_INCLUDE_DIR}") -endif(BUILD_CSM) + # Nlohmann JSON + set(JSON_BuildTests OFF CACHE INTERNAL "") + add_subdirectory(json) + + # ALE + set(ALE_USE_EXTERNAL_EIGEN OFF) + set(ALE_USE_EXTERNAL_JSON ON) + set(ALE_BUILD_LOAD OFF) + set(ALE_BUILD_TESTS OFF) + add_subdirectory(ale) + set(ALE_TARGET ale) +endif(USGSCSM_EXTERNAL_DEPS) -find_package(nlohmann_json REQUIRED) -find_package(ale REQUIRED) add_library(usgscsm SHARED src/UsgsAstroPlugin.cpp @@ -38,7 +57,7 @@ add_library(usgscsm SHARED src/UsgsAstroLsSensorModel.cpp src/UsgsAstroSarSensorModel.cpp src/Distortion.cpp - src/Utilities.cpp) + src/Utilities.cpp) set_target_properties(usgscsm PROPERTIES VERSION ${PROJECT_VERSION} @@ -56,18 +75,15 @@ target_include_directories(usgscsm target_link_libraries(usgscsm ${CSM_LIBRARY} - ale::ale + ${ALE_TARGET} nlohmann_json::nlohmann_json) -if(WIN32) - install(TARGETS usgscsm RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}) -else() - install(TARGETS usgscsm LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) -endif() + +install(TARGETS usgscsm LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(DIRECTORY ${USGSCSM_INCLUDE_DIRS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -# Optional build or link against CSM +# Optional build tests option (USGSCSM_BUILD_TESTS "Build tests" ON) if(USGSCSM_BUILD_TESTS) diff --git a/ale b/ale new file mode 160000 index 0000000000000000000000000000000000000000..37bb560ac6a5327063f6c36d8259b3dbb6880bab --- /dev/null +++ b/ale @@ -0,0 +1 @@ +Subproject commit 37bb560ac6a5327063f6c36d8259b3dbb6880bab diff --git a/environment.yml b/environment.yml new file mode 100644 index 0000000000000000000000000000000000000000..6709a92d577fb2bfb6de6b9f53232e3cdac42a49 --- /dev/null +++ b/environment.yml @@ -0,0 +1,10 @@ +name: usgscsm +channels: + - conda-forge + - default + +dependencies: + - cmake>=3.12 + - ale + - csm + - nlohmann_json diff --git a/json b/json new file mode 160000 index 0000000000000000000000000000000000000000..1a521cbd3657eea6ba90cded2aecca93e3cd78d4 --- /dev/null +++ b/json @@ -0,0 +1 @@ +Subproject commit 1a521cbd3657eea6ba90cded2aecca93e3cd78d4 diff --git a/recipe/bld.bat b/recipe/bld.bat index 04c8729b6e49648eaa3e7bface6018dd7d495dd3..f2eae36366103a50c8958e1241d4d046baeda9fd 100644 --- a/recipe/bld.bat +++ b/recipe/bld.bat @@ -1,7 +1,7 @@ mkdir build cd build -cmake -G "Visual Studio 15 2017 Win64" -DBUILD_TESTS=OFF .. +cmake -G "Visual Studio 15 2017 Win64" -DUSGSCSM_EXTERNAL_DEPS=ON -DBUILD_TESTS=OFF .. cmake --build . --target ALL_BUILD --config Release copy Release\usgscsm.dll %LIBRARY_BIN% -if errorlevel 1 exit 1 +if errorlevel 1 exit 1 diff --git a/recipe/build.sh b/recipe/build.sh index 257773c8ffd5c4e663c6a0e257b8be08771ea4e1..76ac5000305b8c01a2985113555f8f6884092c9d 100644 --- a/recipe/build.sh +++ b/recipe/build.sh @@ -1,4 +1,4 @@ #!/bin/sh mkdir build && cd build -cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PREFIX -DBUILD_CSM=OFF -DBUILD_TESTS=OFF .. +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PREFIX -DUSGSCSM_EXTERNAL_DEPS=ON -DBUILD_TESTS=OFF .. make install