![Romain Naour](/assets/img/avatar_default.png)
See https://sourceforge.net/p/openpowerlink/news/2017/05/openpowerlink-v260 Signed-off-by: Romain Naour <romain.naour@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
202 lines
7.6 KiB
Diff
202 lines
7.6 KiB
Diff
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
|
|
|