From 0334dd1cc76598082bc97af85323815e652d590d Mon Sep 17 00:00:00 2001 From: Thomas <purcell@fhi-berlin.mpg.de> Date: Tue, 26 Jan 2021 11:48:29 +0100 Subject: [PATCH] make building tests optional --- .gitlab-ci.yml | 4 +- CMakeLists.txt | 90 ++++++++++++++++----------- README.md | 4 +- cmake/toolchains/gnu_base.cmake | 4 +- cmake/toolchains/gnu_param.cmake | 4 +- cmake/toolchains/gnu_param_py.cmake | 4 +- cmake/toolchains/gnu_py.cmake | 4 +- cmake/toolchains/intel_base.cmake | 4 +- cmake/toolchains/intel_param.cmake | 4 +- cmake/toolchains/intel_param_py.cmake | 4 +- cmake/toolchains/intel_py.cmake | 4 +- src/CMakeLists.txt | 8 +-- tests/googletest/CMakeLists.txt | 2 +- 13 files changed, 77 insertions(+), 63 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fcc82a23..0ed5c2dc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -18,7 +18,7 @@ build-intel: - export LD_LIBRARY_PATH=$I_MPI_ROOT/lib/:$I_MPI_ROOT/lib/release:$MKLROOT/lib/intel64:$INTEL_COMP_ROOT/lib/:$INTEL_COMP_ROOT/compiler/lib/intel64/:$LD_LIBRARY_PATH:$HOME/intel/oneapi/intelpython/latest/lib/:$HOME/intel/oneapi/intelpython/latest/lib/python3.7 - export PYTHONPATH=$HOME/intel/oneapi/intelpython/latest/lib/python3.7/site-packages/:sissopp_env/lib/python3.7/site-packages/ - export PATH=$INTEL_COMP_ROOT/bin/:$INTEL_COMP_ROOT/bin/intel64:$I_MPI_ROOT/bin:$PATH - - cmake -C ../cmake/toolchains/intel_param_py.cmake ../ + - cmake -C ../cmake/toolchains/intel_param_py.cmake -DBUILD_TESTS=ON ../ - make - make install - cd ../ @@ -105,7 +105,7 @@ build-gnu: - export PYTHONPATH=$HOME/intel/oneapi/intelpython/latest/lib/python3.7/site-packages/:sissopp_env/lib/python3.7/site-packages/ - mkdir build_gcc/ - cd build_gcc/ - - cmake -C ../cmake/toolchains/gnu_param_py.cmake ../ + - cmake -C ../cmake/toolchains/gnu_param_py.cmake -DBUILD_TESTS=ON ../ - make - make install - cd ../ diff --git a/CMakeLists.txt b/CMakeLists.txt index a7f42376..5556a11e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,24 +21,33 @@ set(CMAKE_CXX_EXTENSIONS OFF) # compiler options option(EXTERNAL_BOOST "Use an external boost library" OFF) -option(USE_PYTHON "Whether to compile with python binding support" ON) -option(USE_PARAMS "If true use non-linear parameterization" OFF) +option(BUILD_PYTHON "Whether to compile with python binding support" ON) +option(BUILD_PARAMS "If true use non-linear parameterization" OFF) +option(BUILD_TESTS "Whether to compile with python binding support" OFF) -if(USE_PARAMS) - message(STATUS "USE_PARAMS True") +if(BUILD_PARAMS) + message(STATUS "BUILD_PARAMS True") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPARAMETERIZE") - set(USE_PARAMS TRUE) -else(USE_PARAMS) - message(STATUS "USE_PARAMS False") - set(USE_PARAMS FALSE) + set(BUILD_PARAMS TRUE) +else(BUILD_PARAMS) + message(STATUS "BUILD_PARAMS False") + set(BUILD_PARAMS FALSE) endif() -if(USE_PYTHON) - message(STATUS "USE PYTHON True") - set(USE_PYTHON TRUE) -else(USE_PYTHON) - message(STATUS "USE PYTHON False") - set(USE_PYTHON FALSE) +if(BUILD_PYTHON) + message(STATUS "BUILD_PYTHON True") + set(BUILD_PYTHON TRUE) +else(BUILD_PYTHON) + message(STATUS "BUILD_PYTHON False") + set(BUILD_PYTHON FALSE) +endif() + +if(BUILD_TESTS) + message(STATUS "Building tests") + set(BUILD_TESTS TRUE) +else(BUILD_TESTS) + message(STATUS "Not building tests") + set(BUILD_TESTS FALSE) endif() if(EXTERNAL_BOOST) @@ -61,7 +70,7 @@ if (OPENMP_FOUND) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") endif(OPENMP_FOUND) -if(USE_PYTHON) +if(BUILD_PYTHON) # Check python settings find_package(PythonInterp 3 REQUIRED) execute_process( @@ -144,7 +153,7 @@ if(EXTERNAL_BOOST) find_package(Boost REQUIRED COMPONENTS filesystem system mpi serialization) set(Boost_LIBS ${Boost_LIBRARIES}) - if(USE_PYTHON) + if(BUILD_PYTHON) if(${Boost_VERSION} VERSION_LESS 106700) find_package(Boost ${NEEDED_Boost_VERSION} REQUIRED COMPONENTS python3 numpy3) else() @@ -217,7 +226,7 @@ else(EXTERNAL_BOOST) endif() message(STATUS "building boost with toolset: ${Boost_TOOLSET}") set(Boost_CONFIGURE_COMMAND bash ${CMAKE_CURRENT_LIST_DIR}/cmake/boost/boost_configure.sh ${Boost_INSTALL_DIR} ${Boost_TOOLSET} ${Boost_LIBRARY_DIRS}) - if(USE_PYTHON) + if(BUILD_PYTHON) set(Boost_CONFIGURE_COMMAND ${Boost_CONFIGURE_COMMAND} ${PYTHON_VERSION} ${PYTHON_PREFIX} ${PYTHON_INCLUDE_PATH} ${PYTHON_LIBDIR}) endif() @@ -262,7 +271,7 @@ else(EXTERNAL_BOOST) list(APPEND Boost_LIBRARIES ${Boost_LIBRARY_DIRS}/${Boost_LIBRARY_PREFIX}boost_serialization${Boost_LIBRARY_SUFFIX}) list(APPEND Boost_LIBRARIES ${Boost_LIBRARY_DIRS}/${Boost_LIBRARY_PREFIX}boost_system${Boost_LIBRARY_SUFFIX}) list(APPEND Boost_LIBRARIES ${Boost_LIBRARY_DIRS}/${Boost_LIBRARY_PREFIX}boost_filesystem${Boost_LIBRARY_SUFFIX}) - if(USE_PYTHON) + if(BUILD_PYTHON) add_library( boost::python${BOOST_PYTHON_VERSION} SHARED IMPORTED ) set_property( TARGET boost::python${BOOST_PYTHON_VERSION} PROPERTY IMPORTED_LOCATION ${Boost_LIBRARY_DIRS}/${Boost_LIBRARY_PREFIX}boost_python${BOOST_PYTHON_VERSION}${Boost_LIBRARY_SUFFIX} ) set_property( TARGET boost::python${BOOST_PYTHON_VERSION} PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIRS} ) @@ -295,7 +304,7 @@ get_filename_component(LAPACK_DIR ${LAPACK_LIBRARY} DIRECTORY) message(STATUS "LAPACK_LIBRARIES = ${LAPACK_LIBRARIES}") -if(USE_PYTHON) +if(BUILD_PYTHON) foreach(LIB ${LAPACK_LIBRARIES}) get_filename_component(LAPACK_FILE ${LIB} NAME) list(APPEND PYTHON_LAPACK_LIBRARIES ${LAPACK_FILE}) @@ -362,25 +371,27 @@ ExternalProject_Add( set(COIN_CLP_LIBRARIES "${COIN_CLP_LIBRARY_DIRS}/libClp.so;${COIN_CLP_LIBRARY_DIRS}/libCoinUtils.so") include_directories(${COIN_CLP_INCLUDE_DIRS}) -find_package(GTest) -if(NOT GTEST_FOUND) - set(GTEST_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/external/gtest/build/") - set(GTEST_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/external/gtest/bin/") - set(GTEST_INCLUDE_DIRS "${GTEST_INSTALL_DIR}/include") - set(GTEST_LIBRARY_DIRS "${CMAKE_CURRENT_LIST_DIR}/lib/gtest/") - - ExternalProject_Add( - external_gtest - PREFIX "external/gtest" - GIT_REPOSITORY "https://github.com/google/googletest.git" - GIT_TAG "v1.10.x" - CMAKE_ARGS "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER};-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER};-DCMAKE_INSTALL_PREFIX=${GTEST_INSTALL_DIR};-DCMAKE_INSTALL_LIBDIR=${GTEST_LIBRARY_DIRS};-DBUILD_SHARED_LIBS=ON;" - BINARY_DIR "${GTEST_BUILD_DIR}" - INSTALL_DIR "${GTEST_INSTALL_DIR}" - ) - set(GTEST_BOTH_LIBRARIES "${GTEST_LIBRARY_DIRS}/libgtest.so;${GTEST_LIBRARY_DIRS}/libgtest_main.so;${GTEST_LIBRARY_DIRS}/libgmock.so;${GTEST_LIBRARY_DIRS}/libgmock_main.so") +if(BUILD_TESTS) + find_package(GTest) + if(NOT GTEST_FOUND) + set(GTEST_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/external/gtest/build/") + set(GTEST_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/external/gtest/bin/") + set(GTEST_INCLUDE_DIRS "${GTEST_INSTALL_DIR}/include") + set(GTEST_LIBRARY_DIRS "${CMAKE_CURRENT_LIST_DIR}/lib/gtest/") + + ExternalProject_Add( + external_gtest + PREFIX "external/gtest" + GIT_REPOSITORY "https://github.com/google/googletest.git" + GIT_TAG "v1.10.x" + CMAKE_ARGS "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER};-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER};-DCMAKE_INSTALL_PREFIX=${GTEST_INSTALL_DIR};-DCMAKE_INSTALL_LIBDIR=${GTEST_LIBRARY_DIRS};-DBUILD_SHARED_LIBS=ON;" + BINARY_DIR "${GTEST_BUILD_DIR}" + INSTALL_DIR "${GTEST_INSTALL_DIR}" + ) + set(GTEST_BOTH_LIBRARIES "${GTEST_LIBRARY_DIRS}/libgtest.so;${GTEST_LIBRARY_DIRS}/libgtest_main.so;${GTEST_LIBRARY_DIRS}/libgmock.so;${GTEST_LIBRARY_DIRS}/libgmock_main.so") + endif() + include_directories(${GTEST_INCLUDE_DIRS}) endif() -include_directories(${GTEST_INCLUDE_DIRS}) set(FMT_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/external/fmt/build/") set(FMT_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/external/fmt/bin/") @@ -402,4 +413,7 @@ message(STATUS "FMT_LIBRARIES: ${FMT_LIBRARIES}") include_directories(${CMAKE_CURRENT_LIST_DIR}/src) add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/src) -add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/tests/googletest/) + +if(BUILD_TESTS) + add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/tests/googletest/) +endif() diff --git a/README.md b/README.md index 4f1880ef..b2d66fee 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ set(CMAKE_CXX_FLAGS "-O2" CACHE STRING "") ################# # Feature Flags # ################# -set(USE_PYTHON ON CACHE BOOL "") +set(BUILD_PYTHON ON CACHE BOOL "") set(EXTERNAL_BOOST OFF CACHE BOOL "") ``` Here the `-O2` flag is for optimizations, it is recommended to stay as `-O2` or `-O3`, but it can be changed to match compiler requirements. @@ -64,7 +64,7 @@ make install Once all the commands are run `sisso++` should be in the `~/cpp_sisso/main directory/bin/` directory. ### Install `_sisso` -To install the python bindings first ensure your python path matches the path used to configure `boost` and then repeat the same commands as above but set `USE_PYTHON` in `initial_config.cmake` to `ON`. +To install the python bindings first ensure your python path matches the path used to configure `boost` and then repeat the same commands as above but set `BUILD_PYTHON` in `initial_config.cmake` to `ON`. Once installed you should have access to the python interface via `import cpp_sisso`. diff --git a/cmake/toolchains/gnu_base.cmake b/cmake/toolchains/gnu_base.cmake index cc2df6b5..b99c14b3 100644 --- a/cmake/toolchains/gnu_base.cmake +++ b/cmake/toolchains/gnu_base.cmake @@ -8,5 +8,5 @@ set(CMAKE_CXX_FLAGS "-O3 -march=native" CACHE STRING "") ################# # Feature Flags # ################# -set(USE_PARAMS OFF CACHE BOOL "") -set(USE_PYTHON OFF CACHE BOOL "") +set(BUILD_PARAMS OFF CACHE BOOL "") +set(BUILD_PYTHON OFF CACHE BOOL "") diff --git a/cmake/toolchains/gnu_param.cmake b/cmake/toolchains/gnu_param.cmake index a83410f5..5a9e4937 100644 --- a/cmake/toolchains/gnu_param.cmake +++ b/cmake/toolchains/gnu_param.cmake @@ -8,5 +8,5 @@ set(CMAKE_CXX_FLAGS "-O3 -march=native" CACHE STRING "") ################# # Feature Flags # ################# -set(USE_PYTHON OFF CACHE BOOL "") -set(USE_PARAMS ON CACHE BOOL "") +set(BUILD_PYTHON OFF CACHE BOOL "") +set(BUILD_PARAMS ON CACHE BOOL "") diff --git a/cmake/toolchains/gnu_param_py.cmake b/cmake/toolchains/gnu_param_py.cmake index 9c07e646..4f09990c 100644 --- a/cmake/toolchains/gnu_param_py.cmake +++ b/cmake/toolchains/gnu_param_py.cmake @@ -8,5 +8,5 @@ set(CMAKE_CXX_FLAGS "-O3 -march=native" CACHE STRING "") ################# # Feature Flags # ################# -set(USE_PYTHON ON CACHE BOOL "") -set(USE_PARAMS ON CACHE BOOL "") +set(BUILD_PYTHON ON CACHE BOOL "") +set(BUILD_PARAMS ON CACHE BOOL "") diff --git a/cmake/toolchains/gnu_py.cmake b/cmake/toolchains/gnu_py.cmake index 38fb700d..3cf38dd5 100644 --- a/cmake/toolchains/gnu_py.cmake +++ b/cmake/toolchains/gnu_py.cmake @@ -8,5 +8,5 @@ set(CMAKE_CXX_FLAGS "-O3 -march=native" CACHE STRING "") ################# # Feature Flags # ################# -set(USE_PARAMS OFF CACHE BOOL "") -set(USE_PYTHON ON CACHE BOOL "") +set(BUILD_PARAMS OFF CACHE BOOL "") +set(BUILD_PYTHON ON CACHE BOOL "") diff --git a/cmake/toolchains/intel_base.cmake b/cmake/toolchains/intel_base.cmake index 4d7336a6..84930b38 100644 --- a/cmake/toolchains/intel_base.cmake +++ b/cmake/toolchains/intel_base.cmake @@ -8,6 +8,6 @@ set(CMAKE_CXX_FLAGS "-O3 -xhost" CACHE STRING "") ################# # Feature Flags # ################# -set(USE_PARAMS OFF CACHE BOOL "") -set(USE_PYTHON OFF CACHE BOOL "") +set(BUILD_PARAMS OFF CACHE BOOL "") +set(BUILD_PYTHON OFF CACHE BOOL "") diff --git a/cmake/toolchains/intel_param.cmake b/cmake/toolchains/intel_param.cmake index 66e01cbf..a1e5fc24 100644 --- a/cmake/toolchains/intel_param.cmake +++ b/cmake/toolchains/intel_param.cmake @@ -8,6 +8,6 @@ set(CMAKE_CXX_FLAGS "-O3 -xhost" CACHE STRING "") ################# # Feature Flags # ################# -set(USE_PARAMS ON CACHE BOOL "") -set(USE_PYTHON OFF CACHE BOOL "") +set(BUILD_PARAMS ON CACHE BOOL "") +set(BUILD_PYTHON OFF CACHE BOOL "") set(EXTERNAL_BOOST OFF CACHE BOOL "") diff --git a/cmake/toolchains/intel_param_py.cmake b/cmake/toolchains/intel_param_py.cmake index 3b88a27c..07a20b72 100644 --- a/cmake/toolchains/intel_param_py.cmake +++ b/cmake/toolchains/intel_param_py.cmake @@ -8,6 +8,6 @@ set(CMAKE_CXX_FLAGS "-O3 -xhost" CACHE STRING "") ################# # Feature Flags # ################# -set(USE_PARAMS ON CACHE BOOL "") -set(USE_PYTHON ON CACHE BOOL "") +set(BUILD_PARAMS ON CACHE BOOL "") +set(BUILD_PYTHON ON CACHE BOOL "") diff --git a/cmake/toolchains/intel_py.cmake b/cmake/toolchains/intel_py.cmake index 419538c4..36932d7d 100644 --- a/cmake/toolchains/intel_py.cmake +++ b/cmake/toolchains/intel_py.cmake @@ -8,6 +8,6 @@ set(CMAKE_CXX_FLAGS "-O3 -xhost" CACHE STRING "") ################# # Feature Flags # ################# -set(USE_PARAMS OFF CACHE BOOL "") -set(USE_PYTHON ON CACHE BOOL "") +set(BUILD_PARAMS OFF CACHE BOOL "") +set(BUILD_PYTHON ON CACHE BOOL "") set(EXTERNAL_BOOST OFF CACHE BOOL "") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 28ba57bf..9e10ecf9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -11,7 +11,7 @@ file(GLOB_RECURSE NOT_SISSOPP_SOURCES python/*.cpp) list(REMOVE_ITEM SISSOPP_SOURCES ${NOT_SISSOPP_SOURCES}) list(REMOVE_ITEM SISSOPP_SOURCES ${CMAKE_CURRENT_LIST_DIR}/main.cpp) -if(NOT USE_PARAMS) +if(NOT BUILD_PARAMS) file(GLOB_RECURSE NOT_SISSOPP_SOURCES */parameterize*.cpp) list(REMOVE_ITEM SISSOPP_SOURCES ${NOT_SISSOPP_SOURCES}) @@ -47,7 +47,7 @@ set_target_properties(sisso++ target_link_libraries(sisso++ libsisso ${LAPACK_LIBRARIES} ${MPI_LIBRARIES} -Wl,--rpath=${Boost_LIB_DIR} -Wl,--rpath=${LAPACK_DIR} ${Boost_LIBRARIES} ${COIN_CLP_LIBRARIES} ${NLOPT_LIBRARIES} ${OPENMP_LIBRARIES} ${FMT_LIBRARIES}) install(TARGETS sisso++ DESTINATION ${CMAKE_CURRENT_LIST_DIR}/../bin/) -if(USE_PYTHON) +if(BUILD_PYTHON) include(${CMAKE_CURRENT_LIST_DIR}/../cmake/TransferDocStrings.cmake) set(CMAKE_INSTALL_RPATH ${PYTHON_PREFIX}/lib/;${Boost_LIBRARY_DIRS};${LAPACK_DIR};${MPI_DIR};${COIN_CLP_LIBRARY_DIRS};${NLOPT_LIBRARY_DIRS};${COIN_UTILS_LIBRARY_DIRS};${CMAKE_CURRENT_LIST_DIR}/../lib/;${PYTHON_INSTDIR}/cpp_sisso/;${FMT_LIBRARY_DIRS}) @@ -57,7 +57,7 @@ if(USE_PYTHON) file(GLOB_RECURSE SISSOLIB_SOURCES ${CMAKE_CURRENT_LIST_DIR}/python/*cpp) list(REMOVE_ITEM SISSOLIB_SOURCES ${CMAKE_CURRENT_LIST_DIR}/main.cpp) list(REMOVE_ITEM SISSOLIB_SOURCES ${CMAKE_CURRENT_LIST_DIR}/python/bindings_docstring_keyed.cpp) - if(NOT USE_PARAMS) + if(NOT BUILD_PARAMS) file(GLOB_RECURSE NOT_SISSOLIB_SOURCES */parameterize*.cpp) list(REMOVE_ITEM SISSOLIB_SOURCES ${NOT_SISSOLIB_SOURCES}) list(REMOVE_ITEM SISSOLIB_SOURCES ${CMAKE_CURRENT_LIST_DIR}/feature_creation/node/operator_nodes/allowed_parameter_ops.cpp) @@ -99,7 +99,7 @@ endif() if(NOT EXTERNAL_BOOST) add_dependencies(sisso++ external_boost) - if(USE_PYTHON) + if(BUILD_PYTHON) add_dependencies(_sisso external_boost) endif() endif() diff --git a/tests/googletest/CMakeLists.txt b/tests/googletest/CMakeLists.txt index a1675e22..5f9bde1b 100644 --- a/tests/googletest/CMakeLists.txt +++ b/tests/googletest/CMakeLists.txt @@ -1,7 +1,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations") set(CMAKE_INSTALL_RPATH ${Boost_LIBRARY_DIRS};${LAPACK_DIR};${MPI_DIR};${COIN_CLP_LIBRARY_DIRS};${COIN_UTILS_LIBRARY_DIRS};${GTEST_LIBRARY_DIRS};${NLOPT_LIBRARY_DIRS};${FMT_LIBRARY_DIRS};${CMAKE_CURRENT_LIST_DIR}/../../lib/) -file(GLOB_RECURSE SISSO_TEST_SOURCES *.cc) +file(GLOB_RECURSE SISSO_TEST_SOURCES feature_creation/*.cc) add_executable(sisso_test ${SISSO_TEST_SOURCES}) set_target_properties(sisso_test -- GitLab