xref: /aosp_15_r20/external/oboe/CMakeLists.txt (revision 05767d913155b055644481607e6fa1e35e2fe72c)
1*05767d91SRobert Wucmake_minimum_required(VERSION 3.4.1)
2*05767d91SRobert Wu
3*05767d91SRobert Wu# Set the name of the project and store it in PROJECT_NAME. Also set the following variables:
4*05767d91SRobert Wu# PROJECT_SOURCE_DIR (usually the root directory where Oboe has been cloned e.g.)
5*05767d91SRobert Wu# PROJECT_BINARY_DIR (usually the containing project's binary directory,
6*05767d91SRobert Wu# e.g. ${OBOE_HOME}/samples/RhythmGame/.externalNativeBuild/cmake/ndkExtractorDebug/x86/oboe-bin)
7*05767d91SRobert Wuproject(oboe)
8*05767d91SRobert Wu
9*05767d91SRobert Wuset (oboe_sources
10*05767d91SRobert Wu    src/aaudio/AAudioLoader.cpp
11*05767d91SRobert Wu    src/aaudio/AudioStreamAAudio.cpp
12*05767d91SRobert Wu    src/common/AdpfWrapper.cpp
13*05767d91SRobert Wu    src/common/AudioSourceCaller.cpp
14*05767d91SRobert Wu    src/common/AudioStream.cpp
15*05767d91SRobert Wu    src/common/AudioStreamBuilder.cpp
16*05767d91SRobert Wu    src/common/DataConversionFlowGraph.cpp
17*05767d91SRobert Wu    src/common/FilterAudioStream.cpp
18*05767d91SRobert Wu    src/common/FixedBlockAdapter.cpp
19*05767d91SRobert Wu    src/common/FixedBlockReader.cpp
20*05767d91SRobert Wu    src/common/FixedBlockWriter.cpp
21*05767d91SRobert Wu    src/common/LatencyTuner.cpp
22*05767d91SRobert Wu    src/common/OboeExtensions.cpp
23*05767d91SRobert Wu    src/common/SourceFloatCaller.cpp
24*05767d91SRobert Wu    src/common/SourceI16Caller.cpp
25*05767d91SRobert Wu    src/common/SourceI24Caller.cpp
26*05767d91SRobert Wu    src/common/SourceI32Caller.cpp
27*05767d91SRobert Wu    src/common/Utilities.cpp
28*05767d91SRobert Wu    src/common/QuirksManager.cpp
29*05767d91SRobert Wu    src/fifo/FifoBuffer.cpp
30*05767d91SRobert Wu    src/fifo/FifoController.cpp
31*05767d91SRobert Wu    src/fifo/FifoControllerBase.cpp
32*05767d91SRobert Wu    src/fifo/FifoControllerIndirect.cpp
33*05767d91SRobert Wu    src/flowgraph/FlowGraphNode.cpp
34*05767d91SRobert Wu    src/flowgraph/ChannelCountConverter.cpp
35*05767d91SRobert Wu    src/flowgraph/ClipToRange.cpp
36*05767d91SRobert Wu    src/flowgraph/Limiter.cpp
37*05767d91SRobert Wu    src/flowgraph/ManyToMultiConverter.cpp
38*05767d91SRobert Wu    src/flowgraph/MonoBlend.cpp
39*05767d91SRobert Wu    src/flowgraph/MonoToMultiConverter.cpp
40*05767d91SRobert Wu    src/flowgraph/MultiToManyConverter.cpp
41*05767d91SRobert Wu    src/flowgraph/MultiToMonoConverter.cpp
42*05767d91SRobert Wu    src/flowgraph/RampLinear.cpp
43*05767d91SRobert Wu    src/flowgraph/SampleRateConverter.cpp
44*05767d91SRobert Wu    src/flowgraph/SinkFloat.cpp
45*05767d91SRobert Wu    src/flowgraph/SinkI16.cpp
46*05767d91SRobert Wu    src/flowgraph/SinkI24.cpp
47*05767d91SRobert Wu    src/flowgraph/SinkI32.cpp
48*05767d91SRobert Wu    src/flowgraph/SinkI8_24.cpp
49*05767d91SRobert Wu    src/flowgraph/SourceFloat.cpp
50*05767d91SRobert Wu    src/flowgraph/SourceI16.cpp
51*05767d91SRobert Wu    src/flowgraph/SourceI24.cpp
52*05767d91SRobert Wu    src/flowgraph/SourceI32.cpp
53*05767d91SRobert Wu    src/flowgraph/SourceI8_24.cpp
54*05767d91SRobert Wu    src/flowgraph/resampler/IntegerRatio.cpp
55*05767d91SRobert Wu    src/flowgraph/resampler/LinearResampler.cpp
56*05767d91SRobert Wu    src/flowgraph/resampler/MultiChannelResampler.cpp
57*05767d91SRobert Wu    src/flowgraph/resampler/PolyphaseResampler.cpp
58*05767d91SRobert Wu    src/flowgraph/resampler/PolyphaseResamplerMono.cpp
59*05767d91SRobert Wu    src/flowgraph/resampler/PolyphaseResamplerStereo.cpp
60*05767d91SRobert Wu    src/flowgraph/resampler/SincResampler.cpp
61*05767d91SRobert Wu    src/flowgraph/resampler/SincResamplerStereo.cpp
62*05767d91SRobert Wu    src/opensles/AudioInputStreamOpenSLES.cpp
63*05767d91SRobert Wu    src/opensles/AudioOutputStreamOpenSLES.cpp
64*05767d91SRobert Wu    src/opensles/AudioStreamBuffered.cpp
65*05767d91SRobert Wu    src/opensles/AudioStreamOpenSLES.cpp
66*05767d91SRobert Wu    src/opensles/EngineOpenSLES.cpp
67*05767d91SRobert Wu    src/opensles/OpenSLESUtilities.cpp
68*05767d91SRobert Wu    src/opensles/OutputMixerOpenSLES.cpp
69*05767d91SRobert Wu    src/common/StabilizedCallback.cpp
70*05767d91SRobert Wu    src/common/Trace.cpp
71*05767d91SRobert Wu    src/common/Version.cpp
72*05767d91SRobert Wu    )
73*05767d91SRobert Wu
74*05767d91SRobert Wuadd_library(oboe ${oboe_sources})
75*05767d91SRobert Wu
76*05767d91SRobert Wu# Specify directories which the compiler should look for headers
77*05767d91SRobert Wutarget_include_directories(oboe
78*05767d91SRobert Wu        PRIVATE src
79*05767d91SRobert Wu        PUBLIC include)
80*05767d91SRobert Wu
81*05767d91SRobert Wu# Compile Flags:
82*05767d91SRobert Wu#     Enable -Werror when building debug config
83*05767d91SRobert Wu#     Enable -Ofast
84*05767d91SRobert Wutarget_compile_options(oboe
85*05767d91SRobert Wu        PRIVATE
86*05767d91SRobert Wu        -std=c++17
87*05767d91SRobert Wu        -Wall
88*05767d91SRobert Wu        -Wextra-semi
89*05767d91SRobert Wu        -Wshadow
90*05767d91SRobert Wu        -Wshadow-field
91*05767d91SRobert Wu        "$<$<CONFIG:RELEASE>:-Ofast>"
92*05767d91SRobert Wu        "$<$<CONFIG:DEBUG>:-O3>"
93*05767d91SRobert Wu        "$<$<CONFIG:DEBUG>:-Werror>")
94*05767d91SRobert Wu
95*05767d91SRobert Wu# Enable logging of D,V for debug builds
96*05767d91SRobert Wutarget_compile_definitions(oboe PUBLIC $<$<CONFIG:DEBUG>:OBOE_ENABLE_LOGGING=1>)
97*05767d91SRobert Wu
98*05767d91SRobert Wutarget_link_libraries(oboe PRIVATE log OpenSLES)
99*05767d91SRobert Wu
100*05767d91SRobert Wu# When installing oboe put the libraries in the lib/<ABI> folder e.g. lib/arm64-v8a
101*05767d91SRobert Wuinstall(TARGETS oboe
102*05767d91SRobert Wu        LIBRARY DESTINATION lib/${ANDROID_ABI}
103*05767d91SRobert Wu        ARCHIVE DESTINATION lib/${ANDROID_ABI})
104*05767d91SRobert Wu
105*05767d91SRobert Wu# Also install the headers
106*05767d91SRobert Wuinstall(DIRECTORY include/oboe DESTINATION include)
107