xref: /OK3568_Linux_fs/buildroot/package/openpowerlink/0003-Add-top-level-CMakeLists.txt.patch (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1From cd0945a323cecb638ce56f2e3d7fb4e8c004b98b Mon Sep 17 00:00:00 2001
2From: Romain Naour <romain.naour@gmail.com>
3Date: Wed, 25 May 2016 15:59:20 +0200
4Subject: [PATCH] Add top level CMakeLists.txt
5
6This CMakeLists.txt can be used to build openpowerlink
7using a automated build system.
8
9Don't use FIND_LIBRARY when the stack is built from a top
10level build (ie CFG_OPLK_LIB is ON).
11For a top level build, CMake will automatically add a build
12dependency on oplk libraries for building demos applications.
13
14Also replace OPLKLIB_DEBUG by OPLKLIB in OPLK_LINK_LIBRARIES macro
15if CMAKE_BUILD_TYPE is "Debug", otherwise TARGET_LINK_LIBRARIES can't
16find the openpowerlink library.
17This issue may be related to:
18https://github.com/OpenAutomationTechnologies/openPOWERLINK_V2/issues/109
19
20Fixes:
21http://autobuild.buildroot.net/results/da4/da445b65cb136d71577f04e3a17fdb2ef6302a9b
22
23This patch has not been accepted by upstream:
24https://github.com/openPOWERLINK/openPOWERLINK_V2/pull/57
25
26Add PCIe support (v2.3.2)
27
28Signed-off-by: Romain Naour <romain.naour@gmail.com>
29---
30 CMakeLists.txt                               | 42 +++++++++++++++++
31 apps/common/cmake/findoplklib.cmake          | 68 +++++++++++++++-------------
32 apps/common/cmake/linkoplklib.cmake          |  2 +-
33 drivers/linux/drv_daemon_pcap/CMakeLists.txt | 12 +++--
34 4 files changed, 89 insertions(+), 35 deletions(-)
35 create mode 100644 CMakeLists.txt
36
37diff --git a/CMakeLists.txt b/CMakeLists.txt
38new file mode 100644
39index 0000000..28d4e7a
40--- /dev/null
41+++ b/CMakeLists.txt
42@@ -0,0 +1,42 @@
43+
44+CMAKE_MINIMUM_REQUIRED (VERSION 2.8.7)
45+
46+#### LIB ####
47+
48+IF (CFG_OPLK_LIB)
49+    ADD_SUBDIRECTORY("stack")
50+ENDIF (CFG_OPLK_LIB)
51+
52+#### Linux kernel Ethernet module  ####
53+
54+IF (CFG_KERNEL_DRIVERS)
55+    ADD_SUBDIRECTORY("drivers/linux/drv_kernelmod_edrv")
56+ENDIF (CFG_KERNEL_DRIVERS)
57+
58+#### Linux kernel PCIe module  ####
59+
60+IF (CFG_KERNEL_PCIE_DRIVERS)
61+    ADD_SUBDIRECTORY("drivers/linux/drv_kernelmod_pcie")
62+ENDIF (CFG_KERNEL_PCIE_DRIVERS)
63+
64+#### Pcap userspace driver  ####
65+
66+IF (CFG_PCAP_DAEMON)
67+    ADD_SUBDIRECTORY("drivers/linux/drv_daemon_pcap")
68+ENDIF (CFG_PCAP_DAEMON)
69+
70+#### OpenPowerLink Demos  ####
71+
72+# Add subdirectory of CN console demo application
73+IF (CFG_DEMO_CN_CONSOLE)
74+    ADD_SUBDIRECTORY("apps/demo_cn_console")
75+ENDIF (CFG_DEMO_CN_CONSOLE)
76+
77+# Add subdirectory of MN console demo application
78+IF (CFG_DEMO_MN_CONSOLE)
79+    ADD_SUBDIRECTORY("apps/demo_mn_console")
80+ENDIF (CFG_DEMO_MN_CONSOLE)
81+
82+IF (CFG_DEMO_MN_QT)
83+    ADD_SUBDIRECTORY("apps/demo_mn_qt")
84+ENDIF (CFG_DEMO_MN_QT)
85diff --git a/apps/common/cmake/findoplklib.cmake b/apps/common/cmake/findoplklib.cmake
86index f7e710f..b8b04c5 100644
87--- a/apps/common/cmake/findoplklib.cmake
88+++ b/apps/common/cmake/findoplklib.cmake
89@@ -85,36 +85,42 @@ MACRO(FIND_OPLK_LIBRARY OPLK_NODE_TYPE)
90     # Set oplk library directory
91     SET(OPLKLIB_DIR ${OPLK_BASE_DIR}/stack/lib/${SYSTEM_NAME_DIR}/${SYSTEM_PROCESSOR_DIR})
92
93-    IF((CMAKE_GENERATOR MATCHES "Visual Studio") OR (CMAKE_BUILD_TYPE STREQUAL "Release"))
94-        # Search for release library
95-        UNSET(OPLKLIB CACHE)
96-        MESSAGE(STATUS "Searching for LIBRARY ${OPLKLIB_NAME} in ${OPLKLIB_DIR}")
97-        FIND_LIBRARY(OPLKLIB NAME ${OPLKLIB_NAME}
98-                             HINTS ${OPLKLIB_DIR} ${OPLKLIB_DIR}/${CFG_DEMO_BOARD_NAME}/${CFG_DEMO_NAME})
99-
100-        IF(CMAKE_SYSTEM_NAME STREQUAL "Windows")
101-
102-            UNSET(OPLKDLL CACHE)
103-            FIND_PROGRAM(OPLKDLL NAME ${OPLKLIB_NAME}.dll
104-                                 HINTS ${OPLKLIB_DIR})
105-
106-        ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Windows")
107-    ENDIF()
108-
109-    IF((CMAKE_GENERATOR MATCHES "Visual Studio") OR (CMAKE_BUILD_TYPE STREQUAL "Debug"))
110-        # Search for debug library
111-        UNSET(OPLKLIB_DEBUG CACHE)
112-        MESSAGE(STATUS "Searching for LIBRARY ${OPLKLIB_DEBUG_NAME} in ${OPLKLIB_DIR}")
113-        FIND_LIBRARY(OPLKLIB_DEBUG NAME ${OPLKLIB_DEBUG_NAME}
114-                                   HINTS ${OPLKLIB_DIR} ${OPLKLIB_DIR}/${CFG_DEMO_BOARD_NAME}/${CFG_DEMO_NAME})
115-
116-        IF(CMAKE_SYSTEM_NAME STREQUAL "Windows")
117-
118-            UNSET(OPLKDLL_DEBUG CACHE)
119-            FIND_PROGRAM(OPLKDLL_DEBUG NAME ${OPLKLIB_DEBUG_NAME}.dll
120-                                       HINTS ${OPLKLIB_DIR})
121-
122-        ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Windows")
123-    ENDIF()
124+    # Don't look for oplk libraries for a top level build
125+    IF(CFG_OPLK_LIB)
126+        SET(OPLKLIB ${OPLKLIB_NAME})
127+        SET(OPLKLIB_DEBUG ${OPLKLIB_DEBUG_NAME})
128+    ELSE(CFG_OPLK_LIB)
129+        IF((CMAKE_GENERATOR MATCHES "Visual Studio") OR (CMAKE_BUILD_TYPE STREQUAL "Release"))
130+            # Search for release library
131+            UNSET(OPLKLIB CACHE)
132+            MESSAGE(STATUS "Searching for LIBRARY ${OPLKLIB_NAME} in ${OPLKLIB_DIR}")
133+            FIND_LIBRARY(OPLKLIB NAME ${OPLKLIB_NAME}
134+                                HINTS ${OPLKLIB_DIR} ${OPLKLIB_DIR}/${CFG_DEMO_BOARD_NAME}/${CFG_DEMO_NAME})
135+
136+            IF(CMAKE_SYSTEM_NAME STREQUAL "Windows")
137+
138+                UNSET(OPLKDLL CACHE)
139+                FIND_PROGRAM(OPLKDLL NAME ${OPLKLIB_NAME}.dll
140+                                    HINTS ${OPLKLIB_DIR})
141+
142+            ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Windows")
143+        ENDIF()
144+
145+        IF((CMAKE_GENERATOR MATCHES "Visual Studio") OR (CMAKE_BUILD_TYPE STREQUAL "Debug"))
146+            # Search for debug library
147+            UNSET(OPLKLIB_DEBUG CACHE)
148+            MESSAGE(STATUS "Searching for LIBRARY ${OPLKLIB_DEBUG_NAME} in ${OPLKLIB_DIR}")
149+            FIND_LIBRARY(OPLKLIB_DEBUG NAME ${OPLKLIB_DEBUG_NAME}
150+                                    HINTS ${OPLKLIB_DIR} ${OPLKLIB_DIR}/${CFG_DEMO_BOARD_NAME}/${CFG_DEMO_NAME})
151+
152+            IF(CMAKE_SYSTEM_NAME STREQUAL "Windows")
153+
154+                UNSET(OPLKDLL_DEBUG CACHE)
155+                FIND_PROGRAM(OPLKDLL_DEBUG NAME ${OPLKLIB_DEBUG_NAME}.dll
156+                                        HINTS ${OPLKLIB_DIR})
157+
158+            ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Windows")
159+        ENDIF()
160+    ENDIF(CFG_OPLK_LIB)
161
162 ENDMACRO(FIND_OPLK_LIBRARY)
163diff --git a/apps/common/cmake/linkoplklib.cmake b/apps/common/cmake/linkoplklib.cmake
164index 49aab66..d9fd418 100644
165--- a/apps/common/cmake/linkoplklib.cmake
166+++ b/apps/common/cmake/linkoplklib.cmake
167@@ -33,7 +33,7 @@ MACRO(OPLK_LINK_LIBRARIES EXECUTABLE_NAME)
168         TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} optimized ${OPLKLIB} debug ${OPLKLIB_DEBUG})
169     ELSE()
170         IF(${CMAKE_BUILD_TYPE} STREQUAL "Debug")
171-            TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} debug ${OPLKLIB_DEBUG})
172+            TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} debug ${OPLKLIB})
173         ELSE ()
174             TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} optimized ${OPLKLIB})
175         ENDIF()
176diff --git a/drivers/linux/drv_daemon_pcap/CMakeLists.txt b/drivers/linux/drv_daemon_pcap/CMakeLists.txt
177index 2b4a2c1..ecceb4c 100644
178--- a/drivers/linux/drv_daemon_pcap/CMakeLists.txt
179+++ b/drivers/linux/drv_daemon_pcap/CMakeLists.txt
180@@ -109,9 +109,15 @@ ENDIF()
181 SET(OPLKLIB_DIR ${OPLK_BASE_DIR}/stack/lib/${SYSTEM_NAME_DIR}/${SYSTEM_PROCESSOR_DIR})
182 SET(OPLKLIB_INCDIR ${OPLK_BASE_DIR}/stack/proj/${SYSTEM_NAME_DIR}/lib${LIB_NAME})
183
184-UNSET(OPLKLIB CACHE)
185-FIND_LIBRARY(OPLKLIB NAME ${LIB_NAME}${BUILD_TYPE_EXT}
186-                     HINTS ${OPLKLIB_DIR})
187+# Don't look for oplk libraries for a top level build
188+IF(CFG_OPLK_LIB)
189+    SET(OPLKLIB ${LIB_NAME}${BUILD_TYPE_EXT})
190+ELSE(CFG_OPLK_LIB)
191+    UNSET(OPLKLIB CACHE)
192+    FIND_LIBRARY(OPLKLIB NAME ${LIB_NAME}${BUILD_TYPE_EXT}
193+                        HINTS ${OPLKLIB_DIR})
194+ENDIF(CFG_OPLK_LIB)
195+
196 INCLUDE_DIRECTORIES(${OPLKLIB_INCDIR})
197
198 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -pedantic -std=c99 -pthread -fno-strict-aliasing")
199--
2002.9.4
201
202