aboutsummaryrefslogtreecommitdiff
path: root/ports/speex/CMakeLists.txt
blob: b151b2439f7077a61a6727c19e6eca538d1205a9 (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
cmake_minimum_required (VERSION 3.8.0)
project (libspeex C)

include(GNUInstallDirs)
include(CheckLibraryExists)

option(USE_SSE  "USE_SSE  used Note: USE_SSE and FIXED_POINT are mutually exclusive." ON)
if(MSVC)
  add_definitions(-DHAVE_CONFIG_H)
  if(USE_SSE)
    add_definitions(-DUSE_SSE -DFLOATING_POINT)
  else()
    add_definitions(-DFIXED_POINT)
  endif()
endif()

include_directories(win32 include)

set(CMAKE_DEBUG_POSTFIX d)

file(READ "win32/libspeex.def" _contents)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  string(REPLACE "LIBRARY libspeex" "LIBRARY libspeexd" _contents "${_contents}")
endif()
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/libspeex.def"
  "${_contents}\n"
  "speex_nb_mode\n"
  "speex_wb_mode\n"
  "speex_uwb_mode\n"
  "speex_mode_list\n"
  "speex_header_free\n"
)

file(STRINGS "configure.ac"
    _speex_version_defines REGEX "SPEEX_(MAJOR|MINOR|MICRO)_VERSION=([0-9]+)$")
foreach(ver ${_speex_version_defines})
    if(ver MATCHES "SPEEX_(MAJOR|MINOR|MICRO)_VERSION=([0-9]+)$")
        set(SPEEX_${CMAKE_MATCH_1}_VERSION "${CMAKE_MATCH_2}" CACHE INTERNAL "")
    endif()
endforeach()
set(SPEEX_VERSION ${SPEEX_MAJOR_VERSION}.${SPEEX_MINOR_VERSION}.${SPEEX_MICRO_VERSION})

set(SRC
  "libspeex/bits.c"
  "libspeex/cb_search.c"
  "libspeex/exc_10_16_table.c"
  "libspeex/exc_10_32_table.c"
  "libspeex/exc_20_32_table.c"
  "libspeex/exc_5_256_table.c"
  "libspeex/exc_5_64_table.c"
  "libspeex/exc_8_128_table.c"
  "libspeex/fftwrap.c"
  "libspeex/filters.c"
  "libspeex/gain_table.c"
  "libspeex/gain_table_lbr.c"
  "libspeex/hexc_10_32_table.c"
  "libspeex/hexc_table.c"
  "libspeex/high_lsp_tables.c"
  "libspeex/kiss_fft.c"
  "libspeex/kiss_fftr.c"
  "libspeex/lpc.c"
  "libspeex/lsp.c"
  "libspeex/lsp_tables_nb.c"
  "libspeex/ltp.c"
  "libspeex/modes.c"
  "libspeex/modes_wb.c"
  "libspeex/nb_celp.c"
  "libspeex/quant_lsp.c"
  "libspeex/sb_celp.c"
  "libspeex/smallft.c"
  "libspeex/speex.c"
  "libspeex/speex_callbacks.c"
  "libspeex/speex_header.c"
  "libspeex/stereo.c"
  "libspeex/vbr.c"
  "libspeex/vq.c"
  "libspeex/window.c"
  "${CMAKE_CURRENT_BINARY_DIR}/libspeex.def"
)

add_library(libspeex ${SRC})

install(
  TARGETS libspeex
  RUNTIME DESTINATION bin
  LIBRARY DESTINATION lib
  ARCHIVE DESTINATION lib
)

if(NOT DISABLE_INSTALL_HEADERS)
  install(DIRECTORY include/ DESTINATION include FILES_MATCHING PATTERN "*.h")
endif()

# pkgconfig file
set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix ${CMAKE_INSTALL_PREFIX})
set(libdir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR})
set(includedir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR})
set(LIBM )
check_library_exists(m ceil "" LIBMEXIST)
if(LIBMEXIST)
    list(APPEND LIBM -lm)
endif()
set(SPEEXLIB "${CMAKE_PROJECT_NAME}")
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
    set(SPEEXLIB "${CMAKE_PROJECT_NAME}d")
endif()
configure_file(speex.pc.in speex.pc @ONLY)
install(FILES
        ${CMAKE_CURRENT_BINARY_DIR}/speex.pc
        DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)