From e5312ce2a85c44b414a017cfab64e92a30bd322d Mon Sep 17 00:00:00 2001 From: Giovanna Lazzari Miotto <giovanna.lazzari.miotto@cern.ch> Date: Fri, 12 Jan 2024 14:01:38 +0100 Subject: [PATCH] [lint] Add compilation options for C code Create new target library WZDMA for wzdma.c/h with different set of compilation options than core library SCDAQ. Namely, compile in C99 mode to silence C90 mode warnings enabled by default. --- CMakeLists.txt | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b3cd71a9..5525e3c7 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) -- GitLab