blob: b711c9f39cd9ee880c63699bbc7f48b8e129ea0e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
cmake_minimum_required(VERSION 3.8)
project(aubio C)
option(WITH_DEPENDENCIES "Adds extra dependencies" ON)
option(BUILD_TOOLS "Build and install tools" ON)
add_definitions(
-DHAVE_STDLIB_H=1
-DHAVE_STDIO_H=1
-DHAVE_MATH_H=1
-DHAVE_STRING_H=1
-DHAVE_LIMITS_H=1
-DHAVE_STDARG_H=1
-DHAVE_ERRNO_H=1
-DHAVE_C99_VARARGS_MACROS=1
-D_CRT_SECURE_NO_WARNINGS=1
)
if(WITH_DEPENDENCIES)
add_definitions(
-DHAVE_SNDFILE=1
-DHAVE_WAVWRITE=1
-DHAVE_WAVREAD=1
-DHAVE_LIBAV=1
-DHAVE_SWRESAMPLE=1
)
endif()
set(TOOLS_INSTALLDIR "bin" CACHE STRING "Target directory for installed tools")
if(WITH_DEPENDENCIES)
find_package(FFMPEG COMPONENTS avcodec avutil avformat swresample REQUIRED)
find_package(BZip2 REQUIRED)
find_package(LibLZMA REQUIRED)
find_package(SndFile REQUIRED)
include_directories(${LIBLZMA_INCLUDE_DIRS})
endif()
include_directories(src)
file(GLOB_RECURSE SOURCES src/*.c)
if(WIN32 AND NOT MINGW)
set_source_files_properties(src/io/sink_wavwrite.c PROPERTIES COMPILE_FLAGS /FIWinsock2.h)
endif()
add_library(aubio ${SOURCES})
if(WITH_DEPENDENCIES)
target_link_libraries(aubio PUBLIC
SndFile::sndfile
${FFMPEG_LIBRARIES}
BZip2::BZip2
${LIBLZMA_LIBRARIES}
)
endif()
if(WIN32)
target_link_libraries(aubio PUBLIC ws2_32)
endif()
if(BUILD_TOOLS AND WITH_DEPENDENCIES)
set(EXAMPLE_EXECS aubiomfcc aubionotes aubioonset aubiopitch aubioquiet aubiotrack)
foreach(EXAMPLE_EXEC ${EXAMPLE_EXECS})
add_executable(${EXAMPLE_EXEC} examples/${EXAMPLE_EXEC}.c examples/utils.c examples/jackio.c)
target_link_libraries(${EXAMPLE_EXEC} PRIVATE aubio)
if(WIN32)
target_compile_definitions(${EXAMPLE_EXEC} PRIVATE -DHAVE_WIN_HACKS=1)
target_link_libraries(${EXAMPLE_EXEC} PUBLIC ws2_32)
else()
target_compile_definitions(${EXAMPLE_EXEC} PRIVATE -DHAVE_UNISTD_H=1)
endif()
endforeach()
# Create and add fake config.h to avoid build errors (file is generated for
# cross-platform requirements in waf build-system)
file(WRITE "${CMAKE_BINARY_DIR}/config.h" "")
include_directories(${CMAKE_BINARY_DIR})
install(
TARGETS ${EXAMPLE_EXECS}
RUNTIME DESTINATION ${TOOLS_INSTALLDIR}
)
endif()
install(
TARGETS aubio EXPORT AubioTargets
INCLUDES DESTINATION include
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
install(EXPORT AubioTargets NAMESPACE Aubio:: DESTINATION share/aubio)
install(
DIRECTORY src/
DESTINATION include/aubio
FILES_MATCHING
PATTERN "*.h"
PATTERN "*_priv.h" EXCLUDE
PATTERN "config.h" EXCLUDE
)
# Create CMake configuration export file.
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/AubioConfig.cmake.in "@PACKAGE_INIT@\n")
if(WITH_DEPENDENCIES)
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/AubioConfig.cmake.in "
include(CMakeFindDependencyMacro)
find_dependency(FFMPEG COMPONENTS avcodec avutil avformat swresample REQUIRED)
find_dependency(BZip2 REQUIRED)
find_dependency(LibLZMA REQUIRED)
find_dependency(SndFile REQUIRED)
")
endif()
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/AubioConfig.cmake.in "include(\${CMAKE_CURRENT_LIST_DIR}/AubioTargets.cmake)")
# Install CMake configuration export file.
include(CMakePackageConfigHelpers)
configure_package_config_file(
${CMAKE_CURRENT_BINARY_DIR}/AubioConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/AubioConfig.cmake
INSTALL_DESTINATION share/aubio
)
install(
FILES
${CMAKE_BINARY_DIR}/AubioConfig.cmake
DESTINATION
share/aubio
)
|