blob: 790a04685ebccf5c054dbdd474d051b3f4f25679 (
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
130
|
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_compile_definitions(aubio PRIVATE -DHAVE_WIN_HACKS=1)
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
)
|