From 740291cf2ae7f360b4ab119746da9ac2ef6611e4 Mon Sep 17 00:00:00 2001 From: claude-bot Date: Mon, 13 Jul 2026 12:40:00 +0000 Subject: Import xiph/ogg @ 36f969bb37559345ee03796ed625a9abd42c6db9 Snapshot for re3/reVC vendoring, per @lzcnt. Source: https://github.com/xiph/ogg (36f969bb37559345ee03796ed625a9abd42c6db9). --- CMakeLists.txt | 204 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 CMakeLists.txt (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..b74f425 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,204 @@ +cmake_minimum_required(VERSION 2.8.12) +project(libogg) + +# Required modules +include(GNUInstallDirs) +include(CheckIncludeFiles) +include(CMakePackageConfigHelpers) +include(CTest) + +# Build options +option(BUILD_SHARED_LIBS "Build shared library" OFF) +if(APPLE) + option(BUILD_FRAMEWORK "Build Framework bundle for OSX" OFF) +endif() + +# Install options +option(INSTALL_DOCS "Install documentation" ON) +option(INSTALL_PKG_CONFIG_MODULE "Install ogg.pc file" ON) +option(INSTALL_CMAKE_PACKAGE_MODULE "Install CMake package configiguration module" ON) + +# Extract project version from configure.ac +file(READ configure.ac CONFIGURE_AC_CONTENTS) +string(REGEX MATCH "AC_INIT\\(\\[libogg\\],\\[([0-9]*).([0-9]*).([0-9]*)" DUMMY ${CONFIGURE_AC_CONTENTS}) +set(PROJECT_VERSION_MAJOR ${CMAKE_MATCH_1}) +set(PROJECT_VERSION_MINOR ${CMAKE_MATCH_2}) +set(PROJECT_VERSION_PATCH ${CMAKE_MATCH_3}) +set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}) + +# Extract library version from configure.ac +string(REGEX MATCH "LIB_CURRENT=([0-9]*)" DUMMY ${CONFIGURE_AC_CONTENTS}) +set(LIB_CURRENT ${CMAKE_MATCH_1}) + +string(REGEX MATCH "LIB_AGE=([0-9]*)" DUMMY ${CONFIGURE_AC_CONTENTS}) +set(LIB_AGE ${CMAKE_MATCH_1}) + +string(REGEX MATCH "LIB_REVISION=([0-9]*)" DUMMY ${CONFIGURE_AC_CONTENTS}) +set(LIB_REVISION ${CMAKE_MATCH_1}) + +math(EXPR LIB_SOVERSION "${LIB_CURRENT} - ${LIB_AGE}") +set(LIB_VERSION "${LIB_SOVERSION}.${LIB_AGE}.${LIB_REVISION}") + + +# Helper function to configure pkg-config files +function(configure_pkg_config_file pkg_config_file_in) + set(prefix ${CMAKE_INSTALL_PREFIX}) + set(exec_prefix ${CMAKE_INSTALL_FULL_BINDIR}) + set(libdir ${CMAKE_INSTALL_FULL_LIBDIR}) + set(includedir ${CMAKE_INSTALL_FULL_INCLUDEDIR}) + set(VERSION ${PROJECT_VERSION}) + string(REPLACE ".in" "" pkg_config_file ${pkg_config_file_in}) + configure_file(${pkg_config_file_in} ${pkg_config_file} @ONLY) +endfunction() + +message(STATUS "Configuring ${PROJECT_NAME} ${PROJECT_VERSION}") + +# Configure config_type.h +check_include_files(inttypes.h INCLUDE_INTTYPES_H) +check_include_files(stdint.h INCLUDE_STDINT_H) +check_include_files(sys/types.h INCLUDE_SYS_TYPES_H) + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +set(SIZE16 int16_t) +set(USIZE16 uint16_t) +set(SIZE32 int32_t) +set(USIZE32 uint32_t) +set(SIZE64 int64_t) +set(USIZE64 uint64_t) + +include(CheckSizes) + +configure_file(include/ogg/config_types.h.in include/ogg/config_types.h @ONLY) + +set(OGG_HEADERS + ${CMAKE_CURRENT_BINARY_DIR}/include/ogg/config_types.h + include/ogg/ogg.h + include/ogg/os_types.h +) + +set(OGG_SOURCES + src/bitwise.c + src/framing.c + src/crctable.h +) + +if(WIN32 AND BUILD_SHARED_LIBS) + list(APPEND OGG_SOURCES win32/ogg.def) +endif() + +if(BUILD_FRAMEWORK) + set(BUILD_SHARED_LIBS TRUE) +endif() + +add_library(ogg ${OGG_HEADERS} ${OGG_SOURCES}) +add_library(Ogg::ogg ALIAS ogg) +target_include_directories(ogg PUBLIC + $ + $ + $ +) + +set_target_properties( + ogg PROPERTIES + SOVERSION ${LIB_SOVERSION} + VERSION ${LIB_VERSION} + PUBLIC_HEADER "${OGG_HEADERS}" +) + +if(BUILD_FRAMEWORK) + set_target_properties(ogg PROPERTIES + FRAMEWORK TRUE + FRAMEWORK_VERSION ${PROJECT_VERSION} + MACOSX_FRAMEWORK_IDENTIFIER org.xiph.ogg + MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${PROJECT_VERSION} + MACOSX_FRAMEWORK_BUNDLE_VERSION ${PROJECT_VERSION} + XCODE_ATTRIBUTE_INSTALL_PATH "@rpath" + OUTPUT_NAME Ogg + ) +endif() + +configure_pkg_config_file(ogg.pc.in) + +install(TARGETS ogg + EXPORT OggTargets + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + FRAMEWORK DESTINATION ${CMAKE_INSTALL_PREFIX} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ogg +) + +export(EXPORT OggTargets NAMESPACE Ogg:: FILE OggTargets.cmake) + +if(INSTALL_CMAKE_PACKAGE_MODULE) + set(CMAKE_INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/Ogg) + install(EXPORT OggTargets + DESTINATION ${CMAKE_INSTALL_CONFIGDIR} + NAMESPACE Ogg:: + ) + + include(CMakePackageConfigHelpers) + + configure_package_config_file(${PROJECT_SOURCE_DIR}/cmake/OggConfig.cmake.in ${PROJECT_BINARY_DIR}/OggConfig.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_CONFIGDIR} + PATH_VARS CMAKE_INSTALL_FULL_INCLUDEDIR + ) + + write_basic_package_version_file(${PROJECT_BINARY_DIR}/OggConfigVersion.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion + ) + + install(FILES ${PROJECT_BINARY_DIR}/OggConfig.cmake ${PROJECT_BINARY_DIR}/OggConfigVersion.cmake + DESTINATION ${CMAKE_INSTALL_CONFIGDIR} + ) +endif() + +if(INSTALL_PKG_CONFIG_MODULE) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ogg.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + ) +endif() + +if(INSTALL_DOCS) + set(OGG_DOCS + doc/framing.html + doc/index.html + doc/oggstream.html + doc/ogg-multiplex.html + doc/fish_xiph_org.png + doc/multiplex1.png + doc/packets.png + doc/pages.png + doc/stream.png + doc/vorbisword2.png + doc/white-ogg.png + doc/white-xifish.png + doc/rfc3533.txt + doc/rfc5334.txt + doc/skeleton.html + ) + install(FILES ${OGG_DOCS} DESTINATION ${CMAKE_INSTALL_DOCDIR}/html) + install(DIRECTORY doc/libogg DESTINATION ${CMAKE_INSTALL_DOCDIR}/html) +endif() + +if(BUILD_TESTING) + add_executable(test_bitwise src/bitwise.c ${OGG_HEADERS}) + target_compile_definitions(test_bitwise PRIVATE _V_SELFTEST) + target_include_directories(test_bitwise PRIVATE + include + ${CMAKE_CURRENT_BINARY_DIR}/include + ) + add_test(NAME test_bitwise COMMAND $) + + add_executable(test_framing src/framing.c ${OGG_HEADERS}) + target_compile_definitions(test_framing PRIVATE _V_SELFTEST) + target_include_directories(test_framing PRIVATE + include + ${CMAKE_CURRENT_BINARY_DIR}/include + ) + add_test(NAME test_framing COMMAND $) +endif() + +set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) +include(CPack) -- cgit v1.2.3