Repository navigation
Expand file tree
/
Copy pathMakefile
More file actions
84 lines (67 loc) · 3.19 KB
/
Copy pathMakefile
File metadata and controls
84 lines (67 loc) · 3.19 KB
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
# Fallback build when CMake is not installed.
# Prefer: cmake -S . -B build && cmake --build build
NATIVE := native
CXX ?= g++
CXXFLAGS ?= -std=c++17 -fPIC -O2 -Wall -Wextra -Werror=return-type -Wno-unused-parameter -D_GNU_SOURCE
INCLUDES := -Iinclude -Icompat -Ithird_party -I$(NATIVE)
LDFLAGS ?= -lpthread -lusb-1.0
# Distro packages without -dev only ship the SONAME symlink.
LIBUSB_SO ?= /usr/lib/x86_64-linux-gnu/libusb-1.0.so.0
SRCS := \
src/ampdac.cpp \
src/ampdac_android_log.cpp \
src/ampdac_kernel.cpp \
$(NATIVE)/usb_session_transport.cpp \
$(NATIVE)/usb_teardown.cpp \
$(NATIVE)/uac2_descriptor_parser.cpp \
$(NATIVE)/uac2_dsd_detector.cpp \
$(NATIVE)/uac2_clock_control.cpp \
$(NATIVE)/uac2_feature_volume.cpp \
$(NATIVE)/usb_device_controller.cpp \
$(NATIVE)/usb_iso_transfer_pool.cpp \
$(NATIVE)/spsc_ring_buffer.cpp \
$(NATIVE)/pcm_wire_formatter.cpp \
$(NATIVE)/usb_playback_state.cpp \
$(NATIVE)/usb_producer_coordinator.cpp \
$(NATIVE)/dop_formatter.cpp \
$(NATIVE)/native_dsd_formatter.cpp \
$(NATIVE)/dsd_playback_manager.cpp \
$(NATIVE)/libusb_event_thread.cpp \
$(NATIVE)/decoder_to_ring_bridge.cpp
BUILD := build
OBJS := $(patsubst %.cpp,$(BUILD)/%.o,$(notdir $(SRCS)))
HDRS := $(wildcard include/*.h) $(wildcard src/*.h) $(wildcard $(NATIVE)/*.h)
ALSA_CFLAGS := $(shell pkg-config --cflags alsa 2>/dev/null)
ALSA_LIBS := $(shell pkg-config --libs alsa 2>/dev/null)
.PHONY: all clean alsa-plugin
all: $(BUILD)/libampdac.so $(BUILD)/libampdac_client.so $(BUILD)/ampdac-cli $(BUILD)/ampdacd $(BUILD)/ipc_smoke alsa-plugin
$(BUILD):
mkdir -p $(BUILD)
# Map basename → source path
$(BUILD)/ampdac.o: src/ampdac.cpp $(HDRS) | $(BUILD)
$(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@
$(BUILD)/ampdac_android_log.o: src/ampdac_android_log.cpp $(HDRS) | $(BUILD)
$(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@
$(BUILD)/ampdac_kernel.o: src/ampdac_kernel.cpp $(HDRS) | $(BUILD)
$(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@
$(BUILD)/%.o: $(NATIVE)/%.cpp $(HDRS) | $(BUILD)
$(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@
$(BUILD)/libampdac.so: $(OBJS)
$(CXX) -shared -o $@ $^ $(LIBUSB_SO) -lpthread
$(BUILD)/ampdac-cli: examples/ampdac_cli.cpp $(BUILD)/libampdac.so
$(CXX) $(CXXFLAGS) -Iinclude -o $@ examples/ampdac_cli.cpp -L$(BUILD) -lampdac -Wl,-rpath,'$$ORIGIN'
$(BUILD)/ampdac_client.o: src/ampdac_client.c $(HDRS) | $(BUILD)
$(CC) -std=c11 -fPIC -O2 -Wall -Wextra -D_GNU_SOURCE -Iinclude -c $< -o $@
$(BUILD)/libampdac_client.so: $(BUILD)/ampdac_client.o
$(CC) -shared -o $@ $^
$(BUILD)/ampdacd: src/ampdacd.cpp $(BUILD)/libampdac.so
$(CXX) $(CXXFLAGS) -Iinclude -o $@ src/ampdacd.cpp -L$(BUILD) -lampdac -Wl,-rpath,'$$ORIGIN' -Wl,-rpath,'$$ORIGIN/../lib' -pthread
$(BUILD)/ipc_smoke: tests/ipc_smoke.c $(BUILD)/ampdac_client.o
$(CC) -std=c11 -O2 -Wall -Wextra -D_GNU_SOURCE -Iinclude -o $@ tests/ipc_smoke.c $(BUILD)/ampdac_client.o
$(BUILD)/pcm_ampdac.o: alsa/pcm_ampdac.c $(BUILD)/ampdac_client.o | $(BUILD)
$(CC) -std=c11 -fPIC -DPIC -O2 -Wall -Wextra -D_GNU_SOURCE -Iinclude $(ALSA_CFLAGS) -c $< -o $@
$(BUILD)/libasound_module_pcm_ampdac.so: $(BUILD)/pcm_ampdac.o $(BUILD)/ampdac_client.o
$(CC) -shared -o $@ $^ $(ALSA_LIBS)
alsa-plugin: $(BUILD)/libasound_module_pcm_ampdac.so
clean:
rm -rf $(BUILD)