furnace/extern/libvorbis/lib/CMakeLists.txt
2025-10-22 16:16:07 -05:00

168 lines
4.7 KiB
CMake

set(VORBIS_PUBLIC_HEADERS
../include/vorbis/codec.h
../include/vorbis/vorbisenc.h
../include/vorbis/vorbisfile.h
)
set(VORBIS_HEADERS
envelope.h
lpc.h
lsp.h
codebook.h
misc.h
psy.h
masking.h
os.h
mdct.h
smallft.h
highlevel.h
registry.h
scales.h
window.h
lookup.h
lookup_data.h
codec_internal.h
backends.h
bitrate.h
)
set(VORBIS_SOURCES
mdct.c
smallft.c
block.c
envelope.c
window.c
lsp.c
lpc.c
analysis.c
synthesis.c
psy.c
info.c
floor1.c
floor0.c
res0.c
mapping0.c
registry.c
codebook.c
sharedbook.c
lookup.c
bitrate.c
)
set(VORBISFILE_SOURCES
vorbisfile.c
)
set(VORBISENC_SOURCES
vorbisenc.c
)
if(WIN32)
list(APPEND VORBIS_SOURCES vorbisenc.c)
endif()
if(WIN32)
list(APPEND VORBIS_SOURCES ../win32/vorbis.def)
list(APPEND VORBISENC_SOURCES ../win32/vorbisenc.def)
list(APPEND VORBISFILE_SOURCES ../win32/vorbisfile.def)
endif()
if(MSVC)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE)
endif()
if (NOT BUILD_FRAMEWORK)
add_library(vorbis ${VORBIS_HEADERS} ${VORBIS_SOURCES})
add_library(vorbisenc ${VORBISENC_SOURCES})
add_library(vorbisfile ${VORBISFILE_SOURCES})
# tildearrow: for vendored libvorbis
add_library(Vorbis::vorbis ALIAS vorbis)
add_library(Vorbis::vorbisenc ALIAS vorbisenc)
add_library(Vorbis::vorbisfile ALIAS vorbisfile)
get_version_info(VORBIS_VERSION_INFO "V_LIB_CURRENT" "V_LIB_AGE" "V_LIB_REVISION")
set_target_properties(vorbis PROPERTIES SOVERSION ${VORBIS_VERSION_INFO})
get_version_info(VORBISENC_VERSION_INFO "VE_LIB_CURRENT" "VE_LIB_AGE" "VE_LIB_REVISION")
set_target_properties(vorbisenc PROPERTIES SOVERSION ${VORBISENC_VERSION_INFO})
get_version_info(VORBISFILE_VERSION_INFO "VF_LIB_CURRENT" "VF_LIB_AGE" "VF_LIB_REVISION")
set_target_properties(vorbisfile PROPERTIES SOVERSION ${VORBISFILE_VERSION_INFO})
target_include_directories(vorbis
PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
)
target_include_directories(vorbisenc
PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
)
target_include_directories(vorbisfile
PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
target_link_libraries(vorbis
PUBLIC Ogg::ogg
PRIVATE $<$<BOOL:${HAVE_LIBM}>:m>
)
target_link_libraries(vorbisenc PUBLIC vorbis)
target_link_libraries(vorbisfile PUBLIC vorbis)
install(FILES ${VORBIS_PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR}/vorbis)
install(TARGETS vorbis vorbisenc vorbisfile
EXPORT VorbisTargets
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
if(INSTALL_CMAKE_PACKAGE_MODULE)
set(CMAKE_INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/Vorbis)
install(EXPORT VorbisTargets
DESTINATION ${CMAKE_INSTALL_CONFIGDIR}
NAMESPACE Vorbis::
)
include(CMakePackageConfigHelpers)
configure_package_config_file(${PROJECT_SOURCE_DIR}/cmake/VorbisConfig.cmake.in ${PROJECT_BINARY_DIR}/VorbisConfig.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_CONFIGDIR}
)
write_basic_package_version_file(${PROJECT_BINARY_DIR}/VorbisConfigVersion.cmake
COMPATIBILITY SameMajorVersion
)
install(FILES ${PROJECT_BINARY_DIR}/VorbisConfig.cmake ${PROJECT_BINARY_DIR}/VorbisConfigVersion.cmake
DESTINATION ${CMAKE_INSTALL_CONFIGDIR}
)
endif()
else()
add_library(vorbis ${VORBIS_PUBLIC_HEADERS} ${VORBIS_HEADERS} ${VORBIS_SOURCES} ${VORBISFILE_SOURCES} ${VORBISENC_SOURCES})
set_target_properties(vorbis PROPERTIES
FRAMEWORK TRUE
FRAMEWORK_VERSION ${PROJECT_VERSION}
MACOSX_FRAMEWORK_IDENTIFIER org.xiph.vorbis
MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${PROJECT_VERSION}
MACOSX_FRAMEWORK_BUNDLE_VERSION ${PROJECT_VERSION}
XCODE_ATTRIBUTE_INSTALL_PATH "@rpath"
PUBLIC_HEADER "${VORBIS_PUBLIC_HEADERS}"
OUTPUT_NAME Vorbis
)
target_link_libraries(vorbis ${OGG_LIBRARIES})
endif()