Skip to content

Commit

Permalink
Enable tests
Browse files Browse the repository at this point in the history
  • Loading branch information
WeiqunZhang committed Sep 22, 2024
1 parent b46fbb3 commit 414f528
Show file tree
Hide file tree
Showing 7 changed files with 124 additions and 25 deletions.
35 changes: 18 additions & 17 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ if (CMAKE_BINARY_DIR STREQUAL CMAKE_SOURCE_DIR)
message(FATAL_ERROR "\nIn-source builds are not allowed.\n")
endif()

set(CMAKE_CXX_STANDARD 17)

if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_CONFIGURATION_TYPES "Release;Debug;MinSizeRel;RelWithDebInfo")
set(CMAKE_BUILD_TYPE Release
Expand All @@ -22,7 +20,6 @@ if (ENABLE_CUDA)
set(AMREXPR_USE_CUDA 1)
find_package(CUDAToolkit REQUIRED)
enable_language(CUDA)
set(CMAKE_CUDA_STANDARD 17)
endif()

option(ENABLE_HIP "Enable HIP support" OFF)
Expand All @@ -31,7 +28,6 @@ if (ENABLE_HIP)
set(AMREXPR_USE_HIP 1)
find_package(hip REQUIRED)
enable_language(HIP)
set(CMAKE_HIP_STANDARD 17)
endif()

option(ENABLE_SYCL "Enable SYCL support" OFF)
Expand All @@ -44,6 +40,8 @@ endif()
add_library(amrexpr)
add_subdirectory(Src)

target_compile_features(amrexpr PUBLIC cxx_std_17)

configure_file(${PROJECT_SOURCE_DIR}/Tools/CMake/amrexpr_Config.H.in
${CMAKE_BINARY_DIR}/amrexpr_Config.H)

Expand All @@ -61,16 +59,21 @@ if (ENABLE_CUDA)
set_target_properties(amrexpr PROPERTIES CUDA_ARCHITECTURES native)
endif()
set_target_properties(amrexpr PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
target_compile_options(amrexpr PRIVATE
target_compile_features(amrexpr PUBLIC cuda_std_17)
target_compile_options(amrexpr PUBLIC
$<$<COMPILE_LANGUAGE:CUDA>:-m64>
$<$<COMPILE_LANGUAGE:CUDA>:--expt-relaxed-constexpr>
$<$<COMPILE_LANGUAGE:CUDA>:--expt-extended-lambda>
$<$<COMPILE_LANGUAGE:CUDA>:--use_fast_math>)
target_link_libraries(amrexpr PRIVATE CUDA::cudart)
target_link_libraries(amrexpr PUBLIC CUDA::cudart)
endif()

if (ENABLE_HIP)
target_compile_features(amrexpr PUBLIC hip_std_17)
endif()

if (ENABLE_SYCL)
target_compile_options(amrexpr PRIVATE -fsycl)
target_compile_options(amrexpr PUBLIC -fsycl)
endif()

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

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

set(PACKAGE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
set(PACKAGE_INCLUDE_INSTALL_DIR "include")

set(amrexpr_FIND_DEPENDENCIES "")
if (ENABLE_CUDA)
set(amrexpr_FIND_DEPENDENCIES "${amrexpr_FIND_DEPENDENCIES}\nfind_dependency(CUDAToolkit REQUIRED)")
Expand All @@ -102,6 +102,9 @@ write_basic_package_version_file(
COMPATIBILITY AnyNewerVersion
)

set(PACKAGE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
set(PACKAGE_INCLUDE_INSTALL_DIR "include")

configure_package_config_file(
"${CMAKE_CURRENT_SOURCE_DIR}/Tools/CMake/amrexprConfig.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/amrexprConfig.cmake"
Expand All @@ -121,10 +124,8 @@ install(EXPORT amrexprTargets
DESTINATION lib/cmake/amrexpr
)

# tests
# enable_testing
# add_subdirectory(Tests)

# cofig:
# AMREXPR_USE_SYCL, HIP, CUDA, GPU
# NDEBUG
option(ENABLE_TESTS "Enable Tests" OFF)
if (ENABLE_TESTS)
enable_testing()
add_subdirectory(Tests)
endif()
7 changes: 7 additions & 0 deletions Tests/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@

if (ENABLE_CUDA OR ENABLE_HIP OR ENABLE_SYCL)
add_subdirectory(GPU)
else()
add_subdirectory(Parser)
add_subdirectory(Parser2)
endif()
19 changes: 19 additions & 0 deletions Tests/GPU/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
add_executable(test_gpu main.cpp)

target_link_libraries(test_gpu PRIVATE amrexpr)

target_include_directories(test_gpu PRIVATE
$<TARGET_PROPERTY:amrexpr,INTERFACE_INCLUDE_DIRECTORIES>
)

target_compile_features(test_gpu PRIVATE cxx_std_17)

if (ENABLE_CUDA)
set_source_files_properties(main.cpp PROPERTIES LANGUAGE CUDA)
set_target_properties(test_gpu PROPERTIES
CUDA_SEPARABLE_COMPILATION ON
)
target_compile_options(test_gpu PRIVATE $<TARGET_PROPERTY:amrexpr>)
endif()

add_test(NAME test_gpu COMMAND test_gpu)
11 changes: 11 additions & 0 deletions Tests/Parser/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
add_executable(test_parser main.cpp)

target_link_libraries(test_parser PRIVATE amrexpr)

target_include_directories(test_parser PRIVATE
$<TARGET_PROPERTY:amrexpr,INTERFACE_INCLUDE_DIRECTORIES>
)

target_compile_features(test_parser PRIVATE cxx_std_17)

add_test(NAME test_parser COMMAND test_parser)
18 changes: 18 additions & 0 deletions Tests/Parser2/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
add_executable(test_parser2 main.cpp fn.cpp)

set(TEST_PARSER2_WORK_DIRECTORY $<TARGET_FILE_DIR:test_parser2>)
add_custom_command(TARGET test_parser2 PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${CMAKE_CURRENT_SOURCE_DIR}/fn.cpp
${TEST_PARSER2_WORK_DIRECTORY}/fn.cpp
)

target_link_libraries(test_parser2 PRIVATE amrexpr)

target_include_directories(test_parser2 PRIVATE
$<TARGET_PROPERTY:amrexpr,INTERFACE_INCLUDE_DIRECTORIES>
)

target_compile_features(test_parser2 PRIVATE cxx_std_17)

add_test(NAME test_parser2 COMMAND test_parser2)
8 changes: 0 additions & 8 deletions Tools/CMake/amrexprConfig.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,3 @@ include(CMakeFindDependencyMacro)
@amrexpr_FIND_DEPENDENCIES@

include("@PACKAGE_INSTALL_PREFIX@/lib/cmake/amrexpr/amrexprTargets.cmake")

# Set the include directories
set(amrexpr_INCLUDE_DIRS "@PACKAGE_INCLUDE_INSTALL_DIR@")

# Provide the include directories to consumers
set_target_properties(amrexpr::amrexpr PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${amrexpr_INCLUDE_DIRS}"
)
51 changes: 51 additions & 0 deletions Tutorials/libamrexpr/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
cmake_minimum_required(VERSION 3.24)

option(ENABLE_CUDA "Enable CUDA support" OFF)
option(ENABLE_HIP "Enable HIP support" OFF)
option(ENABLE_SYCL "Enable SYCL support" OFF)

if (ENABLE_CUDA)
set(PROJECT_LANGUAGES CXX CUDA)
elseif (ENABLE_HIP)
set(PROJECT_LANGUAGES CXX HIP)
else()
set(PROJECT_LANGUAGES CXX)
endif()

project(amrexpr_test LANGUAGES ${PROJECT_LANGUAGES})

if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_CONFIGURATION_TYPES "Release;Debug;MinSizeRel;RelWithDebInfo")
set(CMAKE_BUILD_TYPE Release
CACHE STRING
"Choose the build type, e.g. Release, Debug, or RelWithDebInfo." FORCE)
endif()

if (ENABLE_CUDA)
find_package(CUDAToolkit REQUIRED)
endif()

if (ENABLE_HIP)
find_package(hip REQUIRED)
endif()

if (ENABLE_SYCL)
set(CMAKE_CXX_COMPILER icpx)
endif()

find_package(amrexpr REQUIRED)

add_executable(parser_test main.cpp)

if (ENABLE_CUDA)
set_source_files_properties(main.cpp PROPERTIES LANGUAGE CUDA)
if (NOT DEFINED CUDA_ARCHITECTURES)
message(STATUS "No CUDA architectures specified. Native will be used.")
set_target_properties(parser_test PROPERTIES CUDA_ARCHITECTURES native)
endif()
set_target_properties(parser_test PROPERTIES
CUDA_SEPARABLE_COMPILATION ON
)
endif()

target_link_libraries(parser_test PRIVATE amrexpr::amrexpr)

0 comments on commit 414f528

Please sign in to comment.