Skip to content

Commit 4147f3a

Browse files
committed
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.
1 parent 24d6e75 commit 4147f3a

File tree

1 file changed

+63
-63
lines changed

1 file changed

+63
-63
lines changed

CMakeLists.txt

Lines changed: 63 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -120,72 +120,72 @@ if(NOT OP_DISABLE_HTTP)
120120
endif()
121121
endif()
122122
cmake_pop_check_state()
123+
endif()
123124

124-
add_library(opusurl
125-
"${CMAKE_CURRENT_SOURCE_DIR}/include/opusfile.h"
126-
"${CMAKE_CURRENT_SOURCE_DIR}/src/http.c"
127-
"${CMAKE_CURRENT_SOURCE_DIR}/src/internal.c"
128-
"${CMAKE_CURRENT_SOURCE_DIR}/src/internal.h"
129-
)
130-
add_library(OpusFile::opusurl ALIAS opusurl)
131-
if(WIN32)
132-
target_sources(opusurl PRIVATE
133-
"${CMAKE_CURRENT_SOURCE_DIR}/src/wincerts.c"
134-
"${CMAKE_CURRENT_SOURCE_DIR}/src/winerrno.h"
135-
)
136-
endif()
137-
set_target_properties(opusurl PROPERTIES
138-
PUBLIC_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/include/opusfile.h"
139-
VERSION ${PROJECT_VERSION}
140-
SOVERSION ${PROJECT_VERSION_MAJOR}
141-
)
142-
target_include_directories(opusurl
143-
PRIVATE
144-
"${CMAKE_CURRENT_SOURCE_DIR}/include"
145-
INTERFACE
146-
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
147-
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/opus>
148-
)
149-
target_compile_definitions(opusurl
150-
PRIVATE
151-
$<$<BOOL:${OP_DISABLE_FLOAT_API}>:OP_DISABLE_FLOAT_API>
152-
$<$<BOOL:${OP_FIXED_POINT}>:OP_FIXED_POINT>
153-
$<$<BOOL:${OP_ENABLE_ASSERTIONS}>:OP_ENABLE_ASSERTIONS>
154-
$<$<BOOL:${OP_HAVE_LRINTF}>:OP_HAVE_LRINTF>
155-
$<$<BOOL:${OP_HAVE_CLOCK_GETTIME}>:OP_HAVE_CLOCK_GETTIME>
156-
$<$<BOOL:${OP_HAVE_FTIME}>:OP_HAVE_FTIME>
157-
OP_ENABLE_HTTP
158-
)
159-
target_link_libraries(opusurl
160-
PRIVATE
161-
opusfile
162-
OpenSSL::SSL
163-
$<$<C_COMPILER_ID:MSVC>:ws2_32>
164-
$<$<C_COMPILER_ID:MSVC>:crypt32>
165-
$<$<BOOL:${OP_HAVE_LIBM}>:m>
166-
)
167-
target_compile_options(opusurl
168-
PRIVATE
169-
$<$<C_COMPILER_ID:MSVC>:/wd4267>
170-
$<$<C_COMPILER_ID:MSVC>:/wd4244>
171-
$<$<C_COMPILER_ID:MSVC>:/wd4090>
172-
$<$<C_COMPILER_ID:Clang,GNU>:-std=c89>
173-
$<$<C_COMPILER_ID:Clang,GNU>:-pedantic>
174-
$<$<C_COMPILER_ID:Clang,GNU>:-Wall>
175-
$<$<C_COMPILER_ID:Clang,GNU>:-Wextra>
176-
$<$<C_COMPILER_ID:Clang,GNU>:-Wno-parentheses>
177-
$<$<C_COMPILER_ID:Clang,GNU>:-Wno-long-long>
178-
$<$<C_COMPILER_ID:Clang,GNU>:-fvisibility=hidden>
179-
)
180-
install(TARGETS opusurl
181-
EXPORT OpusFileTargets
182-
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
183-
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
184-
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
185-
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/opus"
186-
PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/opus"
125+
add_library(opusurl
126+
"${CMAKE_CURRENT_SOURCE_DIR}/include/opusfile.h"
127+
"${CMAKE_CURRENT_SOURCE_DIR}/src/http.c"
128+
"${CMAKE_CURRENT_SOURCE_DIR}/src/internal.c"
129+
"${CMAKE_CURRENT_SOURCE_DIR}/src/internal.h"
130+
)
131+
add_library(OpusFile::opusurl ALIAS opusurl)
132+
if(WIN32)
133+
target_sources(opusurl PRIVATE
134+
"${CMAKE_CURRENT_SOURCE_DIR}/src/wincerts.c"
135+
"${CMAKE_CURRENT_SOURCE_DIR}/src/winerrno.h"
187136
)
188137
endif()
138+
set_target_properties(opusurl PROPERTIES
139+
PUBLIC_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/include/opusfile.h"
140+
VERSION ${PROJECT_VERSION}
141+
SOVERSION ${PROJECT_VERSION_MAJOR}
142+
)
143+
target_include_directories(opusurl
144+
PRIVATE
145+
"${CMAKE_CURRENT_SOURCE_DIR}/include"
146+
INTERFACE
147+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
148+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/opus>
149+
)
150+
target_compile_definitions(opusurl
151+
PRIVATE
152+
$<$<BOOL:${OP_DISABLE_FLOAT_API}>:OP_DISABLE_FLOAT_API>
153+
$<$<BOOL:${OP_FIXED_POINT}>:OP_FIXED_POINT>
154+
$<$<BOOL:${OP_ENABLE_ASSERTIONS}>:OP_ENABLE_ASSERTIONS>
155+
$<$<BOOL:${OP_HAVE_LRINTF}>:OP_HAVE_LRINTF>
156+
$<$<BOOL:${OP_HAVE_CLOCK_GETTIME}>:OP_HAVE_CLOCK_GETTIME>
157+
$<$<BOOL:${OP_HAVE_FTIME}>:OP_HAVE_FTIME>
158+
$<$<NOT:$<BOOL:${OP_DISABLE_HTTP}>>:OP_ENABLE_HTTP>
159+
)
160+
target_link_libraries(opusurl
161+
PRIVATE
162+
opusfile
163+
$<$<NOT:$<BOOL:${OP_DISABLE_HTTP}>>:OpenSSL::SSL>
164+
$<$<C_COMPILER_ID:MSVC>:ws2_32>
165+
$<$<C_COMPILER_ID:MSVC>:crypt32>
166+
$<$<BOOL:${OP_HAVE_LIBM}>:m>
167+
)
168+
target_compile_options(opusurl
169+
PRIVATE
170+
$<$<C_COMPILER_ID:MSVC>:/wd4267>
171+
$<$<C_COMPILER_ID:MSVC>:/wd4244>
172+
$<$<C_COMPILER_ID:MSVC>:/wd4090>
173+
$<$<C_COMPILER_ID:Clang,GNU>:-std=c89>
174+
$<$<C_COMPILER_ID:Clang,GNU>:-pedantic>
175+
$<$<C_COMPILER_ID:Clang,GNU>:-Wall>
176+
$<$<C_COMPILER_ID:Clang,GNU>:-Wextra>
177+
$<$<C_COMPILER_ID:Clang,GNU>:-Wno-parentheses>
178+
$<$<C_COMPILER_ID:Clang,GNU>:-Wno-long-long>
179+
$<$<C_COMPILER_ID:Clang,GNU>:-fvisibility=hidden>
180+
)
181+
install(TARGETS opusurl
182+
EXPORT OpusFileTargets
183+
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
184+
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
185+
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
186+
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/opus"
187+
PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/opus"
188+
)
189189

190190
if(NOT OP_DISABLE_EXAMPLES)
191191
add_executable(opusfile_example

0 commit comments

Comments
 (0)