From b1ebbb919aebdfb1cc984803d2dee554edb4672e Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Fri, 4 Nov 2022 00:16:23 +0100 Subject: [PATCH] package/docopt-cpp: fix static build Fix the following static build failure raised since the addition of the package in commit 43f96ced67c9a1f84d3f0edf5cd632178eb176b8: [ 66%] Linking CXX shared library libdocopt.so ld (ld-elf2flt): -shared used without passing a shared library ID Fixes: - http://autobuild.buildroot.org/results/834a0209c8165b3208ebf8654cb6cf8e3568b671 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- ...-BUILD_SHARED_LIBS-where-appropriate.patch | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 package/docopt-cpp/0001-only-build-one-target-use-BUILD_SHARED_LIBS-where-appropriate.patch diff --git a/package/docopt-cpp/0001-only-build-one-target-use-BUILD_SHARED_LIBS-where-appropriate.patch b/package/docopt-cpp/0001-only-build-one-target-use-BUILD_SHARED_LIBS-where-appropriate.patch new file mode 100644 index 0000000000..77206d5208 --- /dev/null +++ b/package/docopt-cpp/0001-only-build-one-target-use-BUILD_SHARED_LIBS-where-appropriate.patch @@ -0,0 +1,87 @@ +From 6d3b803d2b0e4bf8703bbfa51a67f378d6bd59f6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= +Date: Tue, 19 Nov 2019 14:58:59 +0100 +Subject: [PATCH] only build one target, use BUILD_SHARED_LIBS where + appropriate + +[Retrieved from: +https://github.com/docopt/docopt.cpp/commit/6d3b803d2b0e4bf8703bbfa51a67f378d6bd59f6] +Signed-off-by: Fabrice Fontaine +--- + CMakeLists.txt | 39 ++++++--------------------------------- + 1 file changed, 6 insertions(+), 33 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index feff32e..14c3420 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -34,33 +34,15 @@ set(docopt_HEADERS + #============================================================================ + # Compile targets + #============================================================================ +-if(MSVC OR XCODE) +- # MSVC requires __declspec() attributes, which are achieved via the +- # DOCOPT_DLL and DOCOPT_EXPORTS macros below. Since those macros are only +- # defined when building a shared library, we must build the shared and +- # static libraries completely separately. +- # Xcode does not support libraries with only object files as sources. +- # See https://cmake.org/cmake/help/v3.0/command/add_library.html?highlight=add_library +- add_library(docopt SHARED ${docopt_SOURCES} ${docopt_HEADERS}) +- add_library(docopt_s STATIC ${docopt_SOURCES} ${docopt_HEADERS}) +-else() +- # If not using MSVC or Xcode, we will create an intermediate object target +- # to avoid compiling the source code twice. +- add_library(docopt_o OBJECT ${docopt_SOURCES} ${docopt_HEADERS}) +- set_target_properties(docopt_o PROPERTIES POSITION_INDEPENDENT_CODE TRUE) +- +- add_library(docopt SHARED $) +- set_target_properties(docopt PROPERTIES +- VERSION ${PROJECT_VERSION} +- SOVERSION ${PROJECT_VERSION_MAJOR} +- ) +- add_library(docopt_s STATIC $) +-endif() ++add_library(docopt ${docopt_SOURCES} ${docopt_HEADERS}) ++set_target_properties(docopt PROPERTIES ++ VERSION ${PROJECT_VERSION} ++ SOVERSION ${PROJECT_VERSION_MAJOR} ++) + + target_include_directories(docopt PUBLIC $ $) +-target_include_directories(docopt_s PUBLIC $ $) + +-if(MSVC) ++if(MSVC AND BUILD_SHARED_LIBS) + # DOCOPT_DLL: Must be specified when building *and* when using the DLL. + # That's what the "PUBLIC" means. + # DOCOPT_EXPORTS: Must use __declspec(dllexport) when building the DLL. +@@ -69,11 +51,6 @@ if(MSVC) + PRIVATE DOCOPT_EXPORTS) + endif() + +-if(NOT MSVC) +- set_target_properties(docopt PROPERTIES OUTPUT_NAME docopt) +- set_target_properties(docopt_s PROPERTIES OUTPUT_NAME docopt) +-endif() +- + if(USE_BOOST_REGEX) + add_definitions("-DDOCTOPT_USE_BOOST_REGEX") + # This is needed on Linux, where linking a static library into docopt.so +@@ -82,9 +59,6 @@ if(USE_BOOST_REGEX) + find_package(Boost 1.53 REQUIRED COMPONENTS regex) + include_directories(${Boost_INCLUDE_DIRS}) + target_link_libraries(docopt ${Boost_LIBRARIES}) +- if(WITH_STATIC) +- target_link_libraries(docopt_s ${Boost_LIBRARIES}) +- endif() + endif() + + #============================================================================ +@@ -120,7 +94,6 @@ set(export_name "docopt-targets") + install(TARGETS docopt EXPORT ${export_name} DESTINATION ${CMAKE_INSTALL_LIBDIR}) + + # Development package +-install(TARGETS docopt_s EXPORT ${export_name} DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(FILES ${docopt_HEADERS} DESTINATION include/docopt) + + # CMake Package