diff options
Diffstat (limited to 'vorbis/CMakeLists.txt')
-rw-r--r-- | vorbis/CMakeLists.txt | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/vorbis/CMakeLists.txt b/vorbis/CMakeLists.txt new file mode 100644 index 0000000..bbc045b --- /dev/null +++ b/vorbis/CMakeLists.txt @@ -0,0 +1,81 @@ +cmake_minimum_required(VERSION 2.8.7) +project(vorbis) + +# Required modules +include(GNUInstallDirs) +include(CheckIncludeFiles) + +# Build options +option(BUILD_SHARED_LIBS "Build shared library" OFF) +if(APPLE) + option(BUILD_FRAMEWORK "Build Framework bundle for OSX" OFF) +endif() + +if(BUILD_FRAMEWORK) + set(BUILD_SHARED_LIBS TRUE) +endif() + +# Extract project version from configure.ac +file(READ configure.ac CONFIGURE_AC_CONTENTS) +string(REGEX MATCH "AC_INIT\\(\\[libvorbis\\],\\[([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}) + +# Helper function to get version-info +function(get_version_info result current_var_name age_var_name revision_var_name) + string(REGEX MATCH "${current_var_name}=([0-9]*)" DUMMY ${CONFIGURE_AC_CONTENTS}) + set(VERSION_INFO_CURRENT ${CMAKE_MATCH_1}) + + string(REGEX MATCH "${age_var_name}=([0-9]*)" DUMMY ${CONFIGURE_AC_CONTENTS}) + set(VERSION_INFO_AGE ${CMAKE_MATCH_1}) + + string(REGEX MATCH "${revision_var_name}=([0-9]*)" DUMMY ${CONFIGURE_AC_CONTENTS}) + set(VERSION_INFO_REVISION ${CMAKE_MATCH_1}) + + math(EXPR VERSION_INFO_CURRENT_MINUS_AGE "${VERSION_INFO_CURRENT} - ${VERSION_INFO_AGE}") + + set(${result} "${VERSION_INFO_CURRENT_MINUS_AGE}.${VERSION_INFO_AGE}.${VERSION_INFO_REVISION}" PARENT_SCOPE) +endfunction() + +# 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}") + +# Find ogg dependency +if(NOT OGG_ROOT) + find_package(PkgConfig QUIET) + pkg_check_modules(PC_OGG QUIET ogg) + find_path(OGG_INCLUDE_DIRS NAMES ogg/ogg.h HINTS ${PC_OGG_INCLUDE_DIRS} PATH_SUFFIXES ogg) + find_library(OGG_LIBRARIES NAMES ogg HINTS ${PC_OGG_LIBRARY_DIRS}) +else() + find_path(OGG_INCLUDE_DIRS NAMES ogg/ogg.h HINTS ${OGG_ROOT}/include PATH_SUFFIXES ogg) + find_library(OGG_LIBRARIES NAMES ogg HINTS ${OGG_ROOT}/lib ${OGG_ROOT}/lib64) +endif() +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(OGG DEFAULT_MSG OGG_INCLUDE_DIRS OGG_LIBRARIES) + +add_subdirectory(lib) + +configure_pkg_config_file(vorbis.pc.in) +configure_pkg_config_file(vorbisenc.pc.in) +configure_pkg_config_file(vorbisfile.pc.in) + +install( + FILES + ${CMAKE_CURRENT_BINARY_DIR}/vorbis.pc + ${CMAKE_CURRENT_BINARY_DIR}/vorbisenc.pc + ${CMAKE_CURRENT_BINARY_DIR}/vorbisfile.pc + DESTINATION + ${CMAKE_INSTALL_LIBDIR}/pkgconfig +) |