Revert "Fix libmvec build for aarch64"
[platform/core/multimedia/noise-suppression.git] / CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 3.6)
2 PROJECT(noise-suppression VERSION ${VERSION} LANGUAGES C CXX)
3
4 SET(INC_DIR include)
5 INCLUDE_DIRECTORIES(${INC_DIR})
6
7 set(CMAKE_CXX_STANDARD 17)
8 set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
9
10 if (ENABLE_AUDIO_RESAMPLING)
11 INCLUDE(FindPkgConfig)
12 pkg_check_modules(TIZEN_PKGS REQUIRED
13         speexdsp
14 )
15
16 FOREACH(flag ${TIZEN_PKGS_CFLAGS})
17         SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
18 ENDFOREACH(flag)
19 endif()
20
21 SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${TIZEN_PKGS_CFLAGS}")
22
23 SET(TIZEN_FEATURE_FLAGS "-DTIZEN_FEATURE_MODIFICATION")
24
25 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -g -Wall -fPIC ${TIZEN_FEATURE_FLAGS}")
26 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -g -Wall -fPIC ${TIZEN_FEATURE_FLAGS}")
27 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed -pie -fPIC")
28 SET(PKG_LDFLAGS "m")
29
30 if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
31         MESSAGE("Not using fast math for x86_64 architecture")
32 else ()
33         SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DFLOAT_APPROX -ffast-math")
34         SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DFLOAT_APPROX -ffast-math")
35 endif()
36
37 if (CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l")
38         SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_NEON_OPTIMIZATION")
39         SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_NEON_OPTIMIZATION")
40 elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
41         SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_NEON_OPTIMIZATION")
42         SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_NEON_OPTIMIZATION")
43 endif()
44
45 SET(LIB_NAME "${PROJECT_NAME}")
46
47 MESSAGE(CFLAGS='${CMAKE_C_FLAGS}')
48 MESSAGE(CXXFLAGS='${CMAKE_CXX_FLAGS}')
49 MESSAGE(CMAKE_SYSTEM_PROCESSOR='${CMAKE_SYSTEM_PROCESSOR}')
50
51 SET(SRCS
52         src/AudioProcessor.cpp
53         src/DNNManager.cpp
54         src/NoiseSuppressionApi.cpp
55         src/NoiseSuppression.cpp
56         src/celt_lpc.c
57         src/kiss_fft.c
58         src/pitch.c
59         src/NSLogger.c
60         src/rnn_data_16K_v2.0.c
61         src/rnn_data_48K_v1.0.c
62 )
63
64 if (ENABLE_AUDIO_RESAMPLING)
65         SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DENABLE_AUDIO_RESAMPLING")
66         SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_AUDIO_RESAMPLING")
67         SET(SRCS ${SRCS} src/AudioResampler.cpp)
68 endif()
69
70 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include)
71 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/src)
72 ADD_LIBRARY(${LIB_NAME} SHARED ${SRCS})
73 TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${TIZEN_PKGS_LDFLAGS} ${PKG_LDFLAGS})
74
75 SET_TARGET_PROPERTIES(${LIB_NAME}
76         PROPERTIES
77         VERSION ${PROJECT_VERSION}
78         SOVERSION ${PROJECT_VERSION_MAJOR}
79         CLEAN_DIRECT_OUTPUT 1
80         )
81
82 INSTALL(TARGETS ${LIB_NAME} DESTINATION ${LIB_INSTALL_DIR})
83 INSTALL(
84         DIRECTORY ${INC_DIR}/ DESTINATION "${CMAKE_INSTALL_PREFIX}/include"
85         FILES_MATCHING
86         PATTERN "${INC_DIR}/noise-suppression.h"
87         PATTERN "${INC_DIR}/noise-suppression-type.h"
88         )
89
90 SET(PC_NAME ${LIB_NAME})
91 SET(PC_REQUIRED ${pc_dependents})
92 SET(PC_LDFLAGS -l${LIB_NAME})
93
94 CONFIGURE_FILE(
95         ${LIB_NAME}.pc.in
96         ${CMAKE_CURRENT_BINARY_DIR}/${LIB_NAME}.pc
97         @ONLY
98         )
99 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${LIB_NAME}.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
100
101 ADD_SUBDIRECTORY(tool)