[vlc-devel] [PATCH] contrib: ebur128: patch to do static-only builds
Marvin Scholz
epirat07 at gmail.com
Wed Sep 30 13:01:35 CEST 2020
This is an adapted version (to apply on 1.2.4) of the PR I sent
upstream to honor the BUILD_SHARED_LIBS option (which is the officially
intended way to handle static vs shared libraries).
Fixes the build on macOS, which previously would link dynamically to
libebur128 and fail at runtime.
---
...e-BUILD_SHARED_LIBS-option-instead-o.patch | 121 ++++++++++++++++++
contrib/src/libebur128/rules.mak | 4 +-
2 files changed, 123 insertions(+), 2 deletions(-)
create mode 100644 contrib/src/libebur128/0001-CMake-Respect-the-BUILD_SHARED_LIBS-option-instead-o.patch
diff --git a/contrib/src/libebur128/0001-CMake-Respect-the-BUILD_SHARED_LIBS-option-instead-o.patch b/contrib/src/libebur128/0001-CMake-Respect-the-BUILD_SHARED_LIBS-option-instead-o.patch
new file mode 100644
index 00000000000..1b8410e397a
--- /dev/null
+++ b/contrib/src/libebur128/0001-CMake-Respect-the-BUILD_SHARED_LIBS-option-instead-o.patch
@@ -0,0 +1,121 @@
+From 92f0606875e60885f7c9f7543b6c72731c87e525 Mon Sep 17 00:00:00 2001
+From: Marvin Scholz <epirat07 at gmail.com>
+Date: Wed, 30 Sep 2020 12:31:17 +0200
+Subject: [PATCH] CMake: Respect the BUILD_SHARED_LIBS option instead of
+ BUILD_STATIC_LIBS
+
+Instead of the custom BUILD_STATIC_LIBS option, properly respect the
+BUILD_SHARED_LIBS option as documented by CMake at
+https://cmake.org/cmake/help/latest/variable/BUILD_SHARED_LIBS.html
+---
+ CMakeLists.txt | 9 +++++---
+ ebur128/CMakeLists.txt | 52 +++++++++++++++++++++++-------------------
+ 2 files changed, 35 insertions(+), 26 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index f741317..3901457 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,6 +1,9 @@
+ cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
+ project(libebur128 C)
+
++option(BUILD_SHARED_LIBS
++ "Build shared libraries instead of static ones" ON)
++
+ list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
+ set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR})
+ set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR})
+@@ -23,10 +26,10 @@ endif()
+ message(STATUS "Status found / disabled --")
+ message(STATUS "queue.h: ${SUMMARY_HAS_QUEUE}" " ${USE_QUEUE}")
+
+-if(BUILD_STATIC_LIBS)
+- message(STATUS "build static library and shared library!")
++if(BUILD_SHARED_LIBS)
++ message(STATUS "Building shared library (set BUILD_SHARED_LIBS to NO to build static)")
+ else()
+- message(STATUS "not building static library, set BUILD_STATIC_LIBS to ON to enable")
++ message(STATUS "Building static library")
+ endif()
+
+ if(NOT ${SUMMARY_HAS_QUEUE} AND NOT ${ENABLE_INTERNAL_QUEUE_H})
+diff --git a/ebur128/CMakeLists.txt b/ebur128/CMakeLists.txt
+index d77385e..0e7845c 100644
+--- a/ebur128/CMakeLists.txt
++++ b/ebur128/CMakeLists.txt
+@@ -25,30 +25,37 @@ endif()
+ set(EBUR128_VERSION_MAJOR 1)
+ set(EBUR128_VERSION 1.2.4)
+
+-#### static
+-if(BUILD_STATIC_LIBS)
+- add_library(ebur128_static STATIC ebur128.c)
+- if(NOT MSVC)
+- set_property(TARGET ebur128_static PROPERTY OUTPUT_NAME ebur128)
+- endif()
+-endif()
++add_library(ebur128 ebur128.c)
+
+-if(WITH_STATIC_PIC)
+- set_property(TARGET ebur128_static PROPERTY POSITION_INDEPENDENT_CODE ON)
+-endif()
++if(NOT BUILD_SHARED_LIBS)
++ # Static build specific things
++ if(WITH_STATIC_PIC)
++ set_property(TARGET ebur128 PROPERTY POSITION_INDEPENDENT_CODE ON)
+
+-#### shared
+-# set source file for library, which includes def file if using MSVC
+-set(EBUR128_SHARED_SOURCE ebur128.c)
+-if(MSVC)
+- set(EBUR128_SHARED_SOURCE ${EBUR128_SHARED_SOURCE} ebur128.def)
+-endif()
++ set_target_properties(ebur128 PROPERTIES
++ SOVERSION ${EBUR128_VERSION_MAJOR}
++ VERSION ${EBUR128_VERSION})
++ endif()
+
+-add_library(ebur128 SHARED ${EBUR128_SHARED_SOURCE})
+-set_target_properties(ebur128 PROPERTIES
++else()
++ # Share build specific things
++ set_target_properties(ebur128 PROPERTIES
+ SOVERSION ${EBUR128_VERSION_MAJOR}
+ VERSION ${EBUR128_VERSION})
+
++ if(WIN32)
++ set_target_properties(ebur128 PROPERTIES
++ OUTPUT_NAME ebur128
++ RUNTIME_OUTPUT_NAME ebur128-${EBUR128_VERSION_MAJOR}
++ ARCHIVE_OUTPUT_NAME ebur128)
++ endif(WIN32)
++
++ if(MSVC)
++ target_sources(ebur128 PRIVATE ebur128.def)
++ endif()
++endif()
++
++# Link with Math library if available
+ find_library(MATH_LIBRARY m)
+ if(MATH_LIBRARY)
+ target_link_libraries(ebur128 ${MATH_LIBRARY})
+@@ -57,11 +64,10 @@ endif()
+ set(EBUR128_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
+
+ install(FILES ebur128.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+-if(BUILD_STATIC_LIBS)
+- install(TARGETS ebur128 ebur128_static DESTINATION ${CMAKE_INSTALL_LIBDIR})
+-else()
+- install(TARGETS ebur128 DESTINATION ${CMAKE_INSTALL_LIBDIR})
+-endif()
++install(TARGETS ebur128
++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+
+ #### pkg-config
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libebur128.pc.cmake
+--
+2.24.3 (Apple Git-128)
+
diff --git a/contrib/src/libebur128/rules.mak b/contrib/src/libebur128/rules.mak
index 7f74aabb766..21e372c6049 100644
--- a/contrib/src/libebur128/rules.mak
+++ b/contrib/src/libebur128/rules.mak
@@ -16,10 +16,10 @@ $(TARBALLS)/libebur128-$(LIBEBUR128_VERSION).tar.gz:
libebur128: libebur128-$(LIBEBUR128_VERSION).tar.gz .sum-libebur128
$(UNPACK)
$(call pkg_static,"./ebur128/libebur128.pc.cmake")
+ $(APPLY) $(SRC)/libebur128/0001-CMake-Respect-the-BUILD_SHARED_LIBS-option-instead-o.patch
$(MOVE)
.libebur128: libebur128 toolchain.cmake
- cd $< && $(HOSTVARS_PIC) $(CMAKE) -DENABLE_INTERNAL_QUEUE_H=TRUE
+ cd $< && $(HOSTVARS_PIC) $(CMAKE) -DENABLE_INTERNAL_QUEUE_H=TRUE -DBUILD_SHARED_LIBS=FALSE
cd $< && $(MAKE) install
- rm -f $(PREFIX)/lib/libebur128.so*
touch $@
--
2.24.3 (Apple Git-128)
More information about the vlc-devel
mailing list