summaryrefslogtreecommitdiff
path: root/src/libFLAC++
diff options
context:
space:
mode:
authorVitaliy Kirsanov <krokoziabla@yandex-team.ru>2019-03-31 23:04:45 +0300
committerErik de Castro Lopo <erikd@mega-nerd.com>2019-05-04 11:41:48 +1000
commitc39718d7a36405114f9ed0b1a7acaef64ea88131 (patch)
tree3d3633d0af41f00ccb6f0ec4dc48f9b018d5ff7c /src/libFLAC++
parent12ec86c6188aef9ebd4b9bd0393eab7326e185fc (diff)
downloadflac-c39718d7a36405114f9ed0b1a7acaef64ea88131.tar.gz
CMake support added
Diffstat (limited to 'src/libFLAC++')
-rw-r--r--src/libFLAC++/CMakeLists.txt48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/libFLAC++/CMakeLists.txt b/src/libFLAC++/CMakeLists.txt
new file mode 100644
index 00000000..83031420
--- /dev/null
+++ b/src/libFLAC++/CMakeLists.txt
@@ -0,0 +1,48 @@
+set(prefix "${CMAKE_INSTALL_PREFIX}")
+set(exec_prefix "${CMAKE_INSTALL_PREFIX}")
+set(libdir "${CMAKE_INSTALL_FULL_LIBDIR}")
+set(includedir "${CMAKE_INSTALL_FULL_INCLUDEDIR}")
+configure_file(flac++.pc.in flac++.pc @ONLY)
+
+check_cxx_source_compiles("
+ #ifdef __STDC_NO_VLA__
+ syntax error;
+ #else
+ int fvla (int m, int * c)
+ {
+ int D[m];
+ return D[0] == c[0];
+ }
+
+ int main(int, char * []) { return 0; }
+ #endif"
+ HAVE_CXX_VARARRAYS)
+
+add_compile_definitions($<$<BOOL:${HAVE_CXX_VARARRAYS}>:HAVE_CXX_VARARRAYS>)
+
+set(SOURCES
+ metadata.cpp
+ stream_decoder.cpp
+ stream_encoder.cpp)
+
+add_library(FLACXX-static STATIC ${SOURCES})
+target_compile_definitions(FLACXX-static PUBLIC FLAC__NO_DLL)
+target_include_directories(FLACXX-static INTERFACE
+ "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>"
+ "$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>")
+target_link_libraries(FLACXX-static PUBLIC FLAC-static)
+
+add_library(FLACXX SHARED ${SOURCES})
+target_compile_definitions(FLACXX PRIVATE FLACPP_API_EXPORTS FLAC__USE_VISIBILITY_ATTR)
+target_include_directories(FLACXX INTERFACE
+ "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>"
+ "$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>")
+target_link_libraries(FLACXX PRIVATE FLAC)
+set_target_properties(FLACXX PROPERTIES CXX_VISIBILITY_PRESET hidden)
+
+install(TARGETS FLACXX FLACXX-static EXPORT targets
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}/"
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/"
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}/")
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/flac++.pc"
+ DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig")