IAP GITLAB

Skip to content
Snippets Groups Projects
CMakeLists.txt 2.25 KiB
#
# cfenv feature test - select implementation to use
#
try_compile (HAS_FEENABLEEXCEPT "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/try_feenableexcept.cc")
if (HAS_FEENABLEEXCEPT)
  set (CORSIKA_FENV "CorsikaFenvDefault.cc")
  set_property(DIRECTORY ${CMAKE_HOME_DIRECTORY} APPEND PROPERTY COMPILE_DEFINITIONS "HAS_FEENABLEEXCEPT")
else ()
  if (APPLE)
    set (CORSIKA_FENV "CorsikaFenvOSX.cc")
  else()
    set (CORSIKA_FENV "CorsikaFenvFallback.cc")
  endif()
endif ()

#
# library setup
#
set (
  UTILITIES_SOURCES  
  COMBoost.cc
  CorsikaData.cc
  ${CORSIKA_FENV})

set (
  UTILITIES_HEADERS
  CorsikaData.h
  COMBoost.h
  Bit.h
  Singleton.h
  sgn.h
  CorsikaFenv.h
  MetaProgramming.h
  )

set (
  UTILITIES_DEPENDS
  CORSIKAgeometry
  CORSIKAunits
  CORSIKAlogging
  C8::ext::boost # so far only for MetaProgramming
  C8::ext::eigen3 # for COMboost
  )

if (TARGET cnpy)
  LIST (APPEND
    UTILITIES_HEADERS
    SaveBoostHistogram.hpp
    )
  LIST (APPEND
    UTILITIES_DEPENDS
    cnpy # for SaveBoostHistogram
    )
endif (TARGET cnpy)
  
set (
  UTILITIES_NAMESPACE
  corsika/utl
  )

add_library (CORSIKAutilities STATIC ${UTILITIES_SOURCES})
CORSIKA_COPY_HEADERS_TO_NAMESPACE (CORSIKAutilities ${UTILITIES_NAMESPACE} ${UTILITIES_HEADERS})

set_target_properties (
  CORSIKAutilities
  PROPERTIES
  VERSION ${PROJECT_VERSION}
  SOVERSION 1
  PUBLIC_HEADER "${UTILITIES_HEADERS}"
  )

# target dependencies on other libraries (also the header onlys)
target_link_libraries (
  CORSIKAutilities
  ${UTILITIES_DEPENDS}
  )

target_include_directories (
  CORSIKAutilities
  PUBLIC
  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
  $<INSTALL_INTERFACE:include/include>
  )

install (
  TARGETS CORSIKAutilities
  LIBRARY DESTINATION lib
  ARCHIVE DESTINATION lib
  PUBLIC_HEADER DESTINATION include/${UTILITIES_NAMESPACE}
  )


# --------------------
# code unit testing
CORSIKA_ADD_TEST(testCOMBoost)
target_link_libraries (
  testCOMBoost
  CORSIKAutilities
  CORSIKAtesting
  )

CORSIKA_ADD_TEST(testCorsikaFenv)
target_link_libraries (
  testCorsikaFenv
  CORSIKAutilities
  CORSIKAtesting
)

if (TARGET cnpy)
  CORSIKA_ADD_TEST(testSaveBoostHistogram)
  target_link_libraries (
    testSaveBoostHistogram
    CORSIKAutilities
    CORSIKAtesting
    )
endif (TARGET cnpy)