0003-Add-top-level-CMakeLists.txt.patch 7.6 KB

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