diff options
author | Vitaliy Kirsanov <krokoziabla@yandex-team.ru> | 2019-04-07 12:37:56 +0300 |
---|---|---|
committer | Erik de Castro Lopo <erikd@mega-nerd.com> | 2019-05-04 11:41:48 +1000 |
commit | 6cd2b6cded1d7281df7584d7fad9ccb1d1022243 (patch) | |
tree | 5014375b784a5337cf9688edf0fd446a3878c16e | |
parent | c39718d7a36405114f9ed0b1a7acaef64ea88131 (diff) | |
download | flac-6cd2b6cded1d7281df7584d7fad9ccb1d1022243.tar.gz |
FindOGG.cmake module added
-rw-r--r-- | CMakeLists.txt | 13 | ||||
-rw-r--r-- | cmake/FindOGG.cmake | 34 | ||||
-rw-r--r-- | flac-config.cmake.in | 6 | ||||
-rw-r--r-- | src/CMakeLists.txt | 5 | ||||
-rw-r--r-- | src/libFLAC/CMakeLists.txt | 10 |
5 files changed, 61 insertions, 7 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index a4870fe5..e1166db5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,10 +6,14 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") option(BUILD_CXXLIBS "Build libFLAC++" ON) option(BUILD_EXAMPLES "Build and install examples" ON) +option(WITH_OGG "ogg support (default: test for libogg)" ON) + +if(WITH_OGG) + find_package(OGG REQUIRED) +endif() if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -Waggregate-return -Wcast-align -Wnested-externs -Wshadow -Wundef -Wmissing-declarations -Winline") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wcast-align -Wshadow -Wwrite-strings -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Wsign-promo -Wundef") if(CMAKE_BULD_TYPE STREQUAL Release) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -funroll-loops") @@ -17,6 +21,12 @@ if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang") option(ENABLE_SSP "Enable GNU GCC stack smash protection" OFF) endif() +if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wcast-align -Wshadow -Wwrite-strings -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Wsign-promo -Wundef") +endif() +if(CMAKE_C_COMPILER_ID MATCHES "GNU") + set(CMAKE_EXE_LINKER_FLAGS -no-pie) +endif() include(CMakePackageConfigHelpers) include(CPack) @@ -114,6 +124,7 @@ install( FILES "${CMAKE_CURRENT_BINARY_DIR}/flac-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/flac-config-version.cmake" + "cmake/FindOGG.cmake" DESTINATION "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/cmake") file(GLOB FLAC_HEADERS "include/FLAC/*.h") diff --git a/cmake/FindOGG.cmake b/cmake/FindOGG.cmake new file mode 100644 index 00000000..a7b2840f --- /dev/null +++ b/cmake/FindOGG.cmake @@ -0,0 +1,34 @@ +find_package(PkgConfig) +pkg_check_modules(_OGG QUIET ogg) + +find_path(_OGG_INCLUDE_DIR + NAMES "ogg/ogg.h" + PATHS ${_OGG_INCLUDE_DIRS}) + +find_library(_OGG_LIBRARY + NAMES ogg libogg + HINTS ${_OGG_LIBRARY_DIRS}) + +find_library(_OGG_LIBRARY_STATIC + NAMES libogg.a libogg_static + HINTS ${_OGG_LIBRARY_DIRS}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(OGG + REQUIRED_VARS _OGG_INCLUDE_DIR _OGG_LIBRARY + VERSION_VAR _OGG_VERSION) + +if(OGG_FOUND) + if(NOT Ogg::Ogg) + add_library(Ogg::Ogg UNKNOWN IMPORTED) + set_target_properties(Ogg::Ogg PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_OGG_INCLUDE_DIR}" + IMPORTED_LOCATION "${_OGG_LIBRARY}") + endif() + if(NOT Ogg::Ogg-static AND _OGG_LIBRARY_STATIC) + add_library(Ogg::Ogg-static STATIC IMPORTED) + set_target_properties(Ogg::Ogg-static PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_OGG_INCLUDE_DIR}" + IMPORTED_LOCATION "${_OGG_LIBRARY_STATIC}") + endif() +endif() diff --git a/flac-config.cmake.in b/flac-config.cmake.in index 89c6e7d0..154d0b86 100644 --- a/flac-config.cmake.in +++ b/flac-config.cmake.in @@ -1,3 +1,9 @@ @PACKAGE_INIT@ +if(@OGG_FOUND@) + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}") + include(CMakeFindDependencyMacro) + find_dependency(OGG) +endif() + include("${CMAKE_CURRENT_LIST_DIR}/targets.cmake") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7de7a7fa..f6577467 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,13 +1,8 @@ cmake_minimum_required(VERSION 3.12) option(ENABLE_64_BIT_WORDS "Set FLAC__BYTES_PER_WORD to 8 (4 is the default)" OFF) -option(WITH_OGG "ogg support (default: test for libogg)" ON) option(WITH_XMMS "Build XMMS plugin" OFF) -if(WITH_OGG) - find_package(OGG REQUIRED) -endif() - check_include_file("iconv.h" HAVE_ICONV_H) add_compile_definitions( diff --git a/src/libFLAC/CMakeLists.txt b/src/libFLAC/CMakeLists.txt index 1ea9383a..13f14751 100644 --- a/src/libFLAC/CMakeLists.txt +++ b/src/libFLAC/CMakeLists.txt @@ -102,9 +102,16 @@ target_include_directories(FLAC-static INTERFACE "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>" "$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>") target_link_libraries(FLAC-static PUBLIC - $<TARGET_NAME_IF_EXISTS:Ogg::Ogg> + $<TARGET_NAME_IF_EXISTS:Ogg::Ogg-static> $<TARGET_NAME_IF_EXISTS:FLAC-asm> $<$<BOOL:${HAVE_LROUND}>:m>) +if(TARGET Ogg::Ogg-static) + target_link_libraries(FLAC-static PUBLIC + $<TARGET_NAME_IF_EXISTS:Ogg::Ogg-static>) +elseif(TARGET Ogg::Ogg) + target_link_libraries(FLAC-static PUBLIC + $<TARGET_NAME_IF_EXISTS:Ogg::Ogg>) +endif() add_library(FLAC SHARED ${SOURCES}) target_compile_definitions(FLAC PRIVATE FLAC_API_EXPORTS FLAC__USE_VISIBILITY_ATTR) @@ -112,6 +119,7 @@ target_include_directories(FLAC INTERFACE "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>" "$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>") target_link_libraries(FLAC PRIVATE + $<TARGET_NAME_IF_EXISTS:Ogg::Ogg> $<TARGET_NAME_IF_EXISTS:FLAC-asm> $<$<BOOL:${HAVE_LROUND}>:m>) set_target_properties(FLAC PROPERTIES C_VISIBILITY_PRESET hidden) |