-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
182 lines (162 loc) · 5.6 KB
/
CMakeLists.txt
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
172
173
174
175
176
177
178
179
180
181
182
cmake_minimum_required(VERSION 3.10)
project(HDZGOGGLE-SERVICES)
# Configuration
option(BUSYBOX "" ON)
option(DOSFSTOOLS "" ON)
option(DROPBEAR "" ON)
option(FFMPEG "" ON)
option(NTPCLIENT "" ON)
option(TINYCURL "" ON)
option(UNTRUNC "" ON)
# Custom Module Path
set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
# Load Modules
include(toolchain)
file(STRINGS ${CMAKE_SOURCE_DIR}/VERSION BUILD_NUMBER)
set(BIN_DIR ${PROJECT_BINARY_DIR}/bin)
set(OUT_DIR ${CMAKE_SOURCE_DIR}/out)
set(SCRIPTS_DIR ${CMAKE_SOURCE_DIR}/scripts)
set(ARCHIVE_NAME "hdzgoggle-services-${BUILD_NUMBER}")
# Preperation of Targets
add_custom_target(
PREPARE_ENVIRONMENT
COMMAND mkdir -p ${BIN_DIR}/scripts
)
# Main Command for All Targets
add_custom_command(
OUTPUT ALL_TARGETS
DEPENDS PREPARE_ENVIRONMENT
)
add_custom_command(
OUTPUT CLEAN_ALL
COMMAND rm -rf ${BIN_DIR} ${OUT_DIR}
)
add_custom_command(
OUTPUT CREATE_PACKAGE
COMMAND mkdir -p ${OUT_DIR}
COMMAND tar cvf "${OUT_DIR}/${ARCHIVE_NAME}.tar" --transform 's,^.,${ARCHIVE_NAME},' .
WORKING_DIRECTORY ${BIN_DIR}
DEPENDS ALL_TARGETS
)
add_custom_target(
${PROJECT_NAME} ALL
DEPENDS CREATE_PACKAGE
)
add_custom_target(
cleanall
DEPENDS CLEAN_ALL
)
# Configured Targets
if(BUSYBOX)
add_dependencies(${PROJECT_NAME} busybox)
add_subdirectory(busybox)
add_custom_command(
OUTPUT ALL_TARGETS APPEND
COMMAND mkdir -p ${BIN_DIR}/busybox
COMMAND cp -a ${PROJECT_BINARY_DIR}/busybox/out/busybox ${BIN_DIR}/busybox/
COMMAND cp -a ${busybox_SOURCE_DIR}/scripts/* ${BIN_DIR}/scripts/
DEPENDS busybox
)
add_custom_command(OUTPUT CLEAN_ALL APPEND DEPENDS busybox_clean)
endif()
if(DROPBEAR)
add_dependencies(${PROJECT_NAME} dropbearmulti)
add_subdirectory(dropbear)
add_custom_command(
OUTPUT ALL_TARGETS APPEND
COMMAND mkdir -p ${BIN_DIR}/dropbear
COMMAND cp -a ${PROJECT_BINARY_DIR}/dropbear/out/dropbearmulti ${BIN_DIR}/dropbear/
COMMAND cp -a ${dropbear_SOURCE_DIR}/scripts/* ${BIN_DIR}/scripts/
DEPENDS dropbear
)
add_custom_command(OUTPUT CLEAN_ALL APPEND DEPENDS dropbear_clean)
endif()
if(DOSFSTOOLS)
add_dependencies(${PROJECT_NAME} dosfstools)
add_subdirectory(dosfstools)
add_custom_command(
OUTPUT ALL_TARGETS APPEND
COMMAND mkdir -p ${BIN_DIR}/dosfstools
COMMAND cp -a ${PROJECT_BINARY_DIR}/dosfstools/out/fatlabel ${BIN_DIR}/dosfstools/
COMMAND cp -a ${PROJECT_BINARY_DIR}/dosfstools/out/fsck.fat ${BIN_DIR}/dosfstools/
COMMAND cp -a ${PROJECT_BINARY_DIR}/dosfstools/out/mkfs.fat ${BIN_DIR}/dosfstools/
COMMAND cp -a ${dosfstools_SOURCE_DIR}/scripts/* ${BIN_DIR}/scripts/
DEPENDS dosfstools
)
add_custom_command(OUTPUT CLEAN_ALL APPEND DEPENDS dosfstools_clean)
endif()
if(FFMPEG)
add_dependencies(${PROJECT_NAME} ffmpeg)
add_subdirectory(ffmpeg)
add_subdirectory(x264)
add_dependencies(
ffmpeg
x264
)
add_custom_command(
OUTPUT ALL_TARGETS APPEND
COMMAND mkdir -p ${BIN_DIR}/x264/lib
COMMAND cp -a ${PROJECT_BINARY_DIR}/x264/out/lib/libx264.so.164 ${BIN_DIR}/x264/lib/
COMMAND mkdir -p ${BIN_DIR}/ffmpeg/lib
COMMAND cp -a ${PROJECT_BINARY_DIR}/ffmpeg/out/bin ${BIN_DIR}/ffmpeg/
COMMAND cp -a ${PROJECT_BINARY_DIR}/ffmpeg/out/lib/libavcodec.so.59.18.100 ${BIN_DIR}/ffmpeg/lib/libavcodec.so.59
COMMAND cp -a ${PROJECT_BINARY_DIR}/ffmpeg/out/lib/libavdevice.so.59.4.100 ${BIN_DIR}/ffmpeg/lib/libavdevice.so.59
COMMAND cp -a ${PROJECT_BINARY_DIR}/ffmpeg/out/lib/libavfilter.so.8.24.100 ${BIN_DIR}/ffmpeg/lib/libavfilter.so.8
COMMAND cp -a ${PROJECT_BINARY_DIR}/ffmpeg/out/lib/libavformat.so.59.16.100 ${BIN_DIR}/ffmpeg/lib/libavformat.so.59
COMMAND cp -a ${PROJECT_BINARY_DIR}/ffmpeg/out/lib/libavutil.so.57.17.100 ${BIN_DIR}/ffmpeg/lib/libavutil.so.57
COMMAND cp -a ${PROJECT_BINARY_DIR}/ffmpeg/out/lib/libpostproc.so.56.3.100 ${BIN_DIR}/ffmpeg/lib/libpostproc.so.56
COMMAND cp -a ${x264_SOURCE_DIR}/scripts/* ${BIN_DIR}/scripts/
COMMAND cp -a ${ffmpeg_SOURCE_DIR}/scripts/* ${BIN_DIR}/scripts/
DEPENDS x264 ffmpeg
)
add_custom_command(OUTPUT CLEAN_ALL APPEND DEPENDS x264_clean ffmpeg_clean)
endif()
if(NTPCLIENT)
add_dependencies(${PROJECT_NAME} ntpclient)
add_subdirectory(ntpclient)
add_custom_command(
OUTPUT ALL_TARGETS APPEND
COMMAND mkdir -p ${BIN_DIR}/ntpclient
COMMAND cp -a ${PROJECT_BINARY_DIR}/ntpclient/out/ntpclient ${BIN_DIR}/ntpclient/
COMMAND cp -a ${ntpclient_SOURCE_DIR}/scripts/* ${BIN_DIR}/scripts/
DEPENDS ntpclient
)
add_custom_command(OUTPUT CLEAN_ALL APPEND DEPENDS ntpclient_clean)
endif()
if(UNTRUNC)
add_dependencies(${PROJECT_NAME} untrunc)
add_subdirectory(untrunc)
add_custom_command(
OUTPUT ALL_TARGETS APPEND
COMMAND mkdir -p ${BIN_DIR}/untrunc
COMMAND cp -a ${PROJECT_BINARY_DIR}/untrunc/out/untrunc ${BIN_DIR}/untrunc/
DEPENDS untrunc
)
add_custom_command(OUTPUT CLEAN_ALL APPEND DEPENDS untrunc_clean)
endif()
if(TINYCURL)
add_dependencies(${PROJECT_NAME} bearssl tinycurl)
add_subdirectory(bearssl)
add_subdirectory(tinycurl)
add_dependencies(
tinycurl
bearssl
)
add_custom_command(
OUTPUT ALL_TARGETS APPEND
COMMAND mkdir -p ${BIN_DIR}/bearssl
COMMAND cp -a ${PROJECT_BINARY_DIR}/bearssl/out/* ${BIN_DIR}/bearssl/
COMMAND cp -a ${bearssl_SOURCE_DIR}/scripts/* ${BIN_DIR}/scripts/
COMMAND mkdir -p ${BIN_DIR}/tinycurl
COMMAND cp -a ${PROJECT_BINARY_DIR}/tinycurl/out/bin/curl ${BIN_DIR}/tinycurl/
COMMAND cp -a ${tinycurl_SOURCE_DIR}/scripts/* ${BIN_DIR}/scripts/
DEPENDS bearssl tinycurl
)
add_custom_command(OUTPUT CLEAN_ALL APPEND DEPENDS bearssl_clean tinycurl_clean)
endif()
# Final Operation
add_custom_command(
OUTPUT ALL_TARGETS APPEND
COMMAND cp -a ${SCRIPTS_DIR}/* ${BIN_DIR}/
COMMAND cp -a ${CMAKE_SOURCE_DIR}/VERSION ${BIN_DIR}/
)