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