diff options
| author | L. E. Segovia <amy@centricular.com> | 2026-05-20 13:25:15 -0300 |
|---|---|---|
| committer | L. E. Segovia <amy@centricular.com> | 2026-06-27 01:11:58 +0000 |
| commit | 0773d2dea0e0feb9451bf8ce9c85faee5be306db (patch) | |
| tree | 53331903863814639362e3b6a4a6ba56ec81aaef | |
| parent | c89abe6eaad0dace8b619981fc1ffee2b6093c95 (diff) | |
srt: fix LibraryType.BOTH for MSVC
Same as openjpeg, they use the shared library's objects for packing the
static library.
Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2254>
| -rw-r--r-- | recipes/srt.recipe | 12 | ||||
| -rw-r--r-- | recipes/srt/0001-cmake-Fix-exception-handling-mode-on-MSVC.patch | 2 | ||||
| -rw-r--r-- | recipes/srt/0002-Add-static-Win32-build.patch | 110 |
3 files changed, 123 insertions, 1 deletions
diff --git a/recipes/srt.recipe b/recipes/srt.recipe index 256bd24b..bef2b581 100644 --- a/recipes/srt.recipe +++ b/recipes/srt.recipe @@ -2,6 +2,9 @@ from cerbero.tools.libtool import LibtoolLibrary +import shutil + + class Recipe(recipe.Recipe): name = 'srt' version = '1.5.5' @@ -21,6 +24,7 @@ class Recipe(recipe.Recipe): patches = [ 'srt/0001-cmake-Fix-exception-handling-mode-on-MSVC.patch', + 'srt/0002-Add-static-Win32-build.patch', ] files_libs = ['libsrt'] @@ -30,6 +34,14 @@ class Recipe(recipe.Recipe): if self.config.target_platform == Platform.ANDROID: self.append_env('CXXFLAGS', '-frtti', '-fexceptions') + async def install(self): + await super(recipe.Recipe, self).install() + # This step must be idempotent, hence why it's done here + if self.using_msvc(): + shutil.move( + os.path.join(self.config.libdir, 'srt_static.lib'), + os.path.join(self.config.libdir, 'libsrt.a')) + def post_install(self): libtool_la = LibtoolLibrary('srt', None, None, None, self.config.libdir, self.config.target_platform, deps=['ssl', 'crypto']) diff --git a/recipes/srt/0001-cmake-Fix-exception-handling-mode-on-MSVC.patch b/recipes/srt/0001-cmake-Fix-exception-handling-mode-on-MSVC.patch index 24e04846..e71033d9 100644 --- a/recipes/srt/0001-cmake-Fix-exception-handling-mode-on-MSVC.patch +++ b/recipes/srt/0001-cmake-Fix-exception-handling-mode-on-MSVC.patch @@ -16,7 +16,7 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt index 7ed11ef..f3feb56 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -1025,6 +1025,9 @@ list(INSERT HEADERS_srt 0 "${CMAKE_CURRENT_BINARY_DIR}/version.h") +@@ -1093,6 +1093,9 @@ list(INSERT HEADERS_srt 0 "${CMAKE_CURRENT_BINARY_DIR}/version.h") include_directories("${CMAKE_CURRENT_BINARY_DIR}") add_library(srt_virtual OBJECT ${SOURCES_srt} ${SOURCES_srt_extra} ${HEADERS_srt} ${SOURCES_haicrypt} ${SOURCES_common}) diff --git a/recipes/srt/0002-Add-static-Win32-build.patch b/recipes/srt/0002-Add-static-Win32-build.patch new file mode 100644 index 00000000..ef65c0d8 --- /dev/null +++ b/recipes/srt/0002-Add-static-Win32-build.patch @@ -0,0 +1,110 @@ +From 9d116313bbd57e08a3ee80f56e4d00390a7ca614 Mon Sep 17 00:00:00 2001 +From: "L. E. Segovia" <amy@centricular.com> +Date: Wed, 20 May 2026 13:18:05 -0300 +Subject: [PATCH 2/2] Add static Win32 build + +--- + CMakeLists.txt | 54 ++++++++++++++++++++++++++++++-------------------- + 1 file changed, 33 insertions(+), 21 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 7adc20c..118a213 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1092,15 +1092,7 @@ configure_file("srtcore/version.h.in" "version.h" @ONLY) + list(INSERT HEADERS_srt 0 "${CMAKE_CURRENT_BINARY_DIR}/version.h") + include_directories("${CMAKE_CURRENT_BINARY_DIR}") + +-add_library(srt_virtual OBJECT ${SOURCES_srt} ${SOURCES_srt_extra} ${HEADERS_srt} ${SOURCES_haicrypt} ${SOURCES_common}) +-if (MSVC) +- target_compile_options(srt_virtual PRIVATE "/EHsc") +-endif() +- +-if (ENABLE_SHARED) +- # Set this to sources as well, as it won't be automatically handled +- set_target_properties(srt_virtual PROPERTIES POSITION_INDEPENDENT_CODE 1) +-endif() ++set(VIRTUAL_srt ${SOURCES_srt} ${SOURCES_srt_extra} ${HEADERS_srt} ${SOURCES_haicrypt} ${SOURCES_common}) + + macro(srt_set_stdcxx targetname spec) + set (stdcxxspec ${spec}) +@@ -1132,11 +1124,6 @@ macro(srt_set_stdc targetname spec) + endif() + endmacro() + +-srt_set_stdcxx(srt_virtual "${USE_CXX_STD_LIB}") +-srt_set_stdc(srt_virtual "99") +- +-set (VIRTUAL_srt $<TARGET_OBJECTS:srt_virtual>) +- + if (srt_libspec_shared) + add_library(${TARGET_srt}_shared SHARED ${OBJECT_LIB_SUPPORT} ${VIRTUAL_srt}) + # shared libraries need PIC +@@ -1164,6 +1151,13 @@ if (srt_libspec_shared) + if (USE_GNUSTL) + target_link_libraries(${TARGET_srt}_shared PRIVATE ${GNUSTL_LIBRARIES} ${GNUSTL_LDFLAGS}) + endif() ++ ++ srt_set_stdcxx(${TARGET_srt}_shared "${USE_CXX_STD_LIB}") ++ srt_set_stdc(${TARGET_srt}_shared "99") ++ target_include_directories(${TARGET_srt}_shared PRIVATE ${SSL_INCLUDE_DIRS}) ++ if (MSVC) ++ target_compile_options(${TARGET_srt}_shared PRIVATE "/EHsc") ++ endif() + endif() + + if (srt_libspec_static) +@@ -1198,9 +1192,17 @@ if (srt_libspec_static) + if (USE_GNUSTL) + target_link_libraries(${TARGET_srt}_static PRIVATE ${GNUSTL_LIBRARIES} ${GNUSTL_LDFLAGS}) + endif() +-endif() + +-target_include_directories(srt_virtual PRIVATE ${SSL_INCLUDE_DIRS}) ++ srt_set_stdcxx(${TARGET_srt}_static "${USE_CXX_STD_LIB}") ++ srt_set_stdc(${TARGET_srt}_static "99") ++ target_include_directories(${TARGET_srt}_static PRIVATE ${SSL_INCLUDE_DIRS}) ++ if (srt_libspec_shared) # for compatibility -Amy ++ set_target_properties(${TARGET_srt}_static PROPERTIES POSITION_INDEPENDENT_CODE TRUE) ++ endif() ++ if (MSVC) ++ target_compile_options(${TARGET_srt}_static PRIVATE "/EHsc") ++ endif() ++endif() + + if (MICROSOFT) + if (SRT_USE_OPENSSL_STATIC_LIBS) +@@ -1231,15 +1233,25 @@ endforeach() + + set (SRT_LIBS_PRIVATE ${SRT_LIBS_PRIVATE} ${PTHREAD_LIBRARY}) + +-target_compile_definitions(srt_virtual PRIVATE -DSRT_EXPORTS ) +-if (ENABLE_SHARED) +- target_compile_definitions(srt_virtual PUBLIC -DSRT_DYNAMIC) ++if (srt_libspec_shared) ++ target_compile_definitions(${TARGET_srt}_shared PRIVATE -DSRT_EXPORTS) ++ target_compile_definitions(${TARGET_srt}_shared PUBLIC -DSRT_DYNAMIC) + endif() + +-target_compile_definitions(srt_virtual PRIVATE -DSRT_LOG_SLOWDOWN_FREQ_MS=${SRT_LOG_SLOWDOWN_FREQ_MS}) ++if (srt_libspec_shared) ++ target_compile_definitions(${TARGET_srt}_shared PRIVATE -DSRT_LOG_SLOWDOWN_FREQ_MS=${SRT_LOG_SLOWDOWN_FREQ_MS}) ++endif() ++if (srt_libspec_static) ++ target_compile_definitions(${TARGET_srt}_static PRIVATE -DSRT_LOG_SLOWDOWN_FREQ_MS=${SRT_LOG_SLOWDOWN_FREQ_MS}) ++endif() + + if (ENABLE_ENCRYPTION AND "${USE_ENCLIB}" STREQUAL "botan") +- add_dependencies(srt_virtual botan) ++ if (srt_libspec_shared) ++ add_dependencies(${TARGET_srt}_shared botan) ++ endif() ++ if (srt_libspec_static) ++ add_dependencies(${TARGET_srt}_static botan) ++ endif() + endif() + + if (srt_libspec_shared) +-- +2.53.0.windows.3 + |
