Skip to content

Commit 414f528

Browse files
committed
Enable tests
1 parent b46fbb3 commit 414f528

File tree

7 files changed

+124
-25
lines changed

7 files changed

+124
-25
lines changed

CMakeLists.txt

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ if (CMAKE_BINARY_DIR STREQUAL CMAKE_SOURCE_DIR)
77
message(FATAL_ERROR "\nIn-source builds are not allowed.\n")
88
endif()
99

10-
set(CMAKE_CXX_STANDARD 17)
11-
1210
if (NOT CMAKE_BUILD_TYPE)
1311
set(CMAKE_CONFIGURATION_TYPES "Release;Debug;MinSizeRel;RelWithDebInfo")
1412
set(CMAKE_BUILD_TYPE Release
@@ -22,7 +20,6 @@ if (ENABLE_CUDA)
2220
set(AMREXPR_USE_CUDA 1)
2321
find_package(CUDAToolkit REQUIRED)
2422
enable_language(CUDA)
25-
set(CMAKE_CUDA_STANDARD 17)
2623
endif()
2724

2825
option(ENABLE_HIP "Enable HIP support" OFF)
@@ -31,7 +28,6 @@ if (ENABLE_HIP)
3128
set(AMREXPR_USE_HIP 1)
3229
find_package(hip REQUIRED)
3330
enable_language(HIP)
34-
set(CMAKE_HIP_STANDARD 17)
3531
endif()
3632

3733
option(ENABLE_SYCL "Enable SYCL support" OFF)
@@ -44,6 +40,8 @@ endif()
4440
add_library(amrexpr)
4541
add_subdirectory(Src)
4642

43+
target_compile_features(amrexpr PUBLIC cxx_std_17)
44+
4745
configure_file(${PROJECT_SOURCE_DIR}/Tools/CMake/amrexpr_Config.H.in
4846
${CMAKE_BINARY_DIR}/amrexpr_Config.H)
4947

@@ -61,16 +59,21 @@ if (ENABLE_CUDA)
6159
set_target_properties(amrexpr PROPERTIES CUDA_ARCHITECTURES native)
6260
endif()
6361
set_target_properties(amrexpr PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
64-
target_compile_options(amrexpr PRIVATE
62+
target_compile_features(amrexpr PUBLIC cuda_std_17)
63+
target_compile_options(amrexpr PUBLIC
6564
$<$<COMPILE_LANGUAGE:CUDA>:-m64>
6665
$<$<COMPILE_LANGUAGE:CUDA>:--expt-relaxed-constexpr>
6766
$<$<COMPILE_LANGUAGE:CUDA>:--expt-extended-lambda>
6867
$<$<COMPILE_LANGUAGE:CUDA>:--use_fast_math>)
69-
target_link_libraries(amrexpr PRIVATE CUDA::cudart)
68+
target_link_libraries(amrexpr PUBLIC CUDA::cudart)
69+
endif()
70+
71+
if (ENABLE_HIP)
72+
target_compile_features(amrexpr PUBLIC hip_std_17)
7073
endif()
7174

7275
if (ENABLE_SYCL)
73-
target_compile_options(amrexpr PRIVATE -fsycl)
76+
target_compile_options(amrexpr PUBLIC -fsycl)
7477
endif()
7578

7679
install(TARGETS amrexpr EXPORT amrexprTargets)
@@ -80,9 +83,6 @@ install(DIRECTORY ${PROJECT_SOURCE_DIR}/Src/ DESTINATION include
8083

8184
install(FILES ${CMAKE_BINARY_DIR}/amrexpr_Config.H DESTINATION include)
8285

83-
set(PACKAGE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
84-
set(PACKAGE_INCLUDE_INSTALL_DIR "include")
85-
8686
set(amrexpr_FIND_DEPENDENCIES "")
8787
if (ENABLE_CUDA)
8888
set(amrexpr_FIND_DEPENDENCIES "${amrexpr_FIND_DEPENDENCIES}\nfind_dependency(CUDAToolkit REQUIRED)")
@@ -102,6 +102,9 @@ write_basic_package_version_file(
102102
COMPATIBILITY AnyNewerVersion
103103
)
104104

105+
set(PACKAGE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
106+
set(PACKAGE_INCLUDE_INSTALL_DIR "include")
107+
105108
configure_package_config_file(
106109
"${CMAKE_CURRENT_SOURCE_DIR}/Tools/CMake/amrexprConfig.cmake.in"
107110
"${CMAKE_CURRENT_BINARY_DIR}/amrexprConfig.cmake"
@@ -121,10 +124,8 @@ install(EXPORT amrexprTargets
121124
DESTINATION lib/cmake/amrexpr
122125
)
123126

124-
# tests
125-
# enable_testing
126-
# add_subdirectory(Tests)
127-
128-
# cofig:
129-
# AMREXPR_USE_SYCL, HIP, CUDA, GPU
130-
# NDEBUG
127+
option(ENABLE_TESTS "Enable Tests" OFF)
128+
if (ENABLE_TESTS)
129+
enable_testing()
130+
add_subdirectory(Tests)
131+
endif()

Tests/CMakeLists.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2+
if (ENABLE_CUDA OR ENABLE_HIP OR ENABLE_SYCL)
3+
add_subdirectory(GPU)
4+
else()
5+
add_subdirectory(Parser)
6+
add_subdirectory(Parser2)
7+
endif()

Tests/GPU/CMakeLists.txt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
add_executable(test_gpu main.cpp)
2+
3+
target_link_libraries(test_gpu PRIVATE amrexpr)
4+
5+
target_include_directories(test_gpu PRIVATE
6+
$<TARGET_PROPERTY:amrexpr,INTERFACE_INCLUDE_DIRECTORIES>
7+
)
8+
9+
target_compile_features(test_gpu PRIVATE cxx_std_17)
10+
11+
if (ENABLE_CUDA)
12+
set_source_files_properties(main.cpp PROPERTIES LANGUAGE CUDA)
13+
set_target_properties(test_gpu PROPERTIES
14+
CUDA_SEPARABLE_COMPILATION ON
15+
)
16+
target_compile_options(test_gpu PRIVATE $<TARGET_PROPERTY:amrexpr>)
17+
endif()
18+
19+
add_test(NAME test_gpu COMMAND test_gpu)

Tests/Parser/CMakeLists.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
add_executable(test_parser main.cpp)
2+
3+
target_link_libraries(test_parser PRIVATE amrexpr)
4+
5+
target_include_directories(test_parser PRIVATE
6+
$<TARGET_PROPERTY:amrexpr,INTERFACE_INCLUDE_DIRECTORIES>
7+
)
8+
9+
target_compile_features(test_parser PRIVATE cxx_std_17)
10+
11+
add_test(NAME test_parser COMMAND test_parser)

Tests/Parser2/CMakeLists.txt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
add_executable(test_parser2 main.cpp fn.cpp)
2+
3+
set(TEST_PARSER2_WORK_DIRECTORY $<TARGET_FILE_DIR:test_parser2>)
4+
add_custom_command(TARGET test_parser2 PRE_BUILD
5+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
6+
${CMAKE_CURRENT_SOURCE_DIR}/fn.cpp
7+
${TEST_PARSER2_WORK_DIRECTORY}/fn.cpp
8+
)
9+
10+
target_link_libraries(test_parser2 PRIVATE amrexpr)
11+
12+
target_include_directories(test_parser2 PRIVATE
13+
$<TARGET_PROPERTY:amrexpr,INTERFACE_INCLUDE_DIRECTORIES>
14+
)
15+
16+
target_compile_features(test_parser2 PRIVATE cxx_std_17)
17+
18+
add_test(NAME test_parser2 COMMAND test_parser2)

Tools/CMake/amrexprConfig.cmake.in

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,3 @@ include(CMakeFindDependencyMacro)
66
@amrexpr_FIND_DEPENDENCIES@
77

88
include("@PACKAGE_INSTALL_PREFIX@/lib/cmake/amrexpr/amrexprTargets.cmake")
9-
10-
# Set the include directories
11-
set(amrexpr_INCLUDE_DIRS "@PACKAGE_INCLUDE_INSTALL_DIR@")
12-
13-
# Provide the include directories to consumers
14-
set_target_properties(amrexpr::amrexpr PROPERTIES
15-
INTERFACE_INCLUDE_DIRECTORIES "${amrexpr_INCLUDE_DIRS}"
16-
)

Tutorials/libamrexpr/CMakeLists.txt

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
cmake_minimum_required(VERSION 3.24)
2+
3+
option(ENABLE_CUDA "Enable CUDA support" OFF)
4+
option(ENABLE_HIP "Enable HIP support" OFF)
5+
option(ENABLE_SYCL "Enable SYCL support" OFF)
6+
7+
if (ENABLE_CUDA)
8+
set(PROJECT_LANGUAGES CXX CUDA)
9+
elseif (ENABLE_HIP)
10+
set(PROJECT_LANGUAGES CXX HIP)
11+
else()
12+
set(PROJECT_LANGUAGES CXX)
13+
endif()
14+
15+
project(amrexpr_test LANGUAGES ${PROJECT_LANGUAGES})
16+
17+
if (NOT CMAKE_BUILD_TYPE)
18+
set(CMAKE_CONFIGURATION_TYPES "Release;Debug;MinSizeRel;RelWithDebInfo")
19+
set(CMAKE_BUILD_TYPE Release
20+
CACHE STRING
21+
"Choose the build type, e.g. Release, Debug, or RelWithDebInfo." FORCE)
22+
endif()
23+
24+
if (ENABLE_CUDA)
25+
find_package(CUDAToolkit REQUIRED)
26+
endif()
27+
28+
if (ENABLE_HIP)
29+
find_package(hip REQUIRED)
30+
endif()
31+
32+
if (ENABLE_SYCL)
33+
set(CMAKE_CXX_COMPILER icpx)
34+
endif()
35+
36+
find_package(amrexpr REQUIRED)
37+
38+
add_executable(parser_test main.cpp)
39+
40+
if (ENABLE_CUDA)
41+
set_source_files_properties(main.cpp PROPERTIES LANGUAGE CUDA)
42+
if (NOT DEFINED CUDA_ARCHITECTURES)
43+
message(STATUS "No CUDA architectures specified. Native will be used.")
44+
set_target_properties(parser_test PROPERTIES CUDA_ARCHITECTURES native)
45+
endif()
46+
set_target_properties(parser_test PROPERTIES
47+
CUDA_SEPARABLE_COMPILATION ON
48+
)
49+
endif()
50+
51+
target_link_libraries(parser_test PRIVATE amrexpr::amrexpr)

0 commit comments

Comments
 (0)