ref: 4147f3afe8d9a9801d87713a544faa81d526e239
parent: 24d6e752b8c8c82e46231c74b0e4146b3d189216
author: Ralph Giles <giles@thaumas.net>
date: Thu Aug 7 17:18:04 EDT 2025
cmake: Fix disabling http support
The cmake build has an option to conditionally disable network
support. Similar to `./configure --disable-http` one can say
cmake -B _build -D OP_DISABLE_HTTP=YES && cmake --build _build
Unfortunately this worked by disabling `libopusurl` completely,
which made building the examples fail. The url library can
still be used to load local files or `file://` urls even
when `http(s)://` support is disabled.
Instead, always build the `opusurl` library like the autotools
build does, and instead make the `OP_ENABLE_HTTP` pre-processor
define and the `openssl` link library conditional on the cmake
option.
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -120,72 +120,72 @@
endif()
endif()
cmake_pop_check_state()
+endif()
- add_library(opusurl
- "${CMAKE_CURRENT_SOURCE_DIR}/include/opusfile.h"- "${CMAKE_CURRENT_SOURCE_DIR}/src/http.c"- "${CMAKE_CURRENT_SOURCE_DIR}/src/internal.c"- "${CMAKE_CURRENT_SOURCE_DIR}/src/internal.h"+add_library(opusurl
+ "${CMAKE_CURRENT_SOURCE_DIR}/include/opusfile.h"+ "${CMAKE_CURRENT_SOURCE_DIR}/src/http.c"+ "${CMAKE_CURRENT_SOURCE_DIR}/src/internal.c"+ "${CMAKE_CURRENT_SOURCE_DIR}/src/internal.h"+)
+add_library(OpusFile::opusurl ALIAS opusurl)
+if(WIN32)
+ target_sources(opusurl PRIVATE
+ "${CMAKE_CURRENT_SOURCE_DIR}/src/wincerts.c"+ "${CMAKE_CURRENT_SOURCE_DIR}/src/winerrno.h")
- add_library(OpusFile::opusurl ALIAS opusurl)
- if(WIN32)
- target_sources(opusurl PRIVATE
- "${CMAKE_CURRENT_SOURCE_DIR}/src/wincerts.c"- "${CMAKE_CURRENT_SOURCE_DIR}/src/winerrno.h"- )
- endif()
- set_target_properties(opusurl PROPERTIES
- PUBLIC_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/include/opusfile.h"- VERSION ${PROJECT_VERSION}- SOVERSION ${PROJECT_VERSION_MAJOR}- )
- target_include_directories(opusurl
- PRIVATE
- "${CMAKE_CURRENT_SOURCE_DIR}/include"- INTERFACE
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/opus>- )
- target_compile_definitions(opusurl
- PRIVATE
- $<$<BOOL:${OP_DISABLE_FLOAT_API}>:OP_DISABLE_FLOAT_API>- $<$<BOOL:${OP_FIXED_POINT}>:OP_FIXED_POINT>- $<$<BOOL:${OP_ENABLE_ASSERTIONS}>:OP_ENABLE_ASSERTIONS>- $<$<BOOL:${OP_HAVE_LRINTF}>:OP_HAVE_LRINTF>- $<$<BOOL:${OP_HAVE_CLOCK_GETTIME}>:OP_HAVE_CLOCK_GETTIME>- $<$<BOOL:${OP_HAVE_FTIME}>:OP_HAVE_FTIME>- OP_ENABLE_HTTP
- )
- target_link_libraries(opusurl
- PRIVATE
- opusfile
- OpenSSL::SSL
- $<$<C_COMPILER_ID:MSVC>:ws2_32>
- $<$<C_COMPILER_ID:MSVC>:crypt32>
- $<$<BOOL:${OP_HAVE_LIBM}>:m>- )
- target_compile_options(opusurl
- PRIVATE
- $<$<C_COMPILER_ID:MSVC>:/wd4267>
- $<$<C_COMPILER_ID:MSVC>:/wd4244>
- $<$<C_COMPILER_ID:MSVC>:/wd4090>
- $<$<C_COMPILER_ID:Clang,GNU>:-std=c89>
- $<$<C_COMPILER_ID:Clang,GNU>:-pedantic>
- $<$<C_COMPILER_ID:Clang,GNU>:-Wall>
- $<$<C_COMPILER_ID:Clang,GNU>:-Wextra>
- $<$<C_COMPILER_ID:Clang,GNU>:-Wno-parentheses>
- $<$<C_COMPILER_ID:Clang,GNU>:-Wno-long-long>
- $<$<C_COMPILER_ID:Clang,GNU>:-fvisibility=hidden>
- )
- install(TARGETS opusurl
- EXPORT OpusFileTargets
- RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"- INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/opus"- PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/opus"- )
endif()
+set_target_properties(opusurl PROPERTIES
+ PUBLIC_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/include/opusfile.h"+ VERSION ${PROJECT_VERSION}+ SOVERSION ${PROJECT_VERSION_MAJOR}+)
+target_include_directories(opusurl
+ PRIVATE
+ "${CMAKE_CURRENT_SOURCE_DIR}/include"+ INTERFACE
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/opus>+)
+target_compile_definitions(opusurl
+ PRIVATE
+ $<$<BOOL:${OP_DISABLE_FLOAT_API}>:OP_DISABLE_FLOAT_API>+ $<$<BOOL:${OP_FIXED_POINT}>:OP_FIXED_POINT>+ $<$<BOOL:${OP_ENABLE_ASSERTIONS}>:OP_ENABLE_ASSERTIONS>+ $<$<BOOL:${OP_HAVE_LRINTF}>:OP_HAVE_LRINTF>+ $<$<BOOL:${OP_HAVE_CLOCK_GETTIME}>:OP_HAVE_CLOCK_GETTIME>+ $<$<BOOL:${OP_HAVE_FTIME}>:OP_HAVE_FTIME>+ $<$<NOT:$<BOOL:${OP_DISABLE_HTTP}>>:OP_ENABLE_HTTP>+)
+target_link_libraries(opusurl
+ PRIVATE
+ opusfile
+ $<$<NOT:$<BOOL:${OP_DISABLE_HTTP}>>:OpenSSL::SSL>+ $<$<C_COMPILER_ID:MSVC>:ws2_32>
+ $<$<C_COMPILER_ID:MSVC>:crypt32>
+ $<$<BOOL:${OP_HAVE_LIBM}>:m>+)
+target_compile_options(opusurl
+ PRIVATE
+ $<$<C_COMPILER_ID:MSVC>:/wd4267>
+ $<$<C_COMPILER_ID:MSVC>:/wd4244>
+ $<$<C_COMPILER_ID:MSVC>:/wd4090>
+ $<$<C_COMPILER_ID:Clang,GNU>:-std=c89>
+ $<$<C_COMPILER_ID:Clang,GNU>:-pedantic>
+ $<$<C_COMPILER_ID:Clang,GNU>:-Wall>
+ $<$<C_COMPILER_ID:Clang,GNU>:-Wextra>
+ $<$<C_COMPILER_ID:Clang,GNU>:-Wno-parentheses>
+ $<$<C_COMPILER_ID:Clang,GNU>:-Wno-long-long>
+ $<$<C_COMPILER_ID:Clang,GNU>:-fvisibility=hidden>
+)
+install(TARGETS opusurl
+ EXPORT OpusFileTargets
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"+ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/opus"+ PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/opus"+)
if(NOT OP_DISABLE_EXAMPLES)
add_executable(opusfile_example
--
⑨