Skip to content

Commit 5421690

Browse files
committed
Build: revise CMakeLists
- Lower the required version to 3.16 for a better compatiablilty - Bump abacus version to 2.2.3 - Unified cpp standard settings - Add error message when enable sanitizer with intel compiler - Add download info when fetching from GitHub
1 parent 65e131f commit 5421690

File tree

2 files changed

+18
-17
lines changed

2 files changed

+18
-17
lines changed

CMakeLists.txt

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ cmake_minimum_required(VERSION 3.16)
55
########################################
66

77
project(ABACUS
8-
VERSION 2.2.0
8+
VERSION 2.2.3
99
DESCRIPTION "ABACUS is an electronic structure package based on DFT."
1010
HOMEPAGE_URL "https://github.com/deepmodeling/abacus-develop"
1111
LANGUAGES CXX
@@ -28,8 +28,10 @@ set(ABACUS_TEST_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tests)
2828
set(ABACUS_BIN_PATH ${CMAKE_CURRENT_BINARY_DIR}/${ABACUS_BIN_NAME})
2929
include_directories(${ABACUS_SOURCE_DIR})
3030
add_executable(${ABACUS_BIN_NAME} source/main.cpp)
31+
set(CMAKE_CXX_STANDARD 11)
32+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
3133
add_compile_options(-O2 -g)
32-
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-write-strings" )
34+
add_compile_options(-Wno-write-strings)
3335

3436
find_package(Cereal REQUIRED)
3537
include_directories(${Cereal_INCLUDE_DIR})
@@ -52,10 +54,8 @@ if(USE_OPENMP)
5254
find_package(OpenMP REQUIRED)
5355
target_link_libraries(${ABACUS_BIN_NAME} OpenMP::OpenMP_CXX)
5456
add_compile_options(${OpenMP_CXX_FLAGS})
55-
#add_compile_definitions(_OPENMP)
5657
endif()
5758

58-
set(CMAKE_CXX_STANDARD 11)
5959
include(CheckLanguage)
6060
check_language(CUDA)
6161
if(CMAKE_CUDA_COMPILER)
@@ -71,7 +71,7 @@ if(CMAKE_CUDA_COMPILER)
7171
endif()
7272
else()
7373
if(NOT USE_CUDA AND NOT USE_CUSOLVER_LCAO)
74-
message(WARNING "CUDA components detected, but both USE_CUDA and USE_CUSOLVER_LCAO set to OFF. \nNOT building CUDA version of ABACUS.")
74+
message(WARNING "CUDA components detected, but both USE_CUDA and USE_CUSOLVER_LCAO set to OFF. NOT building CUDA version of ABACUS.")
7575
elseif (USE_CUDA AND USE_CUSOLVER_LCAO)
7676
message(FATAL_ERROR "USE_CUDA and USE_CUSOLVER_LCAO set, but now they not allowed to coexist.")
7777
endif()
@@ -88,8 +88,7 @@ if(USE_CUDA OR USE_CUSOLVER_LCAO)
8888
cmake_minimum_required(VERSION 3.18) # required by `CUDA_ARCHITECTURES` below
8989
set(CMAKE_CXX_STANDARD 14)
9090
set(CMAKE_CXX_EXTENSIONS ON)
91-
set(CMAKE_CXX_STANDARD_REQUIRED ON)
92-
set(CMAKE_CUDA_STANDARD 14)
91+
set(CMAKE_CUDA_STANDARD ${CMAKE_CXX_STANDARD})
9392
set(CMAKE_CUDA_STANDARD_REQUIRED ON)
9493
set(CMAKE_CUDA_HOST_COMPILER ${CMAKE_CXX_COMPILER})
9594
enable_language(CUDA)
@@ -120,9 +119,7 @@ endif()
120119
# Warning: CMake add support to HIP in version 3.21. This is rather a new version.
121120
# Use cmake with AMD-ROCm: https://rocmdocs.amd.com/en/latest/Installation_Guide/Using-CMake-with-AMD-ROCm.html
122121
if(USE_ROCM)
123-
set(CMAKE_CXX_STANDARD 11)
124-
SET(CMAKE_HIP_STANDARD 11)
125-
# set(CMAKE_CXX_STANDARD_REQUIRED True)
122+
SET(CMAKE_HIP_STANDARD ${CMAKE_CXX_STANDARD})
126123
list(APPEND CMAKE_PREFIX_PATH /opt/rocm/hip /opt/rocm)
127124
list(APPEND CMAKE_SYSTEM_PREFIX_PATH "/opt/rocm/hip")
128125

@@ -145,6 +142,9 @@ if(USE_ROCM)
145142
endif()
146143

147144
if(ENABLE_ASAN)
145+
if (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
146+
message(FATAL_ERROR "Address Sanitizer is not supported on Intel compiler.")
147+
endif()
148148
add_compile_options(
149149
-fsanitize=address
150150
-fno-omit-frame-pointer
@@ -206,13 +206,16 @@ if(ENABLE_DEEPKS)
206206
FetchContent_Declare(
207207
libnpy
208208
GIT_REPOSITORY https://github.com/llohse/libnpy.git
209+
GIT_SHALLOW TRUE
210+
GIT_PROGRESS TRUE
209211
)
210212
FetchContent_MakeAvailable(libnpy)
211213
endif()
212214
include_directories(${libnpy_SOURCE_DIR}/include)
213215
add_compile_definitions(__DEEPKS)
214216
endif()
215217

218+
list(APPEND math_libs m)
216219
target_link_libraries(${ABACUS_BIN_NAME} ${math_libs})
217220

218221
if(DEFINED Libxc_DIR)
@@ -244,17 +247,18 @@ add_compile_definitions(
244247
)
245248

246249
IF (BUILD_TESTING)
250+
set(CMAKE_CXX_STANDARD 14) # Required in orbital
247251
include(CTest)
248252
enable_testing()
249-
find_package(Threads)
250-
set(CMAKE_CXX_STANDARD_REQUIRED ON)
251253
find_package(GTest HINTS /usr/local/lib/ ${GTEST_DIR})
252254
if(NOT ${GTest_FOUND})
253255
include(FetchContent)
254256
FetchContent_Declare(
255257
googletest
256258
GIT_REPOSITORY https://github.com/google/googletest.git
257259
GIT_TAG "origin/main"
260+
GIT_SHALLOW TRUE
261+
GIT_PROGRESS TRUE
258262
)
259263
FetchContent_MakeAvailable(googletest)
260264
endif()
@@ -267,8 +271,8 @@ IF (BUILD_TESTING)
267271
add_executable(${UT_TARGET} ${UT_SOURCES})
268272
#dependencies & link library
269273
target_link_libraries(${UT_TARGET} ${UT_LIBS}
270-
OpenMP::OpenMP_CXX pthread GTest::gtest_main GTest::gmock_main)
271-
install(TARGETS ${UT_TARGET} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/../../../tests )
274+
OpenMP::OpenMP_CXX Threads::Threads GTest::gtest_main GTest::gmock_main)
275+
install(TARGETS ${UT_TARGET} DESTINATION ${CMAKE_BINARY_DIR}/tests )
272276
add_test(NAME ${UT_TARGET}
273277
COMMAND ${UT_TARGET}
274278
WORKING_DIRECTORY $<TARGET_FILE_DIR:${UT_TARGET}>
@@ -302,7 +306,6 @@ target_link_libraries(${ABACUS_BIN_NAME}
302306
hamilt
303307
psi
304308
esolver
305-
-lm
306309
)
307310

308311
install(PROGRAMS ${ABACUS_BIN_PATH}

source/module_orbital/CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ add_library(
1515
parallel_orbitals.cpp
1616
)
1717

18-
set(CMAKE_CXX_STANDARD_REQUIRED ON)
1918
IF (BUILD_TESTING)
20-
set(CMAKE_CXX_STANDARD 14)
2119
add_subdirectory(test)
2220
endif()

0 commit comments

Comments
 (0)