From 5d74f48e9a89699367d37a3378a4773abc7ee7c8 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Thu, 11 Feb 2016 10:11:33 +0100 Subject: Cmake tuning; move cfg folder --- CMakeLists.txt | 81 +++++++++++++++++++++++++++++++++------------------------- 1 file changed, 46 insertions(+), 35 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 13f5e80..940909e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,13 @@ ENDIF() message( "Build Type selected: ${CMAKE_BUILD_TYPE}" ) +SET(MAKE_KERNEL_MODULE True) +IF(CMAKE_SYSTEM_NAME MATCHES "BSD") + message("Detected *BSD System: disable build of Kernel Module.") + SET(CMAKE_INSTALL_PREFIX "/usr/local") + SET(MAKE_KERNEL_MODULE False) +ENDIF() + if(CMAKE_C_COMPILER MATCHES "clang") message( "Using clang flags." ) SET(CMAKE_C_FLAGS_DEBUG "-std=c99 -fsanitize=address -O1 -fno-omit-frame-pointer -g -Wall -Wno-unused-result -D_GNU_SOURCE -D_DEBUG -Wno-multichar -fno-strict-aliasing") @@ -83,12 +90,13 @@ ADD_CUSTOM_TARGET( # CLIENT # ################################################################################ -FILE(GLOB_RECURSE CLIENT_SRCS src/client/*.c) -ADD_EXECUTABLE(dnbd3-client ${CLIENT_SRCS}) -TARGET_LINK_LIBRARIES(dnbd3-client) -ADD_DEPENDENCIES(dnbd3-client version) -INSTALL(TARGETS dnbd3-client RUNTIME DESTINATION sbin) - +if(MAKE_KERNEL_MODULE) + FILE(GLOB_RECURSE CLIENT_SRCS src/client/*.c) + ADD_EXECUTABLE(dnbd3-client ${CLIENT_SRCS}) + TARGET_LINK_LIBRARIES(dnbd3-client) + ADD_DEPENDENCIES(dnbd3-client version) + INSTALL(TARGETS dnbd3-client RUNTIME DESTINATION sbin) +ENDIF() ################################################################################ @@ -126,48 +134,51 @@ endif() # MODULE # ################################################################################ -SET(MODULE_NAME dnbd3) -SET(MODULE_FILE ${MODULE_NAME}.ko) -FILE(GLOB MODULE_SOURCE_FILES src/kernel/*.c src/serialize.c) -FILE(GLOB MODULE_HEADER_FILES src/kernel/*.h src/*.h) +IF(MAKE_KERNEL_MODULE) + SET(MODULE_NAME dnbd3) + SET(MODULE_FILE ${MODULE_NAME}.ko) + FILE(GLOB MODULE_SOURCE_FILES src/kernel/*.c src/serialize.c) + FILE(GLOB MODULE_HEADER_FILES src/kernel/*.h src/*.h) -SET(KERNEL_DIR "/lib/modules/${CMAKE_SYSTEM_VERSION}/build") + SET(KERNEL_DIR "/lib/modules/${CMAKE_SYSTEM_VERSION}/build") -SET(KBUILD_COMMAND ${CMAKE_MAKE_PROGRAM} -C ${KERNEL_DIR} - M=${CMAKE_BINARY_DIR} modules -) + SET(KBUILD_COMMAND ${CMAKE_MAKE_PROGRAM} -C ${KERNEL_DIR} + M=${CMAKE_BINARY_DIR} modules + ) -CONFIGURE_FILE(Kbuild.in ${CMAKE_BINARY_DIR}/Kbuild) + CONFIGURE_FILE(Kbuild.in ${CMAKE_BINARY_DIR}/Kbuild) -FOREACH(MODULE_SOURCE_FILE ${MODULE_SOURCE_FILES}) - CONFIGURE_FILE(${MODULE_SOURCE_FILE} ${CMAKE_BINARY_DIR} COPYONLY) -ENDFOREACH( MODULE_SOURCE_FILE ) + FOREACH(MODULE_SOURCE_FILE ${MODULE_SOURCE_FILES}) + CONFIGURE_FILE(${MODULE_SOURCE_FILE} ${CMAKE_BINARY_DIR} COPYONLY) + ENDFOREACH( MODULE_SOURCE_FILE ) -FOREACH(MODULE_HEADER_FILE ${MODULE_HEADER_FILES}) - CONFIGURE_FILE(${MODULE_HEADER_FILE} ${CMAKE_BINARY_DIR} COPYONLY) -ENDFOREACH( MODULE_HEADER_FILE ) + FOREACH(MODULE_HEADER_FILE ${MODULE_HEADER_FILES}) + CONFIGURE_FILE(${MODULE_HEADER_FILE} ${CMAKE_BINARY_DIR} COPYONLY) + ENDFOREACH( MODULE_HEADER_FILE ) -ADD_CUSTOM_COMMAND( - OUTPUT ${CMAKE_BINARY_DIR}/${MODULE_FILE} - COMMAND ${KBUILD_COMMAND} - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - DEPENDS ${MODULE_SOURCE_FILES} Kbuild.in - VERBATIM -) + ADD_CUSTOM_COMMAND( + OUTPUT ${CMAKE_BINARY_DIR}/${MODULE_FILE} + COMMAND ${KBUILD_COMMAND} + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + DEPENDS ${MODULE_SOURCE_FILES} Kbuild.in + VERBATIM + ) -ADD_CUSTOM_TARGET(${MODULE_NAME} ALL DEPENDS ${CMAKE_BINARY_DIR}/${MODULE_FILE}) + ADD_CUSTOM_TARGET(${MODULE_NAME} ALL DEPENDS ${CMAKE_BINARY_DIR}/${MODULE_FILE}) -INSTALL(FILES ${CMAKE_BINARY_DIR}/${MODULE_NAME}.ko - DESTINATION /lib/modules/${CMAKE_SYSTEM_VERSION}/kernel/drivers/block - PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ -) + INSTALL(FILES ${CMAKE_BINARY_DIR}/${MODULE_NAME}.ko + DESTINATION /lib/modules/${CMAKE_SYSTEM_VERSION}/kernel/drivers/block + PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ + ) -INSTALL(CODE "EXECUTE_PROCESS(COMMAND depmod -a)") + INSTALL(CODE "EXECUTE_PROCESS(COMMAND depmod -a)") +ENDIF() # # Other install files # -INSTALL(FILES server.conf.example client.conf.example DESTINATION /etc/dnbd3/) +FILE(GLOB conf_files "${CMAKE_CURRENT_SOURCE_DIR}/conf/*.sample" "${CMAKE_CURRENT_SOURCE_DIR}/conf/README.*") +INSTALL(FILES ${conf_files} DESTINATION etc/dnbd3/) -- cgit v1.2.3-55-g7522