d198105b76fe3f1cd978d36da8d8bb82c085cacb
[platform/upstream/libvorbis.git] / lib / CMakeLists.txt
1 set(VORBIS_PUBLIC_HEADERS
2     ../include/vorbis/codec.h
3     ../include/vorbis/vorbisenc.h
4     ../include/vorbis/vorbisfile.h
5 )
6
7 set(VORBIS_HEADERS
8     envelope.h
9     lpc.h
10     lsp.h
11     codebook.h
12     misc.h
13     psy.h
14     masking.h
15     os.h
16     mdct.h
17     smallft.h
18     highlevel.h
19     registry.h
20     scales.h
21     window.h
22     lookup.h
23     lookup_data.h
24     codec_internal.h
25     backends.h
26     bitrate.h
27 )
28
29 set(VORBIS_SOURCES
30     mdct.c
31     smallft.c
32     block.c
33     envelope.c
34     window.c
35     lsp.c
36     lpc.c
37     analysis.c
38     synthesis.c
39     psy.c
40     info.c
41     floor1.c
42     floor0.c
43     res0.c
44     mapping0.c
45     registry.c
46     codebook.c
47     sharedbook.c
48     lookup.c
49     bitrate.c
50 )
51
52 set(VORBISFILE_SOURCES
53     vorbisfile.c
54 )
55
56 set(VORBISENC_SOURCES
57     vorbisenc.c
58 )
59
60 if(WIN32)
61     list(APPEND VORBIS_SOURCES vorbisenc.c)
62 endif()
63
64 if(MSVC)
65     list(APPEND VORBIS_SOURCES ../win32/vorbis.def)
66     list(APPEND VORBISENC_SOURCES ../win32/vorbisenc.def)
67     list(APPEND VORBISFILE_SOURCES ../win32/vorbisfile.def)
68 endif()
69
70 if (NOT BUILD_FRAMEWORK)
71     add_library(vorbis ${VORBIS_HEADERS} ${VORBIS_SOURCES})
72     add_library(vorbisenc ${VORBISENC_SOURCES})
73     add_library(vorbisfile ${VORBISFILE_SOURCES})
74
75     get_version_info(VORBIS_VERSION_INFO "V_LIB_CURRENT" "V_LIB_AGE" "V_LIB_REVISION")
76     set_target_properties(vorbis PROPERTIES SOVERSION ${VORBIS_VERSION_INFO})
77     get_version_info(VORBISENC_VERSION_INFO "VE_LIB_CURRENT" "VE_LIB_AGE" "VE_LIB_REVISION")
78     set_target_properties(vorbisenc PROPERTIES SOVERSION ${VORBISENC_VERSION_INFO})
79     get_version_info(VORBISFILE_VERSION_INFO "VF_LIB_CURRENT" "VF_LIB_AGE" "VF_LIB_REVISION")
80     set_target_properties(vorbisfile PROPERTIES SOVERSION ${VORBISFILE_VERSION_INFO})
81
82     target_include_directories(vorbis
83         PUBLIC
84             $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
85             $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
86        PRIVATE
87             ${CMAKE_CURRENT_SOURCE_DIR}
88     )
89     target_include_directories(vorbisenc
90         PUBLIC
91             $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
92             $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
93         PRIVATE
94             ${CMAKE_CURRENT_SOURCE_DIR}
95     )
96     target_include_directories(vorbisfile
97         PUBLIC
98             $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
99             $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
100     )
101
102     target_link_libraries(vorbis
103         PUBLIC Ogg::ogg
104         PRIVATE $<$<BOOL:${HAVE_LIBM}>:m>
105     )
106     target_link_libraries(vorbisenc PUBLIC vorbis)
107     target_link_libraries(vorbisfile PUBLIC vorbis)
108
109     install(FILES ${VORBIS_PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR}/vorbis)
110
111     install(TARGETS vorbis vorbisenc vorbisfile
112         EXPORT VorbisTargets
113         RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
114         LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
115         ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
116         FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR}
117     )
118
119     if(INSTALL_CMAKE_PACKAGE_MODULE)
120
121     set(CMAKE_INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/Vorbis)
122
123         install(EXPORT VorbisTargets
124             DESTINATION ${CMAKE_INSTALL_CONFIGDIR}
125             NAMESPACE Vorbis::
126         )
127
128
129         include(CMakePackageConfigHelpers)
130
131         configure_package_config_file(${PROJECT_SOURCE_DIR}/cmake/VorbisConfig.cmake.in ${PROJECT_BINARY_DIR}/VorbisConfig.cmake
132             INSTALL_DESTINATION ${CMAKE_INSTALL_CONFIGDIR}
133         )
134
135         write_basic_package_version_file(${PROJECT_BINARY_DIR}/VorbisConfigVersion.cmake
136             COMPATIBILITY SameMajorVersion
137         )
138
139         install(FILES ${PROJECT_BINARY_DIR}/VorbisConfig.cmake ${PROJECT_BINARY_DIR}/VorbisConfigVersion.cmake
140             DESTINATION ${CMAKE_INSTALL_CONFIGDIR}
141         )
142
143     endif()
144 else()
145     add_library(vorbis ${VORBIS_PUBLIC_HEADERS} ${VORBIS_HEADERS} ${VORBIS_SOURCES} ${VORBISFILE_SOURCES} ${VORBISENC_SOURCES})
146     set_target_properties(vorbis PROPERTIES
147         FRAMEWORK TRUE
148         FRAMEWORK_VERSION ${PROJECT_VERSION}
149         MACOSX_FRAMEWORK_IDENTIFIER org.xiph.vorbis
150         MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${PROJECT_VERSION}
151         MACOSX_FRAMEWORK_BUNDLE_VERSION ${PROJECT_VERSION}
152         XCODE_ATTRIBUTE_INSTALL_PATH "@rpath"
153         PUBLIC_HEADER "${VORBIS_PUBLIC_HEADERS}"
154         OUTPUT_NAME Vorbis
155     )
156     target_link_libraries(vorbis ${OGG_LIBRARIES})
157 endif()