| From e7e421526b17c179d5ac33a982b180ff5f7ef7a7 Mon Sep 17 00:00:00 2001 |
| From: Romain Naour <romain.naour@gmail.com> |
| Date: Sat, 27 May 2017 23:51:41 +0200 |
| Subject: [PATCH] use contrib getopt() only on Windows |
| |
| Otherwise, contrib getopt will clash with the one from the libc when |
| building statically. |
| |
| lib64/libc.a(getopt.os):(.data+0x8): multiple definition of `optind' |
| CMakeFiles/demo_mn_console.dir/__/__/contrib/getopt/getopt.c.o:(.data+0x8): first defined here |
| lib64/libc.a(getopt.os):(.data+0x4): multiple definition of `opterr' |
| CMakeFiles/demo_mn_console.dir/__/__/contrib/getopt/getopt.c.o:(.data+0xc): first defined here |
| /lib64/libc.a(getopt.os): In function `__GI_getopt': |
| getopt.c:(.text+0x76e): multiple definition of `getopt' |
| |
| Signed-off-by: Romain Naour <romain.naour@gmail.com> |
| --- |
| apps/demo_cn_console/CMakeLists.txt | 2 +- |
| apps/demo_cn_console/src/main.c | 6 ++++++ |
| apps/demo_mn_console/CMakeLists.txt | 2 +- |
| apps/demo_mn_console/src/main.c | 6 ++++++ |
| 4 files changed, 14 insertions(+), 2 deletions(-) |
| |
| diff --git a/apps/demo_cn_console/CMakeLists.txt b/apps/demo_cn_console/CMakeLists.txt |
| index 3bb8f25..800797a 100644 |
| --- a/apps/demo_cn_console/CMakeLists.txt |
| +++ b/apps/demo_cn_console/CMakeLists.txt |
| @@ -61,7 +61,6 @@ SET(DEMO_SOURCES |
| ${COMMON_SOURCE_DIR}/eventlog/eventlog.c |
| ${COMMON_SOURCE_DIR}/eventlog/eventlogstring.c |
| ${CONTRIB_SOURCE_DIR}/console/printlog.c |
| - ${CONTRIB_SOURCE_DIR}/getopt/getopt.c |
| ) |
| |
| INCLUDE_DIRECTORIES( |
| @@ -114,6 +113,7 @@ ENDIF (CFG_KERNEL_STACK_DIRECTLINK) |
| IF(CMAKE_SYSTEM_NAME STREQUAL "Linux") |
| include(linux.cmake) |
| ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Windows") |
| + SET(DEMO_SOURCES ${DEMO_SOURCES} ${CONTRIB_SOURCE_DIR}/getopt/getopt.c) |
| include (windows.cmake) |
| ELSE() |
| MESSAGE(FATAL_ERROR "System ${CMAKE_SYSTEM_NAME} is not supported!") |
| diff --git a/apps/demo_cn_console/src/main.c b/apps/demo_cn_console/src/main.c |
| index d64536c..f790570 100644 |
| --- a/apps/demo_cn_console/src/main.c |
| +++ b/apps/demo_cn_console/src/main.c |
| @@ -50,7 +50,13 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| #include <system/system.h> |
| #include <obdcreate/obdcreate.h> |
| + |
| +#if (TARGET_SYSTEM == _WIN32_) |
| #include <getopt/getopt.h> |
| +#else |
| +#include <unistd.h> |
| +#endif |
| + |
| #include <console/console.h> |
| #include <eventlog/eventlog.h> |
| |
| diff --git a/apps/demo_mn_console/CMakeLists.txt b/apps/demo_mn_console/CMakeLists.txt |
| index 6f9c5a1..2e74529 100644 |
| --- a/apps/demo_mn_console/CMakeLists.txt |
| +++ b/apps/demo_mn_console/CMakeLists.txt |
| @@ -68,7 +68,6 @@ SET(DEMO_SOURCES |
| ${COMMON_SOURCE_DIR}/eventlog/eventlog.c |
| ${COMMON_SOURCE_DIR}/eventlog/eventlogstring.c |
| ${CONTRIB_SOURCE_DIR}/console/printlog.c |
| - ${CONTRIB_SOURCE_DIR}/getopt/getopt.c |
| ${FIRMWARE_MANAGER_SOURCES} |
| ) |
| |
| @@ -131,6 +130,7 @@ ENDIF() |
| IF(CMAKE_SYSTEM_NAME STREQUAL "Linux") |
| include(linux.cmake) |
| ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Windows") |
| + SET(DEMO_SOURCES ${DEMO_SOURCES} ${CONTRIB_SOURCE_DIR}/getopt/getopt.c) |
| include (windows.cmake) |
| ELSE() |
| MESSAGE(FATAL_ERROR "System ${CMAKE_SYSTEM_NAME} is not supported!") |
| diff --git a/apps/demo_mn_console/src/main.c b/apps/demo_mn_console/src/main.c |
| index cba747d..b766ed1 100644 |
| --- a/apps/demo_mn_console/src/main.c |
| +++ b/apps/demo_mn_console/src/main.c |
| @@ -50,7 +50,13 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| #include <system/system.h> |
| #include <obdcreate/obdcreate.h> |
| + |
| +#if (TARGET_SYSTEM == _WIN32_) |
| #include <getopt/getopt.h> |
| +#else |
| +#include <unistd.h> |
| +#endif |
| + |
| #include <console/console.h> |
| #include <eventlog/eventlog.h> |
| #include <firmwaremanager/firmwaremanager.h> |
| -- |
| 2.9.4 |
| |