CMake: Handier way to find Iconv
[flac.git] / src / libFLAC++ / CMakeLists.txt
blob04b721f3038b46e8ea86ba42d6464008931cc77b
1 set(prefix "${CMAKE_INSTALL_PREFIX}")
2 set(exec_prefix "${CMAKE_INSTALL_PREFIX}")
3 set(libdir "${CMAKE_INSTALL_FULL_LIBDIR}")
4 set(includedir "${CMAKE_INSTALL_FULL_INCLUDEDIR}")
5 configure_file(flac++.pc.in flac++.pc @ONLY)
7 check_cxx_source_compiles("
8     #ifdef __STDC_NO_VLA__
9     syntax error;
10     #else
11     int fvla (int m, int * c)
12     {
13       int D[m];
14       return D[0] == c[0];
15     }
17     int main(int, char * []) { return 0; }
18     #endif"
19     HAVE_CXX_VARARRAYS)
21 add_library(FLAC++
22     metadata.cpp
23     stream_decoder.cpp
24     stream_encoder.cpp)
25 target_compile_definitions(FLAC++
26     PRIVATE $<$<BOOL:${BUILD_SHARED_LIBS}>:FLACPP_API_EXPORTS>
27     PUBLIC $<$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>:FLAC__NO_DLL>)
28 if(NOT WIN32)
29     target_compile_definitions(FLAC++ PRIVATE $<$<BOOL:${BUILD_SHARED_LIBS}>:FLAC__USE_VISIBILITY_ATTR>)
30 endif()
31 target_include_directories(FLAC++ INTERFACE
32     "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>"
33     "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
34 target_link_libraries(FLAC++ PUBLIC FLAC)
35 if(BUILD_SHARED_LIBS)
36     set_target_properties(FLAC++ PROPERTIES
37         VERSION 6.3.0
38         SOVERSION 6)
39     if(NOT WIN32)
40         set_target_properties(FLAC++ PROPERTIES CXX_VISIBILITY_PRESET hidden)
41     endif()
42 endif()
44 install(TARGETS FLAC++ EXPORT targets
45     ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}/"
46     LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/"
47     RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}/")
48 install(FILES "${CMAKE_CURRENT_BINARY_DIR}/flac++.pc"
49     DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")