From 0e465cd2a8916977493e87dd9292fa2168c2b6cd Mon Sep 17 00:00:00 2001 From: nkx Date: Mon, 19 Sep 2022 00:10:15 +0800 Subject: [PATCH 1/4] update main cmake lists to set mpfr optional --- CMakeLists.txt | 75 ++++++++++++++++++++------------- source/framework/CMakeLists.txt | 6 --- 2 files changed, 46 insertions(+), 35 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5072dcfc9..b3f3028fb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,16 +39,6 @@ if (NOT DEFINED CMAKE_INSTALL_PREFIX) set(CMAKE_INSTALL_PREFIX ${INSTALL_PREFIX_ABSOLUTE}) endif () -if (NOT DEFINED RESTLIB_MODEL) - set(RESTLIB_MODEL OFF) -endif () - -# Auto schema evolution for ROOT -if (NOT DEFINED REST_SE) - set(REST_SE ON) -endif () -set(SCHEMA_EVOLUTION ${REST_SE}) - # Welcome message if (NOT DEFINED REST_WELCOME) set(REST_WELCOME ON) @@ -60,11 +50,16 @@ set(external_libs) set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${DECAY_PATH}/cmake ${CMAKE_MODULE_PATH}) set(CMAKE_MACOSX_RPATH 1) -# ROOT libs and includes - +##### ROOT libs and includes ##### find_package(ROOT REQUIRED) - set(ROOT_REQUIRED_LIBRARIES Core RIO Geom Gdml Minuit Spectrum XMLIO) + +# Auto schema evolution for ROOT +if (NOT DEFINED REST_SE) + set(REST_SE ON) +endif () +set(SCHEMA_EVOLUTION ${REST_SE}) + # Switch to enable ROOT Eve functionality. if (NOT DEFINED REST_EVE) set(REST_EVE ON) @@ -111,18 +106,19 @@ else () C++ standard, check root-config --cflags ${ROOT_CFLAGS}" ) endif () - endif () set(external_include_dirs ${external_include_dirs} ${ROOT_INCLUDE_DIRS}) + + +##### mySQL ##### # This is to enable linking of SQL libraries. I.e. for process TRestSQLToAnalysisProcess. if (NOT DEFINED SQL) set(SQL OFF) endif () - if (${SQL} MATCHES "ON") - list(APPEND rest_features "SQL") + list(APPEND rest_features "mySQL") add_definitions(-DUSE_SQL) include(FindSQL) set(external_include_dirs ${external_include_dirs} ${SQL_INCLUDE_DIR}) @@ -133,22 +129,43 @@ else () set(SQL OFF) endif (${SQL} MATCHES "ON") -#### MPFR -find_path(MPFR_INCLUDE mpfr.h HINTS ${MPFR_PATH} ${MPFR_PATH}/include) # path to include directory -find_path(MPFR_LIB_PATH libmpfr.so HINTS ${MPFR_PATH} ${MPFR_PATH}/lib) # path to include directory -find_library(MPFR_LIB mpfr HINTS ${MPFR_PATH} ${MPFR_PATH}/lib) # path to .so file - -if (NOT MPFR_INCLUDE MATCHES "MPFR_INCLUDE-NOTFOUND" AND NOT MPFR_LIB MATCHES "MPFR_LIB-NOTFOUND") - # MPFR is found - add_compile_definitions(USE_MPFR) - set(external_include_dirs ${external_include_dirs} ${MPFR_INCLUDE}) - set(external_libs "${external_libs};${MPFR_LIB}") - link_directories(${MPFR_LIB}) - message( STATUS "MPFR library : ${MPFR_LIB}" ) +##### MPFR ##### +if (NOT DEFINED MPFR) + set(MPFR OFF) +endif () +if (${MPFR} MATCHES "ON") + find_path(MPFR_INCLUDE mpfr.h HINTS ${MPFR_PATH} ${MPFR_PATH}/include) # path to include directory + find_path(MPFR_LIB_PATH libmpfr.so HINTS ${MPFR_PATH} ${MPFR_PATH}/lib) + find_library(MPFR_LIB mpfr HINTS ${MPFR_PATH} ${MPFR_PATH}/lib) # path to .so file + if (NOT MPFR_INCLUDE MATCHES "MPFR_INCLUDE-NOTFOUND" AND NOT MPFR_LIB MATCHES "MPFR_LIB-NOTFOUND") + # MPFR is found + list(APPEND rest_features "MPFR") + add_compile_definitions(USE_MPFR) + set(external_include_dirs ${external_include_dirs} ${MPFR_INCLUDE}) + set(external_libs "${external_libs};${MPFR_LIB}") + link_directories(${MPFR_LIB}) + message( STATUS "MPFR library : ${MPFR_LIB}" ) + else () + message(ERROR "MPFR library was not found. Adding the location to the installation path may solve this problem.\n Use -DMPFR_PATH=/path/to/mpfr/") + endif () else () - message(WARNING "MPFR library was not found. Adding the location to the installation path may solve this problem.\n Use -DMPFR_PATH=/path/to/mpfr/") + set(MPFR OFF) + set(excludes ${excludes} TRestComplex) +endif (${MPFR} MATCHES "ON") + +##### CURL ##### +find_library(CURL_LIB curl) +if (NOT ${CURL_LIB} STREQUAL "CURL_LIB-NOTFOUND") + list(APPEND rest_features "CURL") + add_compile_definitions(USE_Curl) + message(STATUS "Found curl library: ${CURL_LIB}") + set(external_libs "${external_libs};-lcurl") +else () + message(WARNING "CURL library was not found. ") endif () + + # Include directories for compilation include_directories(${external_include_dirs}) message(STATUS "external include directory: " ${external_include_dirs}) diff --git a/source/framework/CMakeLists.txt b/source/framework/CMakeLists.txt index ba05386d4..4283af32c 100644 --- a/source/framework/CMakeLists.txt +++ b/source/framework/CMakeLists.txt @@ -21,12 +21,6 @@ endif (CMAKE_SYSTEM_NAME MATCHES "Windows") set(external_libs "${external_libs};-lstdc++fs") # sometimes needed for -find_library(CURL_LIB curl) -if (NOT ${CURL_LIB} STREQUAL "CURL_LIB-NOTFOUND") - add_compile_definitions(USE_Curl) - message(STATUS "Found curl library: ${CURL_LIB}") - set(external_libs "${external_libs};-lcurl") -endif () COMPILEDIR(RestFramework) From 80de275b3090ff455d37613b5d20204a7f109dc6 Mon Sep 17 00:00:00 2001 From: nkx Date: Mon, 19 Sep 2022 00:23:23 +0800 Subject: [PATCH 2/4] update CMakeLists.txt --- CMakeLists.txt | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b3f3028fb..7f4e395d5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -114,10 +114,10 @@ set(external_include_dirs ${external_include_dirs} ${ROOT_INCLUDE_DIRS}) ##### mySQL ##### # This is to enable linking of SQL libraries. I.e. for process TRestSQLToAnalysisProcess. -if (NOT DEFINED SQL) - set(SQL OFF) +if (NOT DEFINED REST_SQL) + set(REST_SQL OFF) endif () -if (${SQL} MATCHES "ON") +if (${REST_SQL} MATCHES "ON") list(APPEND rest_features "mySQL") add_definitions(-DUSE_SQL) include(FindSQL) @@ -126,14 +126,14 @@ if (${SQL} MATCHES "ON") message(STATUS "SQL include directory: " ${SQL_INCLUDE_DIR}) set(SQL ON) else () - set(SQL OFF) -endif (${SQL} MATCHES "ON") + set(REST_SQL OFF) +endif (${REST_SQL} MATCHES "ON") ##### MPFR ##### -if (NOT DEFINED MPFR) - set(MPFR OFF) +if (NOT DEFINED REST_MPFR) + set(REST_MPFR OFF) endif () -if (${MPFR} MATCHES "ON") +if (${REST_MPFR} MATCHES "ON") find_path(MPFR_INCLUDE mpfr.h HINTS ${MPFR_PATH} ${MPFR_PATH}/include) # path to include directory find_path(MPFR_LIB_PATH libmpfr.so HINTS ${MPFR_PATH} ${MPFR_PATH}/lib) find_library(MPFR_LIB mpfr HINTS ${MPFR_PATH} ${MPFR_PATH}/lib) # path to .so file @@ -149,9 +149,9 @@ if (${MPFR} MATCHES "ON") message(ERROR "MPFR library was not found. Adding the location to the installation path may solve this problem.\n Use -DMPFR_PATH=/path/to/mpfr/") endif () else () - set(MPFR OFF) + set(REST_MPFR OFF) set(excludes ${excludes} TRestComplex) -endif (${MPFR} MATCHES "ON") +endif (${REST_MPFR} MATCHES "ON") ##### CURL ##### find_library(CURL_LIB curl) From 7b2628b09e8584bf6f96e53a7d5452a1ed572141 Mon Sep 17 00:00:00 2001 From: Ni Kaixiang Date: Mon, 19 Sep 2022 08:24:21 +0800 Subject: [PATCH 3/4] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 474576aa8..b77bb7cca 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -104,7 +104,7 @@ Build and Install: - rm -rf ${CI_PROJECT_DIR}/build && mkdir ${CI_PROJECT_DIR}/build && cd ${CI_PROJECT_DIR}/build - rm -rf ${CI_PROJECT_DIR}/install - cmake ${CI_PROJECT_DIR} -DCMAKE_INSTALL_PREFIX=${CI_PROJECT_DIR}/install - -DREST_ALL_LIBS=ON -DREST_GARFIELD=ON -DREST_G4=ON -DREST_WELCOME=OFF + -DREST_ALL_LIBS=ON -DREST_GARFIELD=ON -DREST_G4=ON -DREST_WELCOME=OFF -DREST_MPFR=ON - make install -j2 artifacts: From 8a18479db37ec0f3e134a20c832df071c1846690 Mon Sep 17 00:00:00 2001 From: Ni Kaixiang Date: Mon, 19 Sep 2022 08:27:11 +0800 Subject: [PATCH 4/4] Update validation.yml --- .github/workflows/validation.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index 6f0fbc47b..977b234ea 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -35,7 +35,7 @@ jobs: - name: Build and install uses: rest-for-physics/framework/.github/actions/build@master with: - cmake-flags: "-DCMAKE_INSTALL_PREFIX=${{ env.REST_PATH }} -DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} -DCMAKE_PREFIX_PATH=$GARFIELD_INSTALL -DREST_ALL_LIBS=ON -DREST_G4=ON -DREST_GARFIELD=ON -DTEST=ON" + cmake-flags: "-DCMAKE_INSTALL_PREFIX=${{ env.REST_PATH }} -DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} -DCMAKE_PREFIX_PATH=$GARFIELD_INSTALL -DREST_ALL_LIBS=ON -DREST_G4=ON -DREST_GARFIELD=ON -DREST_MPFR=ON -DTEST=ON" branch: ${{ env.BRANCH_NAME }} build-path: build - name: Test @@ -54,7 +54,7 @@ jobs: - name: Build and install uses: rest-for-physics/framework/.github/actions/build@master with: - cmake-flags: "-DCMAKE_INSTALL_PREFIX=${{ env.REST_PATH }} -DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} -DCMAKE_PREFIX_PATH=$GARFIELD_INSTALL -DREST_ALL_LIBS=ON -DREST_G4=ON -DREST_GARFIELD=ON" + cmake-flags: "-DCMAKE_INSTALL_PREFIX=${{ env.REST_PATH }} -DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} -DCMAKE_PREFIX_PATH=$GARFIELD_INSTALL -DREST_ALL_LIBS=ON -DREST_G4=ON -DREST_GARFIELD=ON -DREST_MPFR=ON" branch: ${{ env.BRANCH_NAME }} - name: Test REST run: |