diff --git a/CMakeLists.txt b/CMakeLists.txt index b3cd71a977c1cf7a2de4758a9945f294a136ee98..5525e3c71f4ee8ac95658e294b78e8be73b85f1d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,18 +1,24 @@ cmake_minimum_required(VERSION 2.8) set(SCDAQ_TARGET scdaq) -project(${SCDAQ_TARGET}) +project(${SCDAQ_TARGET} C CXX) set(SCDAQ_LIB SCDAQ) +set(WZDMA_LIB WZDMA) set(SCDAQ_SOURCE_DIR ${CMAKE_SOURCE_DIR}/src) set(SCDAQ_CMAKE_MODS_DIR ${CMAKE_SOURCE_DIR}/cmake) -message("${SCDAQ_CMAKE_MODS_DIR}") set(CMAKE_CXX_STANDARD 11) -file(GLOB SOURCE_FILES ${SCDAQ_SOURCE_DIR}/*/*.h ${SCDAQ_SOURCE_DIR}/*.h) -set(SOURCE_FILES "${SOURCE_FILES}" +set(C_SOURCE_FILES ${SCDAQ_SOURCE_DIR}/wzdma/wz_dma.c + ${SCDAQ_SOURCE_DIR}/wzdma/wz_dma.h) + +file(GLOB CXX_SOURCE_FILES $ + {SCDAQ_SOURCE_DIR}/*/*.h + ${SCDAQ_SOURCE_DIR}/*.h) + +set(CXX_SOURCE_FILES "${CXX_SOURCE_FILES}" ${SCDAQ_SOURCE_DIR}/WZDmaInputFilter.cc ${SCDAQ_SOURCE_DIR}/config.cc ${SCDAQ_SOURCE_DIR}/slice.cc @@ -29,7 +35,9 @@ set(SOURCE_FILES "${SOURCE_FILES}" ${SCDAQ_SOURCE_DIR}/OutputBySize.cc ${SCDAQ_SOURCE_DIR}/OutputFileHandler.cc ) -add_library(${SCDAQ_LIB} ${SOURCE_FILES}) + +add_library(${SCDAQ_LIB} ${CXX_SOURCE_FILES}) +add_library(${WZDMA_LIB} ${C_SOURCE_FILES}) set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${SCDAQ_CMAKE_MODS_DIR}") set(Boost_USE_MULTITHREADED ON) @@ -48,14 +56,21 @@ find_library(micron_STATIC_LIBRARY ) if (Boost_FOUND AND TBB_FOUND AND CURL_FOUND) + # Rules for WZDMA library (compiled in C99-mode, i.e., `gnu99`): + set_target_properties(${WZDMA_LIB} PROPERTIES LINKER_LANGUAGE C) + target_include_directories(${WZDMA_LIB} PRIVATE ${SCDAQ_SOURCE_DIR}) + target_compile_options(${WZDMA_LIB} PRIVATE -std=gnu99 -Wall -Wextra -Wpedantic) + + # Rules for SCDAQ core library (compiled in C11-mode): # For older compilers that do not devise *.cc as C++ set_target_properties(${SCDAQ_LIB} PROPERTIES LINKER_LANGUAGE CXX) # Build library and link to dependencies target_include_directories(${SCDAQ_LIB} PRIVATE ${SCDAQ_SOURCE_DIR} ${Boost_INCLUDE_DIRS} ${CURL_INCLUDE_DIR}) - target_link_libraries(${SCDAQ_LIB} PUBLIC ${Boost_LIBRARIES} ${CURL_LIBRARIES} ${TBB_LIBRARIES} -pthread crypto micron) + target_link_libraries(${SCDAQ_LIB} PUBLIC ${WZDMA_LIB} ${Boost_LIBRARIES} ${CURL_LIBRARIES} ${TBB_LIBRARIES} -pthread crypto micron) # Public options for library are imposed on dependants (i.e., main executable) target_compile_options(${SCDAQ_LIB} PUBLIC -std=c++11 -Wall -Wextra -Wpedantic) + # Build main executable and link it to SCDAQ library add_executable(${SCDAQ_TARGET} ${SCDAQ_SOURCE_DIR}/scdaq.cc) set_target_properties(${SCDAQ_TARGET} PROPERTIES LINKER_LANGUAGE CXX)