123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- From cd0945a323cecb638ce56f2e3d7fb4e8c004b98b Mon Sep 17 00:00:00 2001
- From: Romain Naour <romain.naour@gmail.com>
- Date: Wed, 25 May 2016 15:59:20 +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.
- Also replace OPLKLIB_DEBUG by OPLKLIB in OPLK_LINK_LIBRARIES macro
- if CMAKE_BUILD_TYPE is "Debug", otherwise TARGET_LINK_LIBRARIES can't
- find the openpowerlink library.
- This issue may be related to:
- https://github.com/OpenAutomationTechnologies/openPOWERLINK_V2/issues/109
- Fixes:
- http://autobuild.buildroot.net/results/da4/da445b65cb136d71577f04e3a17fdb2ef6302a9b
- This patch has not been accepted by upstream:
- https://github.com/openPOWERLINK/openPOWERLINK_V2/pull/57
- Add PCIe support (v2.3.2)
- Signed-off-by: Romain Naour <romain.naour@gmail.com>
- ---
- CMakeLists.txt | 42 +++++++++++++++++
- apps/common/cmake/findoplklib.cmake | 68 +++++++++++++++-------------
- apps/common/cmake/linkoplklib.cmake | 2 +-
- drivers/linux/drv_daemon_pcap/CMakeLists.txt | 12 +++--
- 4 files changed, 89 insertions(+), 35 deletions(-)
- create mode 100644 CMakeLists.txt
- diff --git a/CMakeLists.txt b/CMakeLists.txt
- new file mode 100644
- index 0000000..28d4e7a
- --- /dev/null
- +++ b/CMakeLists.txt
- @@ -0,0 +1,42 @@
- +
- +CMAKE_MINIMUM_REQUIRED (VERSION 2.8.7)
- +
- +#### LIB ####
- +
- +IF (CFG_OPLK_LIB)
- + ADD_SUBDIRECTORY("stack")
- +ENDIF (CFG_OPLK_LIB)
- +
- +#### Linux kernel Ethernet module ####
- +
- +IF (CFG_KERNEL_DRIVERS)
- + ADD_SUBDIRECTORY("drivers/linux/drv_kernelmod_edrv")
- +ENDIF (CFG_KERNEL_DRIVERS)
- +
- +#### Linux kernel PCIe module ####
- +
- +IF (CFG_KERNEL_PCIE_DRIVERS)
- + ADD_SUBDIRECTORY("drivers/linux/drv_kernelmod_pcie")
- +ENDIF (CFG_KERNEL_PCIE_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 f7e710f..b8b04c5 100644
- --- a/apps/common/cmake/findoplklib.cmake
- +++ b/apps/common/cmake/findoplklib.cmake
- @@ -85,36 +85,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/apps/common/cmake/linkoplklib.cmake b/apps/common/cmake/linkoplklib.cmake
- index 49aab66..d9fd418 100644
- --- a/apps/common/cmake/linkoplklib.cmake
- +++ b/apps/common/cmake/linkoplklib.cmake
- @@ -33,7 +33,7 @@ MACRO(OPLK_LINK_LIBRARIES EXECUTABLE_NAME)
- TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} optimized ${OPLKLIB} debug ${OPLKLIB_DEBUG})
- ELSE()
- IF(${CMAKE_BUILD_TYPE} STREQUAL "Debug")
- - TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} debug ${OPLKLIB_DEBUG})
- + TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} debug ${OPLKLIB})
- ELSE ()
- TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} optimized ${OPLKLIB})
- ENDIF()
- diff --git a/drivers/linux/drv_daemon_pcap/CMakeLists.txt b/drivers/linux/drv_daemon_pcap/CMakeLists.txt
- index 2b4a2c1..ecceb4c 100644
- --- a/drivers/linux/drv_daemon_pcap/CMakeLists.txt
- +++ b/drivers/linux/drv_daemon_pcap/CMakeLists.txt
- @@ -109,9 +109,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.9.4
|