1
0
mirror of https://github.com/TREX-CoE/trexio.git synced 2024-12-23 04:43:57 +01:00

working CTest and optional HDF5 configuration

This commit is contained in:
q-posev 2021-11-15 10:29:50 +01:00
parent f997265be3
commit 11142e0723

View File

@ -11,28 +11,11 @@ project(Trexio
set(CMAKE_C_STANDARD 99) set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_C_STANDARD_REQUIRED ON)
# ============= CONFIGURE HDF5 ==============
option(ENABLE_HDF5 "Enable HDF5 support" ON)
if(ENABLE_HDF5)
find_package(HDF5 REQUIRED COMPONENTS C HL)
if(HDF5_FOUND)
message(STATUS "HDF5 version :: ${HDF5_VERSION}")
message(STATUS "HDF5 include dir :: ${HDF5_INCLUDE_DIRS}")
message(STATUS "HDF5 libraries :: ${HDF5_C_LIBRARIES}")
else()
# Download and install HDF5 library using FetchContent
# ...
endif()
endif()
# ========= DEFINE TREXIO C LIBRARY ========= # ========= DEFINE TREXIO C LIBRARY =========
#IF DO_SHARED #IF DO_SHARED
add_library(trexio SHARED add_library(trexio SHARED
src/trexio.c src/trexio.c
src/trexio_hdf5.c
src/trexio_text.c src/trexio_text.c
) )
#ELIF DO_STATIC #ELIF DO_STATIC
@ -45,24 +28,72 @@ set_target_properties(trexio PROPERTIES
) )
target_include_directories(trexio PRIVATE src) target_include_directories(trexio PRIVATE src)
include_directories(include) include_directories(include)
# ============= CONFIGURE HDF5 ==============
option(ENABLE_HDF5 "Enable HDF5 support" ON)
if(ENABLE_HDF5) if(ENABLE_HDF5)
target_include_directories(trexio PRIVATE ${HDF5_C_INCLUDE_DIRS}) find_package(HDF5 REQUIRED COMPONENTS C HL)
target_link_libraries(trexio PRIVATE ${HDF5_C_HL_LIBRARIES} ${HDF5_C_LIBRARIES})
if(HDF5_FOUND)
message(STATUS "HDF5 version :: ${HDF5_VERSION}")
message(STATUS "HDF5 include dir :: ${HDF5_INCLUDE_DIRS}")
message(STATUS "HDF5 libraries :: ${HDF5_C_LIBRARIES}")
else()
# Download and install HDF5 library using FetchContent
# ...
# For now - raise a FatalError
message(FATAL_ERROR "HDF5 is enabled not found.")
endif()
target_sources(trexio PRIVATE src/trexio_hdf5.c)
target_compile_definitions(trexio PUBLIC HAVE_HDF5=1)
target_include_directories(trexio PRIVATE ${HDF5_C_INCLUDE_DIRS})
target_link_libraries(trexio PRIVATE
${HDF5_C_HL_LIBRARIES}
${HDF5_C_LIBRARIES})
endif() endif()
# ================= TESTING ================= # ================= TESTING =================
enable_testing() enable_testing()
add_executable(io_all tests/io_all.c) # create the lists of tests
target_link_libraries(io_all PRIVATE trexio) set(Tests_text
add_test( open_text
NAME io_all io_dset_float_text
COMMAND $<TARGET_FILE:io_all> io_dset_str_text
) io_safe_dset_float_text
io_dset_int_text
io_num_text
io_str_text
overwrite_all_text
)
if(ENABLE_HDF5)
set(Tests_hdf5
open_hdf5
io_dset_float_hdf5
io_dset_str_hdf5
io_safe_dset_float_hdf5
io_dset_int_hdf5
io_num_hdf5
io_str_hdf5
overwrite_all_hdf5
)
set(Tests io_all ${Tests_text} ${Tests_hdf5})
else()
set(Tests ${Tests_text})
endif()
# Add all the ADD_TEST for each test
foreach(test ${Tests})
add_executable(${test} tests/${test}.c)
target_link_libraries(${test} PRIVATE trexio)
add_test(NAME ${test} COMMAND $<TARGET_FILE:${test}>)
endforeach ()
# ============= INSTALL TREXIO ============== # ============= INSTALL TREXIO ==============