diff options
Diffstat (limited to 'package/openpowerlink/0005-FIX-use-pcap-config-to-fix-static-linking-with-libpc.patch')
-rw-r--r-- | package/openpowerlink/0005-FIX-use-pcap-config-to-fix-static-linking-with-libpc.patch | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/package/openpowerlink/0005-FIX-use-pcap-config-to-fix-static-linking-with-libpc.patch b/package/openpowerlink/0005-FIX-use-pcap-config-to-fix-static-linking-with-libpc.patch new file mode 100644 index 0000000000..091f18c40f --- /dev/null +++ b/package/openpowerlink/0005-FIX-use-pcap-config-to-fix-static-linking-with-libpc.patch @@ -0,0 +1,166 @@ +From 406e1759dc6a4c18f6a38c3d7571aacb177487c6 Mon Sep 17 00:00:00 2001 +From: Romain Naour <romain.naour@gmail.com> +Date: Sun, 28 May 2017 00:25:11 +0200 +Subject: [PATCH] [FIX]: use pcap-config to fix static linking with libpcap + +When linking demo_mn_console statically with pcap, the CMake build +system forget to link with other libraries linked with libpcap +(-lnl-genl-3 -lnl-3 -ldbus-1 -pthread). + +[100%] Linking C executable demo_mn_console +lib64/libpcap.a(pcap-linux.o): In function nl80211_init': pcap-linux.c:(.text+0x41e): undefined reference tonl_socket_alloc' + +To fix this, the build system could use pcap-config: +pcap-config --libs --static +-L/path/to/sysroot/usr/lib -lpcap -L/path/to/sysroot/usr/lib/.libs +-lnl-genl-3 -lnl-3 -L/path/to/sysroot/usr/lib -ldbus-1 -pthread + +Fixes: +http://autobuild.buildroot.net/results/f43/f437d09ac6c689c911e1885b95da33b692f2cb3c +http://autobuild.buildroot.net/results/385/3859dc0f4de7e3284a96d5841f040f69f71842df +https://github.com/OpenAutomationTechnologies/openPOWERLINK_V2/issues/187 + +Signed-off-by: Romain Naour <romain.naour@gmail.com> +--- + apps/demo_cn_console/linux.cmake | 20 ++++++++++++++++++++ + apps/demo_mn_console/linux.cmake | 20 ++++++++++++++++++++ + apps/demo_mn_qt/linux.cmake | 22 +++++++++++++++++++++- + drivers/linux/drv_daemon_pcap/CMakeLists.txt | 22 +++++++++++++++++++++- + 4 files changed, 82 insertions(+), 2 deletions(-) + +diff --git a/apps/demo_cn_console/linux.cmake b/apps/demo_cn_console/linux.cmake +index 1c6f51c..7752917 100644 +--- a/apps/demo_cn_console/linux.cmake ++++ b/apps/demo_cn_console/linux.cmake +@@ -46,8 +46,28 @@ SET (DEMO_ARCH_SOURCES + ################################################################################ + # Set architecture specific libraries + ++IF (NOT CFG_COMPILE_SHARED_LIBRARY) ++ SET(PCAP_CONFIG_OPTS --static) ++ENDIF() ++ + IF (CFG_KERNEL_STACK_DIRECTLINK OR CFG_KERNEL_STACK_USERSPACE_DAEMON) ++ ++find_program(PCAP_CONFIG NAMES pcap-config PATHS) ++ ++if (PCAP_CONFIG) ++ message (STATUS "Looking for pcap-config... ${PCAP_CONFIG}") ++ ++ execute_process (COMMAND ${PCAP_CONFIG} --libs ${PCAP_CONFIG_OPTS} ++ OUTPUT_VARIABLE PCAP_LDFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) ++ execute_process (COMMAND ${PCAP_CONFIG} --cflags ${PCAP_CONFIG_OPTS} ++ OUTPUT_VARIABLE PCAP_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) ++ ++ SET (ARCH_LIBRARIES ${ARCH_LIBRARIES} ${PCAP_LDFLAGS}) ++else (PCAP_CONFIG) ++ message (STATUS "pcap-config not found, using defaults...") + SET (ARCH_LIBRARIES ${ARCH_LIBRARIES} pcap) ++endif (PCAP_CONFIG) ++ + ENDIF (CFG_KERNEL_STACK_DIRECTLINK OR CFG_KERNEL_STACK_USERSPACE_DAEMON) + SET (ARCH_LIBRARIES ${ARCH_LIBRARIES} pthread rt) + +diff --git a/apps/demo_mn_console/linux.cmake b/apps/demo_mn_console/linux.cmake +index d24e4fc..5951dbf 100644 +--- a/apps/demo_mn_console/linux.cmake ++++ b/apps/demo_mn_console/linux.cmake +@@ -46,8 +46,28 @@ SET (DEMO_ARCH_SOURCES + ################################################################################ + # Set architecture specific libraries + ++IF (NOT CFG_COMPILE_SHARED_LIBRARY) ++ SET(PCAP_CONFIG_OPTS --static) ++ENDIF() ++ + IF (CFG_KERNEL_STACK_DIRECTLINK OR CFG_KERNEL_STACK_USERSPACE_DAEMON) ++ ++find_program(PCAP_CONFIG NAMES pcap-config PATHS) ++ ++if (PCAP_CONFIG) ++ message (STATUS "Looking for pcap-config... ${PCAP_CONFIG}") ++ ++ execute_process (COMMAND ${PCAP_CONFIG} --libs ${PCAP_CONFIG_OPTS} ++ OUTPUT_VARIABLE PCAP_LDFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) ++ execute_process (COMMAND ${PCAP_CONFIG} --cflags ${PCAP_CONFIG_OPTS} ++ OUTPUT_VARIABLE PCAP_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) ++ ++ SET (ARCH_LIBRARIES ${ARCH_LIBRARIES} ${PCAP_LDFLAGS}) ++else (PCAP_CONFIG) ++ message (STATUS "pcap-config not found, using defaults...") + SET (ARCH_LIBRARIES ${ARCH_LIBRARIES} pcap) ++endif (PCAP_CONFIG) ++ + ENDIF (CFG_KERNEL_STACK_DIRECTLINK OR CFG_KERNEL_STACK_USERSPACE_DAEMON) + SET (ARCH_LIBRARIES ${ARCH_LIBRARIES} pthread rt) + +diff --git a/apps/demo_mn_qt/linux.cmake b/apps/demo_mn_qt/linux.cmake +index 6ed75ee..c69dbd9 100644 +--- a/apps/demo_mn_qt/linux.cmake ++++ b/apps/demo_mn_qt/linux.cmake +@@ -37,8 +37,28 @@ + ################################################################################ + # Set architecture specific libraries + ++IF (NOT CFG_COMPILE_SHARED_LIBRARY) ++ SET(PCAP_CONFIG_OPTS --static) ++ENDIF() ++ + IF(CFG_KERNEL_STACK_DIRECTLINK OR CFG_KERNEL_STACK_USERSPACE_DAEMON) +- SET(ARCH_LIBRARIES ${ARCH_LIBRARIES} pcap) ++ ++find_program(PCAP_CONFIG NAMES pcap-config PATHS) ++ ++if (PCAP_CONFIG) ++ message (STATUS "Looking for pcap-config... ${PCAP_CONFIG}") ++ ++ execute_process (COMMAND ${PCAP_CONFIG} --libs ${PCAP_CONFIG_OPTS} ++ OUTPUT_VARIABLE PCAP_LDFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) ++ execute_process (COMMAND ${PCAP_CONFIG} --cflags ${PCAP_CONFIG_OPTS} ++ OUTPUT_VARIABLE PCAP_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) ++ ++ SET (ARCH_LIBRARIES ${ARCH_LIBRARIES} ${PCAP_LDFLAGS}) ++else (PCAP_CONFIG) ++ message (STATUS "pcap-config not found, using defaults...") ++ SET (ARCH_LIBRARIES ${ARCH_LIBRARIES} pcap) ++endif (PCAP_CONFIG) ++ + ENDIF() + SET(ARCH_LIBRARIES ${ARCH_LIBRARIES} pthread rt) + +diff --git a/drivers/linux/drv_daemon_pcap/CMakeLists.txt b/drivers/linux/drv_daemon_pcap/CMakeLists.txt +index 2b4a2c1..98f693f 100644 +--- a/drivers/linux/drv_daemon_pcap/CMakeLists.txt ++++ b/drivers/linux/drv_daemon_pcap/CMakeLists.txt +@@ -134,7 +134,27 @@ INCLUDE_DIRECTORIES( + ${CONTRIB_SOURCE_DIR} + ) + +-SET (ARCH_LIBRARIES pcap pthread rt) ++IF (NOT CFG_COMPILE_SHARED_LIBRARY) ++ SET(PCAP_CONFIG_OPTS --static) ++ENDIF() ++ ++find_program(PCAP_CONFIG NAMES pcap-config PATHS) ++ ++if (PCAP_CONFIG) ++ message (STATUS "Looking for pcap-config... ${PCAP_CONFIG}") ++ ++ execute_process (COMMAND ${PCAP_CONFIG} --libs ${PCAP_CONFIG_OPTS} ++ OUTPUT_VARIABLE PCAP_LDFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) ++ execute_process (COMMAND ${PCAP_CONFIG} --cflags ${PCAP_CONFIG_OPTS} ++ OUTPUT_VARIABLE PCAP_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) ++ ++ SET (ARCH_LIBRARIES ${ARCH_LIBRARIES} ${PCAP_LDFLAGS}) ++else (PCAP_CONFIG) ++ message (STATUS "pcap-config not found, using defaults...") ++ SET (ARCH_LIBRARIES ${ARCH_LIBRARIES} pcap) ++endif (PCAP_CONFIG) ++ ++SET (ARCH_LIBRARIES ${ARCH_LIBRARIES} pthread rt) + + ADD_EXECUTABLE(${EXE_NAME} ${DRV_SOURCES}) + SET_PROPERTY(TARGET ${EXE_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) +-- +2.9.4 + |