forked from spanwar-sam/tvts
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
171 lines (132 loc) · 4.35 KB
/
Makefile
File metadata and controls
171 lines (132 loc) · 4.35 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
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
CROSS_COMPILE ?=
CC ?= gcc
CFLAGS = -Wall -Werror -O2 -I./include
LDFLAGS =
# Source directories
DRM_SRC = $(wildcard src/drm/*.c)
AUDIO_SRC = $(wildcard src/audio/*.c)
VIDEO_SRC = $(wildcard src/video/*.c)
USB_SRC = $(wildcard src/usb/*.c)
REPORT_SRC = $(wildcard src/report/*.c)
MAIN_SRC = src/test_main.c
# Object files
DRM_OBJ = $(DRM_SRC:.c=.o)
AUDIO_OBJ = $(AUDIO_SRC:.c=.o)
VIDEO_OBJ = $(VIDEO_SRC:.c=.o)
USB_OBJ = $(USB_SRC:.c=.o)
REPORT_OBJ = $(REPORT_SRC:.c=.o)
MAIN_OBJ = $(MAIN_SRC:.c=.o)
# Header files
HEADERS = $(wildcard include/*.h) $(wildcard include/audio/*.h) $(wildcard include/video/*.h) $(wildcard include/usb/*.h) $(wildcard include/report/*.h)
# Subsystem flags
DRM_CFLAGS = -D_ENABLE_DRM
DRM_LDFLAGS = -ldrm -lxf86drm -lxf86drm_mode
AUDIO_CFLAGS = -D_ENABLE_AUDIO
AUDIO_LDFLAGS = -lasound
VIDEO_CFLAGS = -D_ENABLE_VIDEO
VIDEO_LDFLAGS = -lv4l2
USB_CFLAGS = -D_ENABLE_USB -D_GNU_SOURCE
USB_LDFLAGS = -lusb-1.0 -lscsi -lsgutils2
# Target-specific variables
ifeq ($(TARGET),linux)
TARGET_ARCH = x86_64
TARGET_CFLAGS = -D_LINUX
TARGET_LDFLAGS =
endif
ifeq ($(TARGET),tizen8)
TARGET_ARCH = armv7l
TARGET_CFLAGS = -D_TIZEN_8 -D_ARM
TARGET_LDFLAGS =
endif
ifeq ($(TARGET),tizen9)
TARGET_ARCH = armv7l
TARGET_CFLAGS = -D_TIZEN_9 -D_ARM
TARGET_LDFLAGS =
endif
# Subsystem selection
SUBSYSTEMS ?= all
# The report module is always included
REPORT_CFLAGS = -D_ENABLE_REPORT
REPORT_LDFLAGS =
ifeq ($(SUBSYSTEMS),drm)
ENABLED_CFLAGS = $(DRM_CFLAGS) $(REPORT_CFLAGS)
ENABLED_LDFLAGS = $(DRM_LDFLAGS) $(REPORT_LDFLAGS)
OBJECTS = $(DRM_OBJ) $(REPORT_OBJ) $(MAIN_OBJ)
else ifeq ($(SUBSYSTEMS),audio)
ENABLED_CFLAGS = $(AUDIO_CFLAGS) $(REPORT_CFLAGS)
ENABLED_LDFLAGS = $(AUDIO_LDFLAGS) $(REPORT_LDFLAGS)
OBJECTS = $(AUDIO_OBJ) $(REPORT_OBJ) $(MAIN_OBJ)
else ifeq ($(SUBSYSTEMS),video)
ENABLED_CFLAGS = $(VIDEO_CFLAGS) $(REPORT_CFLAGS)
ENABLED_LDFLAGS = $(VIDEO_LDFLAGS) $(REPORT_LDFLAGS)
OBJECTS = $(VIDEO_OBJ) $(REPORT_OBJ) $(MAIN_OBJ)
else ifeq ($(SUBSYSTEMS),usb)
ENABLED_CFLAGS = $(USB_CFLAGS) $(REPORT_CFLAGS)
ENABLED_LDFLAGS = $(USB_LDFLAGS) $(REPORT_LDFLAGS)
OBJECTS = $(USB_OBJ) $(REPORT_OBJ) $(MAIN_OBJ)
else
ENABLED_CFLAGS = $(DRM_CFLAGS) $(AUDIO_CFLAGS) $(VIDEO_CFLAGS) $(USB_CFLAGS) $(REPORT_CFLAGS)
ENABLED_LDFLAGS = $(DRM_LDFLAGS) $(AUDIO_LDFLAGS) $(VIDEO_LDFLAGS) $(USB_LDFLAGS) $(REPORT_LDFLAGS)
OBJECTS = $(DRM_OBJ) $(AUDIO_OBJ) $(VIDEO_OBJ) $(USB_OBJ) $(REPORT_OBJ) $(MAIN_OBJ)
endif
# Default target is linux
TARGET ?= linux
# Combine flags
CFLAGS += $(TARGET_CFLAGS) $(ENABLED_CFLAGS)
LDFLAGS += $(TARGET_LDFLAGS) $(ENABLED_LDFLAGS)
all: test_suite
test_suite: $(OBJECTS)
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
%.o: %.c $(HEADERS)
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(DRM_OBJ) $(AUDIO_OBJ) $(VIDEO_OBJ) $(REPORT_OBJ) $(MAIN_OBJ) test_suite
dist: clean
mkdir -p tizen-vendor-test-suite-1.0.0
cp -r include src Makefile tizen_vendor_test_suite.spec ChangeLog README.GBS tizen-vendor-test-suite-1.0.0/
tar -czf tizen-vendor-test-suite-1.0.0.tar.gz tizen-vendor-test-suite-1.0.0/
rm -rf tizen-vendor-test-suite-1.0.0
# Subsystem-specific targets
drm:
$(MAKE) SUBSYSTEMS=drm
audio:
$(MAKE) SUBSYSTEMS=audio
video:
$(MAKE) SUBSYSTEMS=video
# Cross-compilation targets
linux:
$(MAKE) TARGET=linux
tizen8:
$(MAKE) TARGET=tizen8
tizen9:
$(MAKE) TARGET=tizen9
# Combined targets
linux-drm:
$(MAKE) TARGET=linux SUBSYSTEMS=drm
linux-audio:
$(MAKE) TARGET=linux SUBSYSTEMS=audio
linux-video:
$(MAKE) TARGET=linux SUBSYSTEMS=video
tizen8-drm:
$(MAKE) TARGET=tizen8 SUBSYSTEMS=drm
tizen8-audio:
$(MAKE) TARGET=tizen8 SUBSYSTEMS=audio
tizen8-video:
$(MAKE) TARGET=tizen8 SUBSYSTEMS=video
tizen9-drm:
$(MAKE) TARGET=tizen9 SUBSYSTEMS=drm
tizen9-audio:
$(MAKE) TARGET=tizen9 SUBSYSTEMS=audio
tizen9-video:
$(MAKE) TARGET=tizen9 SUBSYSTEMS=video
.PHONY: all clean dist drm audio video linux tizen8 tizen9 linux-drm linux-audio linux-video tizen8-drm tizen8-audio tizen8-video tizen9-drm tizen9-audio tizen9-video
cross-compile:
# For ARM64
CC=aarch64-linux-gnu-gcc
CFLAGS=-Wall -Werror -O2
LDFLAGS=-L$(LIBDRM_PATH) -L$(LIBDRM_MODE_PATH) -ldrm -lxf86drm -lxf86drm_mode
INCLUDES=-I$(INCLUDE_PATH)
$(CC) $(CFLAGS) $(INCLUDES) $(SRC_DIR)/tizen_drm_test.c $(SRC_DIR)/test_main.c -o test_suite_arm64 $(LDFLAGS)
run-tests:
./test_suite
.PHONY: clean cross-compile run-tests