From 5cf3f37e12d0bb4649e3cda29a43d748708aa554 Mon Sep 17 00:00:00 2001 From: Romain Naour Date: Wed, 12 Aug 2015 11:24:24 +0200 Subject: [PATCH] Add top level CMakeLists.txt This CMakeLists.txt can be used to build openpowerlink using a automated build system. Don't use FIND_LIBRARY when the stack is built from a top level build (ie CFG_OPLK_LIB is ON). For a top level build, CMake will automatically add a build dependency on oplk libraries for building demos applications. This patch has been submitted upstream: https://github.com/openPOWERLINK/openPOWERLINK_V2/pull/57 Signed-off-by: Romain Naour --- CMakeLists.txt | 36 +++++++++++++++ apps/common/cmake/findoplklib.cmake | 68 +++++++++++++++------------- drivers/linux/drv_daemon_pcap/CMakeLists.txt | 12 +++-- 3 files changed, 82 insertions(+), 34 deletions(-) create mode 100644 CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..96e3d0f --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,36 @@ + +CMAKE_MINIMUM_REQUIRED (VERSION 2.8.7) + +#### LIB #### + +IF (CFG_OPLK_LIB) + ADD_SUBDIRECTORY("stack") +ENDIF (CFG_OPLK_LIB) + +#### Linux kernel module #### + +IF (CFG_KERNEL_DRIVERS) + ADD_SUBDIRECTORY("drivers/linux/drv_kernelmod_edrv") +ENDIF (CFG_KERNEL_DRIVERS) + +#### Pcap userspace driver #### + +IF (CFG_PCAP_DAEMON) + ADD_SUBDIRECTORY("drivers/linux/drv_daemon_pcap") +ENDIF (CFG_PCAP_DAEMON) + +#### OpenPowerLink Demos #### + +# Add subdirectory of CN console demo application +IF (CFG_DEMO_CN_CONSOLE) + ADD_SUBDIRECTORY("apps/demo_cn_console") +ENDIF (CFG_DEMO_CN_CONSOLE) + +# Add subdirectory of MN console demo application +IF (CFG_DEMO_MN_CONSOLE) + ADD_SUBDIRECTORY("apps/demo_mn_console") +ENDIF (CFG_DEMO_MN_CONSOLE) + +IF (CFG_DEMO_MN_QT) + ADD_SUBDIRECTORY("apps/demo_mn_qt") +ENDIF (CFG_DEMO_MN_QT) diff --git a/apps/common/cmake/findoplklib.cmake b/apps/common/cmake/findoplklib.cmake index 1bf570e..79ea35b 100644 --- a/apps/common/cmake/findoplklib.cmake +++ b/apps/common/cmake/findoplklib.cmake @@ -81,36 +81,42 @@ MACRO(FIND_OPLK_LIBRARY OPLK_NODE_TYPE) # Set oplk library directory SET(OPLKLIB_DIR ${OPLK_BASE_DIR}/stack/lib/${SYSTEM_NAME_DIR}/${SYSTEM_PROCESSOR_DIR}) - IF((CMAKE_GENERATOR MATCHES "Visual Studio") OR (CMAKE_BUILD_TYPE STREQUAL "Release")) - # Search for release library - UNSET(OPLKLIB CACHE) - MESSAGE(STATUS "Searching for LIBRARY ${OPLKLIB_NAME} in ${OPLKLIB_DIR}") - FIND_LIBRARY(OPLKLIB NAME ${OPLKLIB_NAME} - HINTS ${OPLKLIB_DIR} ${OPLKLIB_DIR}/${CFG_DEMO_BOARD_NAME}/${CFG_DEMO_NAME}) - - IF(CMAKE_SYSTEM_NAME STREQUAL "Windows") - - UNSET(OPLKDLL CACHE) - FIND_PROGRAM(OPLKDLL NAME ${OPLKLIB_NAME}.dll - HINTS ${OPLKLIB_DIR}) - - ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Windows") - ENDIF() - - IF((CMAKE_GENERATOR MATCHES "Visual Studio") OR (CMAKE_BUILD_TYPE STREQUAL "Debug")) - # Search for debug library - UNSET(OPLKLIB_DEBUG CACHE) - MESSAGE(STATUS "Searching for LIBRARY ${OPLKLIB_DEBUG_NAME} in ${OPLKLIB_DIR}") - FIND_LIBRARY(OPLKLIB_DEBUG NAME ${OPLKLIB_DEBUG_NAME} - HINTS ${OPLKLIB_DIR} ${OPLKLIB_DIR}/${CFG_DEMO_BOARD_NAME}/${CFG_DEMO_NAME}) - - IF(CMAKE_SYSTEM_NAME STREQUAL "Windows") - - UNSET(OPLKDLL_DEBUG CACHE) - FIND_PROGRAM(OPLKDLL_DEBUG NAME ${OPLKLIB_DEBUG_NAME}.dll - HINTS ${OPLKLIB_DIR}) - - ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Windows") - ENDIF() + # Don't look for oplk libraries for a top level build + IF(CFG_OPLK_LIB) + SET(OPLKLIB ${OPLKLIB_NAME}) + SET(OPLKLIB_DEBUG ${OPLKLIB_DEBUG_NAME}) + ELSE(CFG_OPLK_LIB) + IF((CMAKE_GENERATOR MATCHES "Visual Studio") OR (CMAKE_BUILD_TYPE STREQUAL "Release")) + # Search for release library + UNSET(OPLKLIB CACHE) + MESSAGE(STATUS "Searching for LIBRARY ${OPLKLIB_NAME} in ${OPLKLIB_DIR}") + FIND_LIBRARY(OPLKLIB NAME ${OPLKLIB_NAME} + HINTS ${OPLKLIB_DIR} ${OPLKLIB_DIR}/${CFG_DEMO_BOARD_NAME}/${CFG_DEMO_NAME}) + + IF(CMAKE_SYSTEM_NAME STREQUAL "Windows") + + UNSET(OPLKDLL CACHE) + FIND_PROGRAM(OPLKDLL NAME ${OPLKLIB_NAME}.dll + HINTS ${OPLKLIB_DIR}) + + ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Windows") + ENDIF() + + IF((CMAKE_GENERATOR MATCHES "Visual Studio") OR (CMAKE_BUILD_TYPE STREQUAL "Debug")) + # Search for debug library + UNSET(OPLKLIB_DEBUG CACHE) + MESSAGE(STATUS "Searching for LIBRARY ${OPLKLIB_DEBUG_NAME} in ${OPLKLIB_DIR}") + FIND_LIBRARY(OPLKLIB_DEBUG NAME ${OPLKLIB_DEBUG_NAME} + HINTS ${OPLKLIB_DIR} ${OPLKLIB_DIR}/${CFG_DEMO_BOARD_NAME}/${CFG_DEMO_NAME}) + + IF(CMAKE_SYSTEM_NAME STREQUAL "Windows") + + UNSET(OPLKDLL_DEBUG CACHE) + FIND_PROGRAM(OPLKDLL_DEBUG NAME ${OPLKLIB_DEBUG_NAME}.dll + HINTS ${OPLKLIB_DIR}) + + ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Windows") + ENDIF() + ENDIF(CFG_OPLK_LIB) ENDMACRO(FIND_OPLK_LIBRARY) diff --git a/drivers/linux/drv_daemon_pcap/CMakeLists.txt b/drivers/linux/drv_daemon_pcap/CMakeLists.txt index 2702abd..81bb598 100644 --- a/drivers/linux/drv_daemon_pcap/CMakeLists.txt +++ b/drivers/linux/drv_daemon_pcap/CMakeLists.txt @@ -104,9 +104,15 @@ ENDIF() SET(OPLKLIB_DIR ${OPLK_BASE_DIR}/stack/lib/${SYSTEM_NAME_DIR}/${SYSTEM_PROCESSOR_DIR}) SET(OPLKLIB_INCDIR ${OPLK_BASE_DIR}/stack/proj/${SYSTEM_NAME_DIR}/lib${LIB_NAME}) -UNSET(OPLKLIB CACHE) -FIND_LIBRARY(OPLKLIB NAME ${LIB_NAME}${BUILD_TYPE_EXT} - HINTS ${OPLKLIB_DIR}) +# Don't look for oplk libraries for a top level build +IF(CFG_OPLK_LIB) + SET(OPLKLIB ${LIB_NAME}${BUILD_TYPE_EXT}) +ELSE(CFG_OPLK_LIB) + UNSET(OPLKLIB CACHE) + FIND_LIBRARY(OPLKLIB NAME ${LIB_NAME}${BUILD_TYPE_EXT} + HINTS ${OPLKLIB_DIR}) +ENDIF(CFG_OPLK_LIB) + INCLUDE_DIRECTORIES(${OPLKLIB_INCDIR}) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -pedantic -std=c99 -pthread -fno-strict-aliasing") -- 2.4.3