Files
Jungfraujoch/CMakeLists.txt

90 lines
2.8 KiB
CMake

CMAKE_MINIMUM_REQUIRED(VERSION 3.18)
PROJECT(Jungfraujoch VERSION 1.0 LANGUAGES C CXX)
SET(CMAKE_CXX_STANDARD 20)
SET(CMAKE_CXX_STANDARD_REQUIRED True)
SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -march=native -mtune=native")
SET(CMAKE_C_FLAGS_RELEASE "-O3 -march=native -mtune=native")
SET(HDF5_USE_STATIC_LIBRARIES ON)
INCLUDE(CheckLanguage)
CHECK_LANGUAGE(CUDA)
SET(CMAKE_CUDA_ARCHITECTURES 70 75 80 86 89) # V100, T4, A100, RTX A4000, L4
SET(CMAKE_CUDA_STANDARD 17)
SET(CMAKE_CUDA_FLAGS_RELEASE "-O3")
IF (CMAKE_CUDA_COMPILER)
ENABLE_LANGUAGE(CUDA)
MESSAGE(STATUS "CUDA VERSION: ${CMAKE_CUDA_COMPILER_VERSION}")
ADD_COMPILE_DEFINITIONS(JFJOCH_USE_CUDA)
FIND_LIBRARY(CUDART_LIBRARY cudart_static PATHS ${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES} REQUIRED)
ENDIF()
SET(JFJOCH_COMPILE_WRITER ON CACHE BOOL "Compile HDF5 writer")
SET(JFJOCH_COMPILE_RECEIVER ON CACHE BOOL "Compile image receiver")
SET(JFJOCH_COMPILE_DETECTOR ON CACHE BOOL "Compile detector control")
SET(JFJOCH_COMPILE_INDEXER ON CACHE BOOL "Compile indexer")
SET(JFJOCH_COMPILE_TESTS OFF CACHE BOOL "Compile tests")
INCLUDE_DIRECTORIES(include)
INCLUDE(CheckIncludeFile)
FIND_LIBRARY(NUMA_LIBRARY NAMES numa DOC "NUMA Library")
CHECK_INCLUDE_FILE(numaif.h HAS_NUMAIF)
CHECK_INCLUDE_FILE(numa.h HAS_NUMA_H)
LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
FIND_PACKAGE(ZeroMQ 4 REQUIRED)
ADD_SUBDIRECTORY(jungfrau)
ADD_SUBDIRECTORY(frame_serialize)
ADD_SUBDIRECTORY(grpc)
ADD_SUBDIRECTORY(compression)
ADD_SUBDIRECTORY(common)
ADD_SUBDIRECTORY(broker)
ADD_SUBDIRECTORY(etc)
SET(jfjoch_executables jfjoch_broker)
IF (JFJOCH_COMPILE_TESTS OR JFJOCH_COMPILE_RECEIVER)
ADD_SUBDIRECTORY(fpga)
ADD_SUBDIRECTORY(receiver)
ADD_SUBDIRECTORY(image_analysis)
LIST(APPEND jfjoch_executables jfjoch_receiver)
ENDIF()
IF (JFJOCH_COMPILE_DETECTOR)
ADD_SUBDIRECTORY(detector_control)
LIST(APPEND jfjoch_executables jfjoch_detector)
ENDIF()
IF (JFJOCH_COMPILE_TESTS OR JFJOCH_COMPILE_WRITER)
ADD_SUBDIRECTORY(writer)
LIST(APPEND jfjoch_executables jfjoch_writer jfjoch_writer_multi)
ENDIF()
IF (JFJOCH_COMPILE_TESTS)
ADD_SUBDIRECTORY(tests)
ADD_SUBDIRECTORY(tools)
LIST(APPEND jfjoch_executables CatchTest DataAnalysisPerfTest CompressionBenchmark HDF5DatasetWriteTest jfjoch_udp_simulator)
ENDIF()
LIST(APPEND jfjoch_executables)
ADD_CUSTOM_COMMAND(OUTPUT frontend_ui/build/index.html
COMMAND npm run build
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/frontend_ui
DEPENDS jfjoch-grpc-js)
ADD_CUSTOM_TARGET(frontend DEPENDS frontend_ui/build/index.html)
ADD_CUSTOM_TARGET(jfjoch DEPENDS ${jfjoch_executables})
IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
SET(CMAKE_INSTALL_PREFIX /opt/jfjoch CACHE PATH "Default directory" FORCE)
ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)