ffea9c build system: switch: added skeleton.

Authored and Committed by midipix 8 years ago
    build system: switch: added skeleton.
    
        
file added
+386
Makefile.in ADDED
@@ -0,0 +1,386 @@
1
+ PACKAGE = @package@
2
+ NICKNAME = @nickname@
3
+ PROJECT_DIR = @project_dir@
4
+ GIT_REFERENCE_DIR = @git_reference_dir@
5
+ CUSTOM_INSTALL_HEADERS = @custom_install_headers@
6
+ AVOID_VERSION = @avoid_version@
7
+
8
+ BUILD = @build@
9
+ HOST = @host@
10
+ TARGET = @target@
11
+ ARCH = @arch@
12
+ COMPILER = @compiler@
13
+ TOOLCHAIN = @toolchain@
14
+ SYSROOT = @sysroot@
15
+ CROSS_COMPILE = @cross_compile@
16
+ SHELL = @shell@
17
+
18
+ CFLAGS_COMMON = @cflags_common@
19
+ CFLAGS_DEBUG = @cflags_debug@
20
+ CFLAGS_CMDLINE = @cflags_cmdline@
21
+ CFLAGS_CONFIG = @cflags_config@
22
+ CFLAGS_SYSROOT = @cflags_sysroot@
23
+ CFLAGS_OS = @cflags_os@
24
+ CFLAGS_SITE = @cflags_site@
25
+ CFLAGS_PATH = @cflags_path@
26
+ CFLAGS_STRICT = @cflags_strict@
27
+ CFLAGS_UTIL = @cflags_util@
28
+
29
+ LDFLAGS_COMMON = @ldflags_common@
30
+ LDFLAGS_DEBUG = @ldflags_debug@
31
+ LDFLAGS_CMDLINE = @ldflags_cmdline@
32
+ LDFLAGS_CONFIG = @ldflags_config@
33
+ LDFLAGS_SYSROOT = @ldflags_sysroot@
34
+ LDFLAGS_PATH = @ldflags_path@
35
+ LDFLAGS_STRICT = @ldflags_strict@
36
+ LDFLAGS_UTIL = @ldflags_util@
37
+
38
+ PE_SUBSYSTEM = @pe_subsystem@
39
+ PE_IMAGE_BASE = @pe_image_base@
40
+ PE_CONFIG_DEFS = @pe_config_defs@
41
+
42
+ ELF_EH_FRAME = @elf_eh_frame@
43
+ ELF_HASH_STYLE = @elf_hash_style@
44
+ ELF_CONFIG_DEFS = @elf_config_defs@
45
+
46
+ PREFIX = @prefix@
47
+ EXEC_PREFIX = @exec_prefix@
48
+ BINDIR = @bindir@
49
+ LIBDIR = @libdir@
50
+ INCLUDEDIR = @includedir@
51
+ MANDIR = @mandir@
52
+ DOCDIR = @docdir@
53
+ LIBEXECDIR = @libexecdir@
54
+
55
+ NATIVE_CC = @native_cc@
56
+ NATIVE_OS = @native_os@
57
+ NATIVE_OS_BITS = @native_os_bits@
58
+ NATIVE_OS_UNDERSCORE = @native_os_underscore@
59
+
60
+ USER_CC = @user_cc@
61
+ USER_CPP = @user_cpp@
62
+ USER_CXX = @user_cxx@
63
+
64
+ ALL_SHARED = @all_shared@
65
+ ALL_STATIC = @all_static@
66
+ DISABLE_FRONTEND = @disable_frontend@
67
+ DISABLE_SHARED = @disable_shared@
68
+ DISABLE_STATIC = @disable_static@
69
+
70
+ all:
71
+ install:
72
+ shared:
73
+ static:
74
+
75
+ install-extras:
76
+ install-app-extras:
77
+
78
+ include $(PROJECT_DIR)/sysinfo/host/$(HOST).mk
79
+ include $(PROJECT_DIR)/sysinfo/compiler/$(COMPILER).mk
80
+ include $(PROJECT_DIR)/sysinfo/toolchain/$(TOOLCHAIN).mk
81
+
82
+ include $(PROJECT_DIR)/sofort/defs.mk
83
+ include $(PROJECT_DIR)/sofort/version.mk
84
+ include $(PROJECT_DIR)/sofort/custom.mk
85
+
86
+ include $(PROJECT_DIR)/project/tree.mk
87
+ include $(PROJECT_DIR)/project/depends.mk
88
+ include $(PROJECT_DIR)/project/headers.mk
89
+ include $(PROJECT_DIR)/project/common.mk
90
+ include $(PROJECT_DIR)/project/arch.mk
91
+ include $(PROJECT_DIR)/project/extras.mk
92
+ include $(PROJECT_DIR)/project/overrides.mk
93
+
94
+
95
+
96
+ $(APP_SRCS:%.c=%.o): CFLAGS_STATIC = $(CFLAGS_APP)
97
+
98
+ src/%.lo: $(PROJECT_DIR)/src/%.c $(ALL_HEADERS) host.tag tree.tag
99
+ $(CC) -c -o $@ $< $(CFLAGS_SHARED)
100
+
101
+ src/%.o: $(PROJECT_DIR)/src/%.c $(ALL_HEADERS) host.tag tree.tag
102
+ $(CC) -c -o $@ $< $(CFLAGS_STATIC)
103
+
104
+ lib/%$(OS_LIB_SUFFIX)$(VER_XYZ):
105
+ $(CC) -shared -o $@ $^ $(LDFLAGS_SHARED)
106
+
107
+ lib/%$(OS_ARCHIVE_EXT):
108
+ rm -f $@
109
+ $(AR) rcs $@ $^
110
+
111
+
112
+
113
+ all: package-shared package-static app
114
+
115
+ install: package-install-app
116
+ install: package-install-extras
117
+ install: install-libs
118
+
119
+ app: app-tag
120
+
121
+ app.tag:
122
+ cp $(PACKAGE_APP) $(APP)
123
+ touch app.tag
124
+
125
+ install-libs: package-install-shared
126
+ install-libs: package-install-static
127
+
128
+ install-headers-default:
129
+ mkdir -p $(DESTDIR)$(INCLUDEDIR)/$(PACKAGE)
130
+ cp $(API_HEADERS) $(DESTDIR)$(INCLUDEDIR)/$(PACKAGE)
131
+
132
+ install-shared: shared install-lib install-implib
133
+ install-shared: package-install-soname package-install-solink
134
+ install-shared: install-headers
135
+
136
+ install-lib: shared
137
+ mkdir -p $(DESTDIR)$(LIBDIR)
138
+ cp $(SHARED_LIB) $(DESTDIR)$(LIBDIR)
139
+
140
+ install-static: static install-headers
141
+ mkdir -p $(DESTDIR)$(LIBDIR)
142
+ cp $(STATIC_LIB) $(DESTDIR)$(LIBDIR)
143
+
144
+ install-app: app install-app-extras
145
+ mkdir -p $(DESTDIR)$(BINDIR)
146
+ cp $(APP) $(DESTDIR)$(BINDIR)
147
+
148
+ install-static-app: static-app install-app-extras
149
+ mkdir -p $(DESTDIR)$(BINDIR)
150
+ cp $(STATIC_APP) $(DESTDIR)$(BINDIR)/$(NICKNAME)$(OS_APP_SUFFIX)
151
+
152
+
153
+
154
+ shared: shared-lib implib
155
+ shared: package-shared-soname package-shared-solink
156
+
157
+ static: static-lib
158
+
159
+ shared-lib: shared-objs $(SHARED_LIB)
160
+
161
+ shared-soname: shared-lib $(SHARED_SONAME)
162
+
163
+ shared-solink: shared-lib $(SHARED_SOLINK)
164
+
165
+ static-lib: static-objs $(STATIC_LIB)
166
+
167
+
168
+
169
+ default-app: version.tag static-objs $(DEFAULT_APP)
170
+
171
+ shared-app: version.tag shared $(SHARED_APP)
172
+
173
+ static-app: version.tag static-objs $(STATIC_APP)
174
+
175
+
176
+
177
+ shared-objs: dirs $(SHARED_OBJS)
178
+
179
+ static-objs: dirs $(STATIC_OBJS)
180
+
181
+ app-objs: dirs $(APP_OBJS)
182
+
183
+
184
+
185
+ $(SHARED_LIB): $(SHARED_OBJS)
186
+
187
+ $(STATIC_LIB): $(STATIC_OBJS)
188
+
189
+ $(APP): $(PACKAGE_APP)
190
+
191
+ $(DEFAULT_APP): $(STATIC_OBJS) $(APP_OBJS)
192
+ rm -f app.tag
193
+ $(CC) -o $@ $^ $(LDFLAGS_APP)
194
+
195
+ $(SHARED_APP): $(SHARED_LIB) $(APP_OBJS)
196
+ rm -f app.tag
197
+ $(CC) -o $@ $(APP_OBJS) -l$(PACKAGE) $(LDFLAGS_SHARED)
198
+
199
+ $(STATIC_APP): $(STATIC_OBJS) $(APP_OBJS)
200
+ rm -f app.tag
201
+ $(CC) -static -o $@ $^ $(LDFLAGS_STATIC)
202
+
203
+
204
+ dirs: dirs.tag
205
+
206
+ dirs.tag:
207
+ mkdir -p bin
208
+ mkdir -p lib
209
+ touch dirs.tag
210
+
211
+ host.tag: Makefile
212
+ $(PROJECT_DIR)/sysinfo/host/host.sh --compiler="$(CC)" --cflags="$(CFLAGS)"
213
+ touch host.tag
214
+
215
+ version.tag: $(GIT_REFERENCE_DIR)
216
+ $(PROJECT_DIR)/sysinfo/version.sh \
217
+ -s $(PROJECT_DIR) \
218
+ -o build/$(PACKAGE)_version.h \
219
+ -p $(PACKAGE)
220
+ touch version.tag
221
+
222
+ distclean: clean
223
+ rm -f Makefile
224
+
225
+ clean: clean-implib
226
+ rm -f tree.tag
227
+ rm -f dirs.tag
228
+ rm -f host.tag
229
+ rm -f version.tag
230
+ rm -f app.tag
231
+ rm -f $(SHARED_OBJS)
232
+ rm -f $(STATIC_OBJS)
233
+ rm -f $(APP_OBJS)
234
+ rm -f $(SHARED_LIB)
235
+ rm -f $(SHARED_SONAME)
236
+ rm -f $(SHARED_SOLINK)
237
+ rm -f $(STATIC_LIB)
238
+ rm -f $(APP)
239
+ rm -f $(DEFAULT_APP)
240
+ rm -f $(SHARED_APP)
241
+ rm -f $(STATIC_APP)
242
+
243
+
244
+ .display: .display-project .display-env .display-tools .display-flags \
245
+ .display-pe .display-elf .display-dirs .display-build \
246
+ .display-config
247
+
248
+ .conf: PAGER ?= less
249
+ .conf:
250
+ $(MAKE) .display | $(PAGER)
251
+
252
+ .display-project:
253
+ @echo PACKAGE:' '$(PACKAGE)
254
+ @echo NICKNAME:' '$(NICKNAME)
255
+ @echo PROJECT_DIR:' '$(PROJECT_DIR)
256
+ @echo BUILD_DIR:' '$(CURDIR)
257
+ @echo
258
+
259
+ .display-env:
260
+ @echo BUILD:' '$(BUILD)
261
+ @echo HOST:' '$(HOST)
262
+ @echo TARGET:' '$(TARGET)
263
+ @echo ARCH:' '$(ARCH)
264
+ @echo COMPILER:' '$(COMPILER)
265
+ @echo TOOLCHAIN:' '$(TOOLCHAIN)
266
+ @echo SYSROOT:' '$(SYSROOT)
267
+ @echo CROSS_COMPILE:' '$(CROSS_COMPILE)
268
+ @echo SHELL:' '$(SHELL)
269
+ @echo
270
+
271
+ .display-tools:
272
+ @echo CC:' '$(CC)
273
+ @echo CPP:' '$(CPP)
274
+ @echo CXX:' '$(CXX)
275
+ @echo
276
+ @echo AS:' '$(AS)
277
+ @echo AR:' '$(AR)
278
+ @echo LD:' '$(LD)
279
+ @echo NM:' '$(NM)
280
+ @echo OBJDUMP:' '$(OBJDUMP)
281
+ @echo RANLIB:' '$(RANLIB)
282
+ @echo SIZE:' '$(SIZE)
283
+ @echo STRIP:' '$(STRIP)
284
+ @echo STRINGS:' '$(STRINGS)
285
+ @echo
286
+ @echo ADDR2LINE:' '$(ADDR2LINE)
287
+ @echo COV:' '$(COV)
288
+ @echo CXXFILT' '$(CXXFILT)
289
+ @echo ELFEDIT:' '$(ELFEDIT)
290
+ @echo OBJCOPY:' '$(OBJCOPY)
291
+ @echo READELF:' '$(READELF)
292
+ @echo
293
+
294
+ .display-flags:
295
+ @echo CFLAGS_COMMON:' '$(CFLAGS_COMMON)
296
+ @echo CFLAGS_DEBUG:' '$(CFLAGS_DEBUG)
297
+ @echo CFLAGS_VERSION:' '$(CFLAGS_VERSION)
298
+ @echo CFLAGS_CMDLINE:' '$(CFLAGS_CMDLINE)
299
+ @echo CFLAGS_CONFIG:' '$(CFLAGS_CONFIG)
300
+ @echo CFLAGS_SYSROOT:' '$(CFLAGS_SYSROOT)
301
+ @echo CFLAGS_OS:' '$(CFLAGS_OS)
302
+ @echo CFLAGS_SITE:' '$(CFLAGS_SITE)
303
+ @echo CFLAGS_PATH:' '$(CFLAGS_PATH)
304
+ @echo CFLAGS_STRICT:' '$(CFLAGS_STRICT)
305
+ @echo CFLAGS_UTIL:' '$(CFLAGS_UTIL)
306
+ @echo
307
+ @echo LDFLAGS_COMMON:' '$(LDFLAGS_COMMON)
308
+ @echo LDFLAGS_DEBUG:' '$(LDFLAGS_DEBUG)
309
+ @echo LDFLAGS_CMDLINE:' '$(LDFLAGS_CMDLINE)
310
+ @echo LDFLAGS_CONFIG:' '$(LDFLAGS_CONFIG)
311
+ @echo LDFLAGS_SYSROOT:' '$(LDFLAGS_SYSROOT)
312
+ @echo LDFLAGS_PATH:' '$(LDFLAGS_PATH)
313
+ @echo LDFLAGS_STRICT:' '$(LDFLAGS_STRICT)
314
+ @echo LDFLAGS_UTIL:' '$(LDFLAGS_UTIL)
315
+ @echo
316
+
317
+ .display-pe:
318
+ @echo PE_SUBSYSTEM:' '$(PE_SUBSYSTEM)
319
+ @echo PE_IMAGE_BASE:' '$(PE_IMAGE_BASE)
320
+ @echo PE_CONFIG_DEFS:' '$(PE_CONFIG_DEFS)
321
+ @echo
322
+
323
+ .display-elf:
324
+ @echo ELF_EH_FRAME:' '$(ELF_EH_FRAME)
325
+ @echo ELF_HASH_STYLE:' '$(ELF_HASH_STYLE)
326
+ @echo ELF_CONFIG_DEFS:' '$(ELF_CONFIG_DEFS)
327
+ @echo
328
+
329
+ .display-dirs:
330
+ @echo PREFIX:' '$(PREFIX)
331
+ @echo EXEC_PREFIX:' '$(EXEC_PREFIX)
332
+ @echo BINDIR:' '$(BINDIR)
333
+ @echo LIBDIR:' '$(LIBDIR)
334
+ @echo INCLUDEDIR:' '$(INCLUDEDIR)
335
+ @echo MANDIR:' '$(MANDIR)
336
+ @echo DOCDIR:' '$(DOCDIR)
337
+ @echo LIBEXECDIR:' '$(LIBEXECDIR)
338
+ @echo
339
+
340
+ .display-build:
341
+ @echo NATIVE_CC:' '$(NATIVE_CC)
342
+ @echo NATIVE_OS:' '$(NATIVE_OS)
343
+ @echo NATIVE_OS_BITS:' '$(NATIVE_OS_BITS)
344
+ @echo NATIVE_OS_UNDERSCORE:' '$(NATIVE_OS_UNDERSCORE)
345
+ @echo
346
+ @echo USER_CC:' '$(USER_CC)
347
+ @echo USER_CPP:' '$(USER_CPP)
348
+ @echo USER_CXX:' '$(USER_CXX)
349
+ @echo
350
+
351
+ .display-config:
352
+ @echo ALL_SHARED:' '$(ALL_SHARED)
353
+ @echo ALL_STATIC:' '$(ALL_STATIC)
354
+ @echo DISABLE_FRONTEND:' '$(DISABLE_FRONTEND)
355
+ @echo DISABLE_SHARED:' '$(DISABLE_SHARED)
356
+ @echo DISABLE_STATIC:' '$(DISABLE_STATIC)
357
+
358
+ .display-host:
359
+ @$(CC) $(CFLAGS) -dumpmachine
360
+
361
+ .display-cc:
362
+ @echo $(CC)
363
+
364
+ .display-cflags:
365
+ @echo $(CFLAGS)
366
+
367
+
368
+ .PHONY: all install shared static app \
369
+ package-app \
370
+ shared-objs shared-lib \
371
+ shared-soname shared-solink \
372
+ package-shared-soname package-shared-solink \
373
+ static-objs static-lib \
374
+ default-app shared-app static-app \
375
+ install-shared install-static \
376
+ install-soname install-solink \
377
+ package-install-soname package-install-solink \
378
+ install-headers install-app \
379
+ install-headers-default install-headers-custom \
380
+ clean distclean clean-implib version \
381
+ .display .conf \
382
+ .display-project .display-env .display-tools .display-flags \
383
+ .display-pe .display-elf .display-dirs .display-build \
384
+ implib implib-ver implib-soname implib-solink \
385
+ install-implib install-implib-ver \
386
+ install-implib-soname install-implib-solink
file added
+57
config.project ADDED
@@ -0,0 +1,57 @@
1
+ # project
2
+ mb_package=cparser
3
+ mb_require_out_of_tree=no
4
+ mb_custom_install_headers=yes
5
+ mb_avoid_version=no
6
+
7
+
8
+ # build
9
+ mb_default_build=
10
+ mb_default_host=
11
+ mb_default_target=
12
+ mb_default_arch=
13
+ mb_default_compiler=
14
+ mb_default_toolchain=
15
+ mb_default_sysroot=
16
+ mb_default_cross_compile=
17
+ mb_default_shell=sh
18
+
19
+
20
+ # switches
21
+ mb_default_cflags_common="-std=c99 -D_XOPEN_SOURCE=700"
22
+ mb_default_cflags_common="$mb_default_cflags_common -I\$(PROJECT_DIR)/src/internal"
23
+ mb_default_cflags_common="$mb_default_cflags_common -I\$(PROJECT_DIR)/include"
24
+ mb_default_cflags_common="$mb_default_cflags_common -Ibuild"
25
+
26
+ mb_default_cflags_debug=
27
+ mb_default_cflags_cmdline=
28
+ mb_default_cflags_config=
29
+ mb_default_cflags_sysroot=
30
+ mb_default_cflags_path=
31
+ mb_default_cflags_strict=
32
+ mb_default_cflags_util=
33
+
34
+ mb_default_ldflags_common="-Llib"
35
+ mb_default_ldflags_debug=
36
+ mb_default_ldflags_cmdline=
37
+ mb_default_ldflags_config=
38
+ mb_default_ldflags_sysroot=
39
+ mb_default_ldflags_path=
40
+ mb_default_ldflags_strict=
41
+ mb_default_ldflags_util=
42
+
43
+ mb_default_pe_subsystem=windows
44
+ mb_default_pe_image_base=
45
+ mb_default_pe_config_defs=
46
+
47
+ mb_default_elf_eh_frame=
48
+ mb_default_elf_hash_style=
49
+ mb_default_elf_config_defs=
50
+
51
+
52
+ # config
53
+ mb_all_static=
54
+ mb_all_shared=
55
+ mb_disable_frontend=
56
+ mb_disable_static=
57
+ mb_disable_shared=
file added
+105
config.usage ADDED
@@ -0,0 +1,105 @@
1
+ configure: a skinny configuration script.
2
+
3
+ supported switches:
4
+ -------------------
5
+ --help
6
+
7
+ --nickname
8
+ --avoid-version
9
+
10
+ --prefix
11
+ --exec-prefix
12
+ --bindir
13
+ --libdir
14
+ --includedir
15
+ --mandir
16
+ --docdir
17
+ --libexecdir
18
+
19
+ --build
20
+ --host
21
+ --target
22
+ --arch
23
+ --compiler
24
+ --toolchain
25
+ --sysroot
26
+ --cross-compile
27
+ --shell
28
+ --debug
29
+
30
+ --strict
31
+ --ccstrict
32
+ --ldstrict
33
+
34
+ --all-static
35
+ --all-shared
36
+ --enable-static
37
+ --enable-shared
38
+ --disable-static
39
+ --disable-shared
40
+
41
+ --enable-app
42
+ --enable-frontend
43
+ --disable-app
44
+ --disable-frontend
45
+
46
+
47
+ supported variables:
48
+ --------------------
49
+ NICKNAME
50
+
51
+ PREFIX
52
+ EXEC_PREFIX
53
+ BINDIR
54
+ LIBDIR
55
+ INCLUDEDIR
56
+ MANDIR
57
+ DOCDIR
58
+ LIBEXECDIR
59
+
60
+ CC
61
+ CPP
62
+ CXX
63
+
64
+ BUILD
65
+ HOST
66
+ TARGET
67
+ ARCH
68
+ COMPILER
69
+ TOOLCHAIN
70
+ SYSROOT
71
+ CROSS_COMPILE
72
+ SHELL
73
+
74
+ CFLAGS
75
+ CFLAGS_DEBUG
76
+ CFLAGS_COMMON
77
+ CFLAGS_CMDLINE
78
+ CFLAGS_CONFIG
79
+ CFLAGS_SYSROOT
80
+ CFLAGS_PATH
81
+ CFLAGS_STRICT
82
+ CFLAGS_UTIL
83
+
84
+ LDFLAGS
85
+ LDFLAGS_DEBUG
86
+ LDFLAGS_COMMON
87
+ LDFLAGS_CMDLINE
88
+ LDFLAGS_CONFIG
89
+ LDFLAGS_SYSROOT
90
+ LDFLAGS_PATH
91
+ LDFLAGS_STRICT
92
+ LDFLAGS_UTIL
93
+
94
+ PE_SUBSYSTEM
95
+ PE_IMAGE_BASE
96
+ PE_CONFIG_DEFS
97
+
98
+ ELF_EH_FRAME
99
+ ELF_HASH_STYLE
100
+ ELF_CONFIG_DEFS
101
+
102
+ NATIVE_CC
103
+ NATIVE_OS
104
+ NATIVE_OS_BITS
105
+ NATIVE_OS_UNDERSCORE
file added
+614
configure ADDED
@@ -0,0 +1,614 @@
1
+ #!/bin/sh
2
+ # we are no longer lazy.
3
+
4
+ # this script respects both CFLAGS and CFLAGS_CMDLINE,
5
+ # as well as both LDFLAGS and LDFLAGS_CMDLINE, however
6
+ # the latter variable of each pair should be preferred.
7
+
8
+ usage()
9
+ {
10
+ cat "$mb_project_dir"/config.usage
11
+ exit $?
12
+ }
13
+
14
+ error_msg()
15
+ {
16
+ echo "$@" >&2
17
+ }
18
+
19
+
20
+ init_vars()
21
+ {
22
+ mb_project_dir=$(cd `dirname $0` ; pwd)
23
+ mb_pwd=`pwd`
24
+
25
+ if [ -z "$mb_config" ]; then
26
+ . $mb_project_dir/config.project || exit 2
27
+ else
28
+ . "$mb_config" || exit 2
29
+ fi
30
+
31
+ # git
32
+ if [ -d "$mb_project_dir/.git" ]; then
33
+ mb_git_reference_dir="\$(PROJECT_DIR)/.git"
34
+ fi
35
+
36
+ # project
37
+ mb_nickname=$NICKNAME
38
+
39
+ # dirs
40
+ mb_prefix=$PREFIX
41
+ mb_exec_prefix=$EXEC_PREFIX
42
+ mb_bindir=$BINDIR
43
+ mb_libdir=$LIBDIR
44
+ mb_includedir=$INCLUDEDIR
45
+ mb_mandir=$MANDIR
46
+ mb_docdir=$DOCDIR
47
+ mb_libexecdir=$LIBEXECDIR
48
+
49
+
50
+ # build
51
+ mb_build=$BUILD
52
+ mb_host=$HOST
53
+ mb_target=$TARGET
54
+ mb_arch=$ARCH
55
+ mb_compiler=$COMPILER
56
+ mb_toolchain=$TOOLCHAIN
57
+ mb_sysroot=$SYSROOT
58
+ mb_cross_compile=$CROSS_COMPILE
59
+ mb_shell=$SHELL
60
+
61
+ # switches
62
+ mb_cflags=$CFLAGS
63
+ mb_cflags_debug=$CFLAGS_DEBUG
64
+ mb_cflags_common=$CFLAGS_COMMON
65
+ mb_cflags_cmdline=$CFLAGS_CMDLINE
66
+ mb_cflags_config=$CFLAGS_CONFIG
67
+ mb_cflags_sysroot=$CFLAGS_SYSROOT
68
+ mb_cflags_os=$CFLAGS_OS
69
+ mb_cflags_site=$CFLAGS_SITE
70
+ mb_cflags_path=$CFLAGS_PATH
71
+ mb_cflags_strict=$CFLAGS_STRICT
72
+ mb_cflags_util=$CFLAGS_UTIL
73
+
74
+ mb_ldflags=$LDFLAGS
75
+ mb_ldflags_debug=$LDFLAGS_DEBUG
76
+ mb_ldflags_common=$LDFLAGS_COMMON
77
+ mb_ldflags_cmdline=$LDFLAGS_CMDLINE
78
+ mb_ldflags_config=$LDFLAGS_CONFIG
79
+ mb_ldflags_sysroot=$LDFLAGS_SYSROOT
80
+ mb_ldflags_path=$LDFLAGS_PATH
81
+ mb_ldflags_strict=$LDFLAGS_STRICT
82
+ mb_ldflags_util=$LDFLAGS_UTIL
83
+
84
+ mb_pe_subsystem=$PE_SUBSYSTEM
85
+ mb_pe_image_base=$PE_IMAGE_BASE
86
+ mb_pe_config_defs=$PE_CONFIG_DEFS
87
+
88
+ mb_elf_eh_frame=$ELF_EH_FRAME
89
+ mb_elf_hash_style=$ELF_HASH_STYLE
90
+ mb_elf_config_defs=$ELF_CONFIG_DEFS
91
+
92
+ # overrides
93
+ mb_native_cc=$NATIVE_CC
94
+ mb_native_os=$NATIVE_OS
95
+ mb_native_os_bits=$NATIVE_OS_BITS
96
+ mb_native_os_underscore=$NATIVE_OS_UNDERSCORE
97
+
98
+ mb_user_cc=$CC
99
+ mb_user_cpp=$CPP
100
+ mb_user_cxx=$CXX
101
+ }
102
+
103
+
104
+ verify_build_directory()
105
+ {
106
+ if [ "$mb_project_dir" = "$mb_pwd" ]; then
107
+ if [ "$mb_require_out_of_tree" = yes ]; then
108
+ error_msg "$mb_package: out-of-tree builds are required."
109
+ error_msg "please invoke configure again from a clean build directory."
110
+ exit 2
111
+ else
112
+ mb_project_dir='.'
113
+ fi
114
+ fi
115
+ }
116
+
117
+
118
+ common_defaults()
119
+ {
120
+ # project
121
+ [ -z "$mb_nickname" ] && mb_nickname=$mb_package
122
+ [ -z "$mb_avoid_version" ] && mb_avoid_version='no'
123
+
124
+ # dirs
125
+ [ -z "$mb_prefix" ] && [ -z "$mb_prefix_set" ] \
126
+ && mb_prefix='/usr/local'
127
+
128
+ [ -z "$mb_exec_prefix" ] && [ -z "$mb_exec_prefix_set" ] \
129
+ && mb_exec_prefix=$mb_prefix
130
+
131
+ [ -z "$mb_bindir" ] && mb_bindir=$mb_exec_prefix/bin
132
+ [ -z "$mb_libdir" ] && mb_libdir=$mb_exec_prefix/lib
133
+ [ -z "$mb_includedir" ] && mb_includedir=$mb_prefix/include
134
+ [ -z "$mb_datarootdir" ] && mb_datarootdir=$mb_prefix/share
135
+ [ -z "$mb_mandir" ] && mb_mandir=$mb_datarootdir/man
136
+ [ -z "$mb_docdir" ] && mb_docdir=$mb_datarootdir/doc
137
+ [ -z "$mb_libexecdir" ] && mb_libexecdir=$mb_exec_prefix/libexec
138
+
139
+ # build
140
+ [ -z "$mb_build" ] && mb_build=$mb_default_build
141
+ [ -z "$mb_host" ] && mb_host=$mb_default_host
142
+ [ -z "$mb_target" ] && mb_target=$mb_default_target
143
+ [ -z "$mb_arch" ] && mb_arch=$mb_default_arch
144
+ [ -z "$mb_compiler" ] && mb_compiler=$mb_default_compiler
145
+ [ -z "$mb_toolchain" ] && mb_toolchain=$mb_default_toolchain
146
+ [ -z "$mb_sysroot" ] && mb_sysroot=$mb_default_sysroot
147
+ [ -z "$mb_cross_compile" ] && mb_cross_compile=$mb_default_cross_compile
148
+ [ -z "$mb_shell" ] && mb_shell=$mb_default_shell
149
+
150
+ # switches
151
+ [ -z "$mb_cflags_debug" ] && mb_cflags_debug=$mb_default_cflags_debug
152
+ [ -z "$mb_cflags_common" ] && mb_cflags_common=$mb_default_cflags_common
153
+ [ -z "$mb_cflags_cmdline" ] && mb_cflags_cmdline=$mb_default_cflags_cmdline
154
+ [ -z "$mb_cflags_config" ] && mb_cflags_config=$mb_default_cflags_config
155
+ [ -z "$mb_cflags_sysroot" ] && mb_cflags_sysroot=$mb_default_cflags_sysroot
156
+ [ -z "$mb_cflags_os" ] && mb_cflags_os=$mb_default_cflags_os
157
+ [ -z "$mb_cflags_site" ] && mb_cflags_site=$mb_default_cflags_site
158
+ [ -z "$mb_cflags_path" ] && mb_cflags_path=$mb_default_cflags_path
159
+ [ -z "$mb_cflags_strict" ] && mb_cflags_strict=$mb_default_cflags_strict
160
+ [ -z "$mb_cflags_util" ] && mb_cflags_util=$mb_default_cflags_util
161
+
162
+ [ -z "$mb_ldflags_debug" ] && mb_ldflags_debug=$mb_default_ldflags_debug
163
+ [ -z "$mb_ldflags_common" ] && mb_ldflags_common=$mb_default_ldflags_common
164
+ [ -z "$mb_ldflags_cmdline" ] && mb_ldflags_cmdline=$mb_default_ldflags_cmdline
165
+ [ -z "$mb_ldflags_config" ] && mb_ldflags_config=$mb_default_ldflags_config
166
+ [ -z "$mb_ldflags_sysroot" ] && mb_ldflags_sysroot=$mb_default_ldflags_sysroot
167
+ [ -z "$mb_ldflags_path" ] && mb_ldflags_path=$mb_default_ldflags_path
168
+ [ -z "$mb_ldflags_strict" ] && mb_ldflags_strict=$mb_default_ldflags_strict
169
+ [ -z "$mb_ldflags_util" ] && mb_ldflags_util=$mb_default_ldflags_util
170
+
171
+ [ -z "$mb_pe_subsystem" ] && mb_pe_subsystem=$mb_default_pe_subsystem
172
+ [ -z "$mb_pe_image_base" ] && mb_pe_image_base=$mb_default_pe_image_base
173
+ [ -z "$mb_pe_config_defs" ] && mb_pe_config_defs=$mb_default_pe_config_defs
174
+
175
+ [ -z "$mb_elf_eh_frame" ] && mb_elf_eh_frame=$mb_default_elf_eh_frame
176
+ [ -z "$mb_elf_hash_style" ] && mb_elf_hash_style=$mb_default_elf_hash_style
177
+ [ -z "$mb_elf_config_defs" ] && mb_elf_config_defs=$mb_default_elf_config_defs
178
+
179
+ # config
180
+ [ -z "$mb_all_static" ] && mb_all_static='no'
181
+ [ -z "$mb_all_shared" ] && mb_all_shared='no'
182
+ [ -z "$mb_disable_frontend" ] && mb_disable_frontend='no'
183
+ [ -z "$mb_disable_static" ] && mb_disable_static='no'
184
+ [ -z "$mb_disable_shared" ] && mb_disable_shared='no'
185
+
186
+ # host/target
187
+ [ -z "$mb_host" ] && mb_host=$mb_target
188
+ [ -z "$mb_target" ] && mb_target=$mb_host
189
+
190
+ # sysroot
191
+ if [ -n "$mb_sysroot" ]; then
192
+ if [ -z "$mb_cflags_sysroot" ]; then
193
+ mb_cflags_sysroot="--sysroot=$mb_sysroot"
194
+ fi
195
+
196
+ if [ -z "$mb_ldflags_sysroot" ]; then
197
+ mb_ldflags_sysroot="-Wl,--sysroot,$mb_sysroot"
198
+ fi
199
+ fi
200
+
201
+ # debug
202
+ if [ "$mb_debug" = yes ]; then
203
+ if [ -z "$mb_cflags_debug" ]; then
204
+ mb_cflags_debug='-g3 -O0'
205
+ fi
206
+ fi
207
+
208
+ # compiler
209
+ if [ -n "$mb_compiler" ]; then
210
+ if [ -z "$mb_native_cc" ]; then
211
+ mb_native_cc=$mb_compiler
212
+ fi
213
+ fi
214
+
215
+ # toolchain
216
+ if [ -z "$mb_toolchain" ]; then
217
+ mb_toolchain='binutils'
218
+ fi
219
+
220
+ # fallback host recipe
221
+ if [ -n "$mb_host" ]; then
222
+ if ! [ -f $mb_project_dir/sysinfo/host/$mb_host.mk ]; then
223
+ if [ -z "$mb_cross_compile" ]; then
224
+ mb_cross_compile=$mb_host-
225
+ fi
226
+
227
+ mb_host='any-host';
228
+ fi
229
+ fi
230
+
231
+ # fallback compiler recipe
232
+ if [ -n "$mb_compiler" ]; then
233
+ if ! [ -f $mb_project_dir/sysinfo/compiler/$mb_compiler.mk ]; then
234
+ mb_compiler='any-compiler'
235
+ fi
236
+ fi
237
+ }
238
+
239
+
240
+ native_defaults()
241
+ {
242
+ # CC (when set, must be valid)
243
+ if [ -n "$CC" ]; then
244
+ $CC -dM -E - < /dev/null > /dev/null || exit 2
245
+ fi
246
+
247
+ # compiler
248
+ [ -z "$mb_native_cc" ] && mb_native_cc=$CC
249
+ [ -z "$mb_native_cc" ] && mb_native_cc='cc'
250
+ $mb_native_cc -dM -E - < /dev/null > /dev/null 2>/dev/null || mb_native_cc=
251
+
252
+ [ -z "$mb_native_cc" ] && mb_native_cc='gcc'
253
+ $mb_native_cc -dM -E - < /dev/null > /dev/null 2>/dev/null || mb_native_cc=
254
+
255
+ [ -z "$mb_native_cc" ] && mb_native_cc='clang'
256
+ $mb_native_cc -dM -E - < /dev/null > /dev/null 2>/dev/null || mb_native_cc=
257
+
258
+ [ -z "$mb_native_cc" ] && mb_native_cc='cparser'
259
+ $mb_native_cc -dM -E - < /dev/null > /dev/null 2>/dev/null || mb_native_cc=
260
+
261
+ if [ -z "$mb_native_cc" ]; then
262
+ echo "configure: info: could not find a working native compiler."
263
+ mb_native_cc='false'
264
+ fi
265
+
266
+ if [ -z "$mb_compiler" ]; then
267
+ $mb_native_cc -dM -E - < /dev/null | grep '__clang__' > /dev/null && mb_compiler='clang'
268
+ fi
269
+
270
+ if [ -z "$mb_compiler" ]; then
271
+ $mb_native_cc -dM -E - < /dev/null | grep '__GCC' > /dev/null && mb_compiler='gcc'
272
+ fi
273
+
274
+ if [ -z "$mb_compiler" ]; then
275
+ $mb_native_cc -dM -E - < /dev/null | grep '__CPARSER__' > /dev/null && mb_compiler='cparser'
276
+ fi
277
+
278
+ if [ -z "$mb_compiler" ]; then
279
+ echo "configure: info: could not identify the native compiler."
280
+ mb_compiler='any-compiler'
281
+ fi
282
+
283
+
284
+ # host
285
+ if [ -z "$mb_host" ]; then
286
+ mb_host='native'
287
+ fi
288
+
289
+
290
+ # target
291
+ if [ -z "$mb_target" ]; then
292
+ mb_target='native'
293
+ fi
294
+
295
+
296
+ # os
297
+ mb_native_os=`uname | tr '[:upper:]' '[:lower:]'`
298
+
299
+ mb_native_os_sizeof_pointer=`$mb_native_cc -dM -E - < /dev/null \
300
+ | grep __SIZEOF_POINTER__ \
301
+ | cut -d ' ' -f3`
302
+
303
+ mb_native_os_bits=`expr '8' '*' '0'"$mb_native_os_sizeof_pointer"`
304
+
305
+ if [ $mb_native_os_bits = 32 ]; then
306
+ mb_native_os_underscore='_'
307
+ else
308
+ mb_native_os_underscore=''
309
+ fi
310
+
311
+ if [ -z "$mb_native_os_sizeof_pointer" ]; then
312
+ error_msg "config error: could not determine size of pointer on native system."
313
+ exit 2
314
+ fi
315
+
316
+ # fallback os recipe
317
+ if ! [ -f $mb_project_dir/sysinfo/os/$mb_native_os.mk ]; then
318
+ mb_native_os='any-os';
319
+ fi
320
+ }
321
+
322
+
323
+ cross_defaults()
324
+ {
325
+ if [ -z "$mb_cross_compile" ] && [ "$mb_host" != native ]; then
326
+ mb_cross_compile=$mb_host'-'
327
+ fi
328
+ }
329
+
330
+
331
+ config_flags()
332
+ {
333
+ mb_ldflags_tmp=" $mb_ldflags "
334
+ mb_ldflags_libs=`echo "$mb_ldflags_tmp" | sed 's/ -static / /g'`
335
+
336
+ if [ "$mb_ldflags_tmp" != "$mb_ldflags_libs" ]; then
337
+ mb_ldflags="$mb_ldflags_libs"
338
+ mb_ldflags_util="$mb_ldflags_util -static"
339
+ fi
340
+
341
+ # ccstrict
342
+ if [ "$mb_ccstrict" = 'yes' ]; then
343
+ mb_cflags_strict='-Wall -Werror -Wextra -Wundef'
344
+ fi
345
+
346
+ # ldstrict
347
+ if [ "$mb_ldstrict" = 'yes' ]; then
348
+ mb_ldflags_strict='-Wl,--no-undefined'
349
+ fi
350
+ }
351
+
352
+
353
+ config_copy()
354
+ {
355
+ sed -e 's^@package@^'"$mb_package"'^g' \
356
+ -e 's^@nickname@^'"$mb_nickname"'^g' \
357
+ -e 's^@project_dir@^'"$mb_project_dir"'^g' \
358
+ -e 's^@git_reference_dir@^'"$mb_git_reference_dir"'^g' \
359
+ -e 's^@custom_install_headers@^'"$mb_custom_install_headers"'^g' \
360
+ -e 's^@avoid_version@^'"$mb_avoid_version"'^g' \
361
+ \
362
+ -e 's^@build@^'"$mb_build"'^g' \
363
+ -e 's^@host@^'"$mb_host"'^g' \
364
+ -e 's^@target@^'"$mb_target"'^g' \
365
+ -e 's^@arch@^'"$mb_arch"'^g' \
366
+ -e 's^@compiler@^'"$mb_compiler"'^g' \
367
+ -e 's^@toolchain@^'"$mb_toolchain"'^g' \
368
+ -e 's^@sysroot@^'"$mb_sysroot"'^g' \
369
+ -e 's^@cross_compile@^'"$mb_cross_compile"'^g' \
370
+ -e 's^@shell@^'"$mb_shell"'^g' \
371
+ \
372
+ -e 's^@cflags@^'"$mb_cflags"'^g' \
373
+ -e 's^@cflags_debug@^'"$mb_cflags_debug"'^g' \
374
+ -e 's^@cflags_common@^'"$mb_cflags_common"'^g' \
375
+ -e 's^@cflags_cmdline@^'"$mb_cflags $mb_cflags_cmdline"'^g' \
376
+ -e 's^@cflags_config@^'"$mb_cflags_config"'^g' \
377
+ -e 's^@cflags_sysroot@^'"$mb_cflags_sysroot"'^g' \
378
+ -e 's^@cflags_os@^'"$mb_cflags_os"'^g' \
379
+ -e 's^@cflags_site@^'"$mb_cflags_site"'^g' \
380
+ -e 's^@cflags_path@^'"$mb_cflags_path"'^g' \
381
+ -e 's^@cflags_strict@^'"$mb_cflags_strict"'^g' \
382
+ -e 's^@cflags_util@^'"$mb_cflags_util"'^g' \
383
+ \
384
+ -e 's^@ldflags@^'"$mb_ldflags"'^g' \
385
+ -e 's^@ldflags_debug@^'"$mb_ldflags_debug"'^g' \
386
+ -e 's^@ldflags_common@^'"$mb_ldflags_common"'^g' \
387
+ -e 's^@ldflags_cmdline@^'"$mb_ldflags $mb_ldflags_cmdline"'^g' \
388
+ -e 's^@ldflags_config@^'"$mb_ldflags_config"'^g' \
389
+ -e 's^@ldflags_sysroot@^'"$mb_ldflags_sysroot"'^g' \
390
+ -e 's^@ldflags_path@^'"$mb_ldflags_path"'^g' \
391
+ -e 's^@ldflags_strict@^'"$mb_ldflags_strict"'^g' \
392
+ -e 's^@ldflags_util@^'"$mb_ldflags_util"'^g' \
393
+ \
394
+ -e 's^@pe_subsystem@^'"$mb_pe_subsystem"'^g' \
395
+ -e 's^@pe_image\_base@^'"$mb_pe_image_base"'^g' \
396
+ -e 's^@pe_config\_defs@^'"$mb_pe_config_defs"'^g' \
397
+ \
398
+ -e 's^@elf_eh\_frame@^'"$mb_elf_eh_frame"'^g' \
399
+ -e 's^@elf_hash\_style@^'"$mb_elf_hash_style"'^g' \
400
+ -e 's^@elf_config\_defs@^'"$mb_elf_config_defs"'^g' \
401
+ \
402
+ -e 's^@prefix@^'"$mb_prefix"'^g' \
403
+ -e 's^@exec_prefix@^'"$mb_exec_prefix"'^g' \
404
+ -e 's^@bindir@^'"$mb_bindir"'^g' \
405
+ -e 's^@libdir@^'"$mb_libdir"'^g' \
406
+ -e 's^@includedir@^'"$mb_includedir"'^g' \
407
+ -e 's^@mandir@^'"$mb_mandir"'^g' \
408
+ -e 's^@docdir@^'"$mb_docdir"'^g' \
409
+ -e 's^@libexecdir@^'"$mb_libexecdir"'^g' \
410
+ \
411
+ -e 's^@native_cc@^'"$mb_native_cc"'^g' \
412
+ -e 's^@native_os@^'"$mb_native_os"'^g' \
413
+ -e 's^@native_os_bits@^'"$mb_native_os_bits"'^g' \
414
+ -e 's^@native_os_underscore@^'"$mb_native_os_underscore"'^g' \
415
+ \
416
+ -e 's^@user_cc@^'"$mb_user_cc"'^g' \
417
+ -e 's^@user_cpp@^'"$mb_user_cpp"'^g' \
418
+ -e 's^@user_cxx@^'"$mb_user_cxx"'^g' \
419
+ \
420
+ -e 's^@all_static@^'"$mb_all_static"'^g' \
421
+ -e 's^@all_shared@^'"$mb_all_shared"'^g' \
422
+ -e 's^@disable_frontend@^'"$mb_disable_frontend"'^g' \
423
+ -e 's^@disable_static@^'"$mb_disable_static"'^g' \
424
+ -e 's^@disable_shared@^'"$mb_disable_shared"'^g' \
425
+ $mb_project_dir/Makefile.in > $mb_pwd/Makefile
426
+ }
427
+
428
+
429
+ config_support()
430
+ {
431
+ [ "$mb_disable_shared" = 'yes' ] && return 0
432
+
433
+ mbt_cc=`make .display-cc`
434
+ mbt_cflags=`make .display-cflags`
435
+ mbt_source='int foo(int x){return ++x;}'
436
+ mbt_result='no'
437
+
438
+ rm -f a.out
439
+ echo "$mbt_source" | "$mbt_cc" -shared -o a.out -xc -
440
+ stat a.out >/dev/null 2>&1 && mbt_result='yes'
441
+ rm -f a.out
442
+
443
+ if [ "$mbt_result" = 'no' ]; then
444
+ mb_disable_shared='yes'
445
+ config_copy
446
+ fi
447
+ }
448
+
449
+
450
+ config_host()
451
+ {
452
+ make -s host.tag && return 0
453
+
454
+ error_msg "configure was able to generate a Makefile for the selected host,"
455
+ error_msg "however the host-targeting compiler was found to be missing"
456
+ error_msg "at least one of the required headers or features."
457
+ exit 2
458
+ }
459
+
460
+
461
+ config_status()
462
+ {
463
+ printf "\n\n"
464
+ make .display
465
+ printf "\nconfiguration completed successfully.\n\n"
466
+ }
467
+
468
+ # one: init
469
+ init_vars
470
+ verify_build_directory
471
+
472
+
473
+ # two: args
474
+ for arg ; do
475
+ case "$arg" in
476
+ --help) usage
477
+ ;;
478
+
479
+ # dirs
480
+ --prefix=*)
481
+ mb_prefix_set=yes
482
+ mb_prefix=${arg#*=}
483
+ ;;
484
+ --exec-prefix=*)
485
+ mb_exec_prefix_set=yes
486
+ mb_exec_prefix=${arg#*=}
487
+ ;;
488
+ --bindir=*)
489
+ mb_bindir=${arg#*=}
490
+ ;;
491
+ --libdir=*)
492
+ mb_libdir=${arg#*=}
493
+ ;;
494
+ --includedir=*)
495
+ mb_includedir=${arg#*=}
496
+ ;;
497
+ --mandir=*)
498
+ mb_mandir=${arg#*=}
499
+ ;;
500
+ --libexecdir=*)
501
+ mb_libexecdir=${arg#*=}
502
+ ;;
503
+
504
+
505
+ # build
506
+ --build=*)
507
+ mb_build=${arg#*=}
508
+ ;;
509
+ --host=*)
510
+ mb_host=${arg#*=}
511
+ ;;
512
+ --target=*)
513
+ mb_target=${arg#*=}
514
+ ;;
515
+ --arch=*)
516
+ mb_arch=${arg#*=}
517
+ ;;
518
+ --compiler=*)
519
+ mb_compiler=${arg#*=}
520
+ ;;
521
+ --toolchain=*)
522
+ mb_toolchain=${arg#*=}
523
+ ;;
524
+ --sysroot=*)
525
+ mb_sysroot=${arg#*=}
526
+ ;;
527
+ --cross-compile=*)
528
+ mb_cross_compile=${arg#*=}
529
+ ;;
530
+ --shell=*)
531
+ mb_shell=${arg#*=}
532
+ ;;
533
+ --debug)
534
+ mb_debug='yes'
535
+ ;;
536
+
537
+ # config
538
+ --all-static)
539
+ mb_all_static='yes'
540
+ ;;
541
+ --all-shared)
542
+ mb_all_shared='yes'
543
+ ;;
544
+ --disable-frontend)
545
+ mb_disable_frontend='yes'
546
+ ;;
547
+ --disable-app)
548
+ mb_disable_frontend='yes'
549
+ ;;
550
+ --enable-frontend)
551
+ mb_disable_frontend='no'
552
+ ;;
553
+ --enable-app)
554
+ mb_disable_frontend='no'
555
+ ;;
556
+ --disable-static)
557
+ mb_disable_static='yes'
558
+ ;;
559
+ --disable-shared)
560
+ mb_disable_shared='yes'
561
+ ;;
562
+ --enable-static)
563
+ mb_disable_static='no'
564
+ ;;
565
+ --enable-shared)
566
+ mb_disable_shared='no'
567
+ ;;
568
+
569
+ # convenience
570
+ --strict)
571
+ mb_ccstrict='yes'
572
+ mb_ldstrict='yes'
573
+ ;;
574
+ --ccstrict)
575
+ mb_ccstrict='yes'
576
+ ;;
577
+ --ldstrict)
578
+ mb_ldstrict='yes'
579
+ ;;
580
+
581
+ # project
582
+ --nickname=*)
583
+ mb_nickname=${arg#*=}
584
+ ;;
585
+ --avoid-version)
586
+ mb_avoid_version='yes'
587
+ ;;
588
+
589
+ *)
590
+ error_msg ${arg#}: "unsupported config argument."
591
+ exit 2
592
+ ;;
593
+ esac
594
+ done
595
+
596
+
597
+
598
+ # three: defaults
599
+ common_defaults
600
+ native_defaults
601
+ cross_defaults
602
+
603
+
604
+
605
+ # four: config
606
+ config_flags
607
+ config_copy
608
+ config_support
609
+ config_host
610
+ config_status
611
+
612
+
613
+ # all done
614
+ exit 0
file added
+0
empty file added
file added
+3
project/common.mk ADDED
@@ -0,0 +1,3 @@
1
+ COMMON_SRCS = \
2
+
3
+ APP_SRCS = \
file added
+0
empty file added
file added
+34
project/extras.mk ADDED
@@ -0,0 +1,34 @@
1
+ CFLAGS_PATH += -I$(PROJECT_DIR)/include/cparser
2
+ CFLAGS_PATH += -I$(PROJECT_DIR)/include/cparser/adt
3
+ CFLAGS_PATH += -I$(PROJECT_DIR)/include/cparser/ast
4
+ CFLAGS_PATH += -I$(PROJECT_DIR)/include/cparser/driver
5
+ CFLAGS_PATH += -I$(PROJECT_DIR)/include/cparser/firm
6
+ CFLAGS_PATH += -I$(PROJECT_DIR)/include/cparser/parser
7
+ CFLAGS_PATH += -I$(PROJECT_DIR)/include/cparser/wrappergen
8
+
9
+ install-headers-custom:
10
+ mkdir -p $(DESTDIR)$(INCLUDEDIR)/$(PACKAGE)
11
+ mkdir -p $(DESTDIR)$(INCLUDEDIR)/$(PACKAGE)/adt
12
+ mkdir -p $(DESTDIR)$(INCLUDEDIR)/$(PACKAGE)/ast
13
+ mkdir -p $(DESTDIR)$(INCLUDEDIR)/$(PACKAGE)/driver
14
+ mkdir -p $(DESTDIR)$(INCLUDEDIR)/$(PACKAGE)/firm
15
+ mkdir -p $(DESTDIR)$(INCLUDEDIR)/$(PACKAGE)/parser
16
+ mkdir -p $(DESTDIR)$(INCLUDEDIR)/$(PACKAGE)/wrappergen
17
+
18
+ cp $(PROJECT_DIR)/include/cparser/adt/*.h \
19
+ $(DESTDIR)$(INCLUDEDIR)/$(PACKAGE)/adt
20
+
21
+ cp $(PROJECT_DIR)/include/cparser/ast/*.h \
22
+ $(DESTDIR)$(INCLUDEDIR)/$(PACKAGE)/ast
23
+
24
+ cp $(PROJECT_DIR)/include/cparser/driver/*.h \
25
+ $(DESTDIR)$(INCLUDEDIR)/$(PACKAGE)/driver
26
+
27
+ cp $(PROJECT_DIR)/include/cparser/firm/*.h \
28
+ $(DESTDIR)$(INCLUDEDIR)/$(PACKAGE)/firm
29
+
30
+ cp $(PROJECT_DIR)/include/cparser/parser/*.h \
31
+ $(DESTDIR)$(INCLUDEDIR)/$(PACKAGE)/parser
32
+
33
+ cp $(PROJECT_DIR)/include/cparser/wrappergen/*.h \
34
+ $(DESTDIR)$(INCLUDEDIR)/$(PACKAGE)/wrappergen
file added
+5
project/headers.mk ADDED
@@ -0,0 +1,5 @@
1
+ API_HEADERS = \
2
+
3
+ INTERNAL_HEADERS = \
4
+
5
+ ALL_HEADERS = $(API_HEADERS) $(INTERNAL_HEADERS)
file added
+0
empty file added
file added
+5
project/tagver.mk ADDED
@@ -0,0 +1,5 @@
1
+ VER_NAMESPACE = CPARSER
2
+
3
+ VER_MAJOR = 0
4
+ VER_MINOR = 0
5
+ VER_PATCH = 0
file added
+4
project/tree.mk ADDED
@@ -0,0 +1,4 @@
1
+ tree.tag:
2
+ mkdir -p src
3
+ mkdir -p src/driver
4
+ touch tree.tag
file added
+76
sofort/custom.mk ADDED
@@ -0,0 +1,76 @@
1
+ ifeq ($(OS_BINFMT),PE)
2
+ include $(PROJECT_DIR)/sysinfo/os/pe.mk
3
+ endif
4
+
5
+ ifeq ($(OS_BINFMT),ELF)
6
+ include $(PROJECT_DIR)/sysinfo/os/elf.mk
7
+ endif
8
+
9
+
10
+
11
+ ifeq ($(DISABLE_STATIC),yes)
12
+ package-static:
13
+ package-install-static:
14
+ else
15
+ package-static: static
16
+ package-install-static: install-static
17
+ endif
18
+
19
+ ifeq ($(DISABLE_SHARED),yes)
20
+ package-shared:
21
+ package-install-shared:
22
+ else
23
+ package-shared: shared
24
+ package-install-shared: install-shared
25
+ endif
26
+
27
+
28
+
29
+ ifeq ($(DISABLE_FRONTEND),yes)
30
+ app-tag:
31
+ package-install-app:
32
+ package-install-extras:
33
+ else
34
+ app-tag: package-app app.tag
35
+ package-install-app: install-app
36
+ package-install-extras: install-extras
37
+ endif
38
+
39
+
40
+
41
+ ifeq ($(ALL_STATIC),yes)
42
+
43
+ package-app: static-app
44
+ app: PACKAGE_APP = $(STATIC_APP)
45
+ app-tag: PACKAGE_APP = $(STATIC_APP)
46
+ app.tag: $(STATIC_APP)
47
+
48
+
49
+ else ifeq ($(ALL_SHARED),yes)
50
+
51
+ package-app: shared-app
52
+ app: PACKAGE_APP = $(SHARED_APP)
53
+ app-tag: PACKAGE_APP = $(SHARED_APP)
54
+ app.tag: $(SHARED_APP)
55
+
56
+
57
+ else
58
+
59
+ package-app: default-app
60
+ app: PACKAGE_APP = $(DEFAULT_APP)
61
+ app-tag: PACKAGE_APP = $(DEFAULT_APP)
62
+ app.tag: $(DEFAULT_APP)
63
+
64
+ endif
65
+
66
+
67
+
68
+ ifeq ($(CUSTOM_INSTALL_HEADERS),yes)
69
+
70
+ install-headers:install-headers-custom
71
+
72
+ else
73
+
74
+ install-headers:install-headers-default
75
+
76
+ endif
file added
+64
sofort/defs.mk ADDED
@@ -0,0 +1,64 @@
1
+ SHARED_LIB_DEPS =
2
+ SHARED_APP_DEPS =
3
+ STATIC_APP_DEPS =
4
+
5
+ COMMON_LOBJS = $(COMMON_SRCS:.c=.lo)
6
+ COMMON_OBJS = $(COMMON_SRCS:.c=.o)
7
+
8
+ ARCH_LOBJS = $(ARCH_SRCS:.c=.lo)
9
+ ARCH_OBJS = $(ARCH_SRCS:.c=.o)
10
+
11
+ APP_LOBJS = $(APP_SRCS:.c=.lo)
12
+ APP_OBJS = $(APP_SRCS:.c=.o)
13
+
14
+ SHARED_OBJS = $(COMMON_LOBJS) $(ARCH_LOBJS)
15
+ STATIC_OBJS = $(COMMON_OBJS) $(ARCH_OBJS)
16
+
17
+ STATIC_LIB = lib/$(OS_LIB_PREFIX)$(PACKAGE)$(OS_ARCHIVE_EXT)
18
+
19
+ DSO_VER = $(OS_LIB_PREFIX)$(PACKAGE)$(OS_LIB_SUFFIX)$(VER_XYZ)
20
+ DSO_SONAME = $(OS_LIB_PREFIX)$(PACKAGE)$(OS_LIB_SUFFIX)$(VER_SONAME)
21
+ DSO_SOLINK = $(OS_LIB_PREFIX)$(PACKAGE)$(OS_LIB_SUFFIX)
22
+
23
+ SHARED_LIB = lib/$(DSO_VER)
24
+ SHARED_SONAME = lib/$(DSO_SONAME)
25
+ SHARED_SOLINK = lib/$(DSO_SOLINK)
26
+
27
+ IMP_DEF = $(OS_LIB_PREFIX)$(PACKAGE)$(VER_XYZ)$(OS_LIBDEF_EXT)
28
+ IMP_VER = $(OS_LIB_PREFIX)$(PACKAGE)$(VER_XYZ)$(OS_IMPLIB_EXT)
29
+ IMP_SONAME = $(OS_LIB_PREFIX)$(PACKAGE)$(VER_SONAME)$(OS_IMPLIB_EXT)
30
+ IMP_SOLINK = $(OS_LIB_PREFIX)$(PACKAGE)$(OS_IMPLIB_EXT)
31
+
32
+ IMPLIB_DEF = lib/$(IMP_DEF)
33
+ IMPLIB_VER = lib/$(IMP_VER)
34
+ IMPLIB_SONAME = lib/$(IMP_SONAME)
35
+ IMPLIB_SOLINK = lib/$(IMP_SOLINK)
36
+
37
+ APP = bin/$(OS_APP_PREFIX)$(NICKNAME)$(OS_APP_SUFFIX)
38
+ DEFAULT_APP = bin/$(OS_APP_PREFIX)$(NICKNAME)-default$(OS_APP_SUFFIX)
39
+ SHARED_APP = bin/$(OS_APP_PREFIX)$(NICKNAME)-shared$(OS_APP_SUFFIX)
40
+ STATIC_APP = bin/$(OS_APP_PREFIX)$(NICKNAME)-static$(OS_APP_SUFFIX)
41
+
42
+ CFLAGS = $(CFLAGS_DEBUG) $(CFLAGS_CONFIG) $(CFLAGS_SYSROOT) \
43
+ $(CFLAGS_COMMON) $(CFLAGS_CMDLINE) $(CFLAGS_HOST) \
44
+ $(CFLAGS_PATH) $(CFLAGS_OS) $(CFLAGS_SITE) \
45
+ $(CFLAGS_VERSION) $(CFLAGS_STRICT)
46
+
47
+ CFLAGS_SHARED = $(CFLAGS) $(CFLAGS_PIC) $(CFLAGS_SHARED_ATTR)
48
+ CFLAGS_STATIC = $(CFLAGS) $(CFLAGS_OBJ) $(CFLAGS_STATIC_ATTR)
49
+ CFLAGS_APP = $(CFLAGS) $(CFLAGS_OBJ) $(CFLAGS_APP_ATTR) $(CFLAGS_UTIL)
50
+
51
+ LDFLAGS_SHARED = $(LDFLAGS_DEBUG) $(LDFLAGS_CONFIG) $(LDFLAGS_SYSROOT) \
52
+ $(LDFLAGS_COMMON) $(LDFLAGS_CMDLINE) $(LDFLAGS_HOST) \
53
+ $(LDFLAGS_PATH) $(SHARED_LIB_DEPS) $(LDFLAGS_STRICT) \
54
+ $(LDFLAGS_LAST)
55
+
56
+ LDFLAGS_APP = $(LDFLAGS_DEBUG) $(LDFLAGS_CONFIG) $(LDFLAGS_SYSROOT) \
57
+ $(LDFLAGS_COMMON) $(LDFLAGS_CMDLINE) $(LDFLAGS_HOST) \
58
+ $(LDFLAGS_PATH) $(SHARED_APP_DEPS) $(LDFLAGS_STRICT) \
59
+ $(LDFLAGS_UTIL) $(LDFLAGS_LAST)
60
+
61
+ LDFLAGS_STATIC = $(LDFLAGS_DEBUG) $(LDFLAGS_CONFIG) $(LDFLAGS_SYSROOT) \
62
+ $(LDFLAGS_COMMON) $(LDFLAGS_CMDLINE) $(LDFLAGS_HOST) \
63
+ $(LDFLAGS_PATH) $(STATIC_APP_DEPS) $(LDFLAGS_STRICT) \
64
+ $(LDFLAGS_LAST)
file added
+63
sofort/version.mk ADDED
@@ -0,0 +1,63 @@
1
+ include $(PROJECT_DIR)/project/tagver.mk
2
+
3
+ CFLAGS_VERSION += -D$(VER_NAMESPACE)_TAG_VER_MAJOR=$(VER_MAJOR)
4
+ CFLAGS_VERSION += -D$(VER_NAMESPACE)_TAG_VER_MINOR=$(VER_MINOR)
5
+ CFLAGS_VERSION += -D$(VER_NAMESPACE)_TAG_VER_PATCH=$(VER_PATCH)
6
+
7
+ ifeq ($(AVOID_VERSION),yes)
8
+
9
+ VER_XYZ =
10
+ VER_SONAME =
11
+
12
+ package-shared-soname:
13
+ package-shared-solink:
14
+ package-install-soname:
15
+ package-install-solink:
16
+
17
+ else
18
+
19
+ VER_XYZ = .$(VER_MAJOR).$(VER_MINOR).$(VER_PATCH)
20
+ VER_SONAME = .$(VER_MAJOR)
21
+
22
+ package-shared-soname: shared-soname
23
+ package-shared-solink: shared-solink
24
+ package-install-soname: install-soname
25
+ package-install-solink: install-solink
26
+
27
+
28
+
29
+ # libfoo.so (common)
30
+ install-solink: install-lib
31
+ rm -f $@.tmp
32
+ ln -s $(DSO_VER) $@.tmp
33
+ mv $@.tmp $(DESTDIR)$(LIBDIR)/$(DSO_SOLINK)
34
+
35
+ $(SHARED_SOLINK): $(SHARED_LIB)
36
+ rm -f $@.tmp
37
+ ln -s $(DSO_VER) $@.tmp
38
+ mv $@.tmp $@
39
+
40
+ # libfoo.so.x (symlink)
41
+ ifeq ($(OS_SONAME),symlink)
42
+ $(SHARED_SONAME): $(SHARED_LIB)
43
+ rm -f $@.tmp
44
+ ln -s $(DSO_VER) $@.tmp
45
+ mv $@.tmp $@
46
+
47
+ install-soname: install-lib
48
+ rm -f $@.tmp
49
+ ln -s $(DSO_VER) $@.tmp
50
+ mv $@.tmp $(DESTDIR)$(LIBDIR)/$(DSO_SONAME)
51
+ endif
52
+
53
+
54
+ # libfoo.so.x (copy)
55
+ ifeq ($(OS_SONAME),copy)
56
+ install-soname: install-lib
57
+ cp $(SHARED_LIB) $(DESTDIR)$(LIBDIR)/$(DSO_SONAME)
58
+
59
+ $(SHARED_SONAME): $(SHARED_LIB)
60
+ cp $(SHARED_LIB) $(SHARED_SONAME)
61
+ endif
62
+
63
+ endif
sysinfo/compiler/any-compiler.mk ADDED
@@ -0,0 +1,29 @@
1
+ ifeq ($(CROSS_COMPILE)x,x)
2
+ CROSS_HOST =
3
+ CROSS_HOST_SPEC =
4
+ else
5
+ CROSS_HOST =
6
+ CROSS_HOST_SPEC =
7
+ endif
8
+
9
+
10
+ ifeq ($(USER_CC)x,x)
11
+ CC = $(NATIVE_CC) $(CROSS_HOST_SPEC)
12
+ else
13
+ CC = $(USER_CC) $(CROSS_HOST_SPEC)
14
+ endif
15
+
16
+ ifeq ($(USER_CPP)x,x)
17
+ CPP = $(NATIVE_CC) $(CROSS_HOST_SPEC) -E
18
+ else
19
+ CPP = $(USER_CPP) $(CROSS_HOST_SPEC) -E
20
+ endif
21
+
22
+ ifeq ($(USER_CXX)x,x)
23
+ CXX = $(NATIVE_CC) $(CROSS_HOST_SPEC) -std=c++
24
+ else
25
+ CXX = $(USER_CXX) $(CROSS_HOST_SPEC) -std=c++
26
+ endif
27
+
28
+
29
+ CFLAGS_PIC = -fPIC
sysinfo/compiler/clang.mk ADDED
@@ -0,0 +1,31 @@
1
+ ifeq ($(CROSS_COMPILE)x,x)
2
+ CROSS_HOST =
3
+ CROSS_HOST_SPEC =
4
+ else ifeq ($(CROSS_HOST)x,x)
5
+ CROSS_HOST = $(HOST)
6
+ CROSS_HOST_SPEC = --target=$(HOST)
7
+ else
8
+ CROSS_HOST_SPEC = --target=$(CROSS_HOST)
9
+ endif
10
+
11
+
12
+ ifeq ($(USER_CC)x,x)
13
+ CC = $(NATIVE_CC) $(CROSS_HOST_SPEC)
14
+ else
15
+ CC = $(USER_CC) $(CROSS_HOST_SPEC)
16
+ endif
17
+
18
+ ifeq ($(USER_CPP)x,x)
19
+ CPP = $(NATIVE_CC) $(CROSS_HOST_SPEC) -E
20
+ else
21
+ CPP = $(USER_CPP) $(CROSS_HOST_SPEC) -E
22
+ endif
23
+
24
+ ifeq ($(USER_CXX)x,x)
25
+ CXX = $(NATIVE_CC)++ $(CROSS_HOST_SPEC)
26
+ else
27
+ CXX = $(USER_CXX) $(CROSS_HOST_SPEC)
28
+ endif
29
+
30
+
31
+ CFLAGS_PIC = -fPIC
sysinfo/compiler/cparser.mk ADDED
@@ -0,0 +1,31 @@
1
+ ifeq ($(CROSS_COMPILE)x,x)
2
+ CROSS_HOST =
3
+ CROSS_HOST_SPEC =
4
+ else ifeq ($(CROSS_HOST)x,x)
5
+ CROSS_HOST = $(HOST)
6
+ CROSS_HOST_SPEC = --target=$(HOST)
7
+ else
8
+ CROSS_HOST_SPEC = --target=$(CROSS_HOST)
9
+ endif
10
+
11
+
12
+ ifeq ($(USER_CC)x,x)
13
+ CC = $(NATIVE_CC) $(CROSS_HOST_SPEC) -Wno-experimental -integrated-cpp
14
+ else
15
+ CC = $(USER_CC) $(CROSS_HOST_SPEC) -Wno-experimental -integrated-cpp
16
+ endif
17
+
18
+ ifeq ($(USER_CPP)x,x)
19
+ CPP = $(NATIVE_CC) $(CROSS_HOST_SPEC) -Wno-experimental -integrated-cpp -E
20
+ else
21
+ CPP = $(USER_CPP) $(CROSS_HOST_SPEC) -Wno-experimental -integrated-cpp -E
22
+ endif
23
+
24
+ ifeq ($(USER_CXX)x,x)
25
+ CXX = $(NATIVE_CC) $(CROSS_HOST_SPEC) -Wno-experimental -integrated-cpp -std=c++
26
+ else
27
+ CXX = $(USER_CXX) $(CROSS_HOST_SPEC) -Wno-experimental -integrated-cpp -std=c++
28
+ endif
29
+
30
+
31
+ CFLAGS_PIC = -fPIC
sysinfo/compiler/gcc.mk ADDED
@@ -0,0 +1,24 @@
1
+ ifeq ($(USER_CC)x,x)
2
+ ifeq ($(CROSS_COMPILE)x,x)
3
+ CC = $(CROSS_COMPILE)$(NATIVE_CC)
4
+ else
5
+ CC = $(CROSS_COMPILE)gcc
6
+ endif
7
+ else
8
+ CC = $(USER_CC)
9
+ endif
10
+
11
+ ifeq ($(USER_CPP)x,x)
12
+ CPP = $(CROSS_COMPILE)cpp
13
+ else
14
+ CPP = $(USER_CPP)
15
+ endif
16
+
17
+ ifeq ($(USER_CXX)x,x)
18
+ CXX = $(CROSS_COMPILE)c++
19
+ else
20
+ CXX = $(USER_CXX)
21
+ endif
22
+
23
+
24
+ CFLAGS_PIC = -fPIC
sysinfo/host/any-host.mk ADDED
@@ -0,0 +1,7 @@
1
+ include $(PROJECT_DIR)/sysinfo/os/any-os.mk
2
+
3
+ ARCH =
4
+ HOST_BITS =
5
+ HOST_UNDERSCORE =
6
+
7
+ CROSS_HOST = $(TARGET)
file added
+48
sysinfo/host/host.sh ADDED
@@ -0,0 +1,48 @@
1
+ #!/bin/sh
2
+
3
+ error_msg()
4
+ {
5
+ echo $@ >&2
6
+ }
7
+
8
+ host_test()
9
+ {
10
+ mb_hdrdir=$(pwd)/build
11
+ mkdir -p $mb_hdrdir || exit 2
12
+
13
+ if [ -z "$mb_compiler" ]; then
14
+ echo "config error: compiler not set."
15
+ exit 2
16
+ fi
17
+
18
+ $mb_compiler -dM -E - < /dev/null > /dev/null && return 0
19
+
20
+ error_msg "config error: invalid compiler."
21
+ exit 2
22
+ }
23
+
24
+ # one: args
25
+ for arg ; do
26
+ case "$arg" in
27
+ --help) usage
28
+ ;;
29
+ --compiler=*)
30
+ mb_compiler=${arg#*=}
31
+ ;;
32
+ --cflags=*)
33
+ mb_cflags=${arg#*=}
34
+ ;;
35
+ *)
36
+ error_msg ${arg#}: "unsupported config argument."
37
+ exit 2
38
+ ;;
39
+ esac
40
+ done
41
+
42
+
43
+ # two: test
44
+ host_test
45
+
46
+
47
+ # all done
48
+ exit 0
sysinfo/host/i686-nt32-midipix.mk ADDED
@@ -0,0 +1,5 @@
1
+ include $(PROJECT_DIR)/sysinfo/os/midipix.mk
2
+
3
+ ARCH = nt32
4
+ HOST_BITS = 32
5
+ HOST_UNDERSCORE = '_'
sysinfo/host/i686-unknown-linux.mk ADDED
@@ -0,0 +1,5 @@
1
+ include $(PROJECT_DIR)/sysinfo/os/linux.mk
2
+
3
+ ARCH = i386
4
+ HOST_BITS = 32
5
+ HOST_UNDERSCORE = '_'
sysinfo/host/i686-w64-mingw32.mk ADDED
@@ -0,0 +1,5 @@
1
+ include $(PROJECT_DIR)/sysinfo/os/mingw.mk
2
+
3
+ ARCH = w32
4
+ HOST_BITS = 32
5
+ HOST_UNDERSCORE = '_'
sysinfo/host/native.mk ADDED
@@ -0,0 +1,45 @@
1
+ include $(PROJECT_DIR)/sysinfo/os/$(NATIVE_OS).mk
2
+
3
+ OS = $(NATIVE_OS)
4
+ HOST_BITS = $(NATIVE_OS_BITS)
5
+ HOST_UNDERSCORE = $(NATIVE_OS_UNDERSCORE)
6
+
7
+ ifeq ($(OS),linux)
8
+ ifeq ($(HOST_BITS),32)
9
+ ARCH = i386
10
+ else ifeq ($(HOST_BITS),64)
11
+ ARCH = x86_64
12
+ endif
13
+ endif
14
+
15
+ ifeq ($(OS),midipix)
16
+ ifeq ($(HOST_BITS),32)
17
+ ARCH = nt32
18
+ else ifeq ($(HOST_BITS),64)
19
+ ARCH = nt64
20
+ endif
21
+ endif
22
+
23
+ ifeq ($(OS),mingw)
24
+ ifeq ($(HOST_BITS),32)
25
+ ARCH = w32
26
+ else ifeq ($(HOST_BITS),64)
27
+ ARCH = w64
28
+ endif
29
+ endif
30
+
31
+ ifeq ($(OS),bsd)
32
+ ifeq ($(HOST_BITS),32)
33
+ ARCH = bsd32
34
+ else ifeq ($(HOST_BITS),64)
35
+ ARCH = bsd64
36
+ endif
37
+ endif
38
+
39
+ ifeq ($(OS),darwin)
40
+ ifeq ($(HOST_BITS),32)
41
+ ARCH = dw32
42
+ else ifeq ($(HOST_BITS),64)
43
+ ARCH = dw64
44
+ endif
45
+ endif
sysinfo/host/x86_64-nt64-midipix.mk ADDED
@@ -0,0 +1,5 @@
1
+ include $(PROJECT_DIR)/sysinfo/os/midipix.mk
2
+
3
+ ARCH = nt64
4
+ HOST_BITS = 64
5
+ HOST_UNDERSCORE = ''
sysinfo/host/x86_64-unknown-linux.mk ADDED
@@ -0,0 +1,5 @@
1
+ include $(PROJECT_DIR)/sysinfo/os/linux.mk
2
+
3
+ ARCH = x86_64
4
+ HOST_BITS = 64
5
+ HOST_UNDERSCORE = ''
sysinfo/host/x86_64-w64-mingw32.mk ADDED
@@ -0,0 +1,5 @@
1
+ include $(PROJECT_DIR)/sysinfo/os/mingw.mk
2
+
3
+ ARCH = w64
4
+ HOST_BITS = 64
5
+ HOST_UNDERSCORE = ''
file added
+12
sysinfo/os/any-os.mk ADDED
@@ -0,0 +1,12 @@
1
+ OS = any-os
2
+ OS_APP_PREFIX =
3
+ OS_APP_SUFFIX =
4
+ OS_LIB_PREFIX = lib
5
+ OS_LIB_SUFFIX = .so
6
+ OS_IMPLIB_EXT = .invalid
7
+ OS_LIBDEF_EXT = .invalid
8
+ OS_ARCHIVE_EXT = .a
9
+ OS_SONAME = symlink
10
+ OS_BINFMT = ELF
11
+
12
+ .PHONY: $(IMPLIB_DEF) $(IMPLIB_VER) $(IMPLIB_SONAME) $(IMPLIB_SOLINK)
file added
+12
sysinfo/os/bsd.mk ADDED
@@ -0,0 +1,12 @@
1
+ OS = bsd
2
+ OS_APP_PREFIX =
3
+ OS_APP_SUFFIX =
4
+ OS_LIB_PREFIX = lib
5
+ OS_LIB_SUFFIX = .so
6
+ OS_IMPLIB_EXT = .invalid
7
+ OS_LIBDEF_EXT = .invalid
8
+ OS_ARCHIVE_EXT = .a
9
+ OS_SONAME = symlink
10
+ OS_BINFMT = ELF
11
+
12
+ .PHONY: $(IMPLIB_DEF) $(IMPLIB_VER) $(IMPLIB_SONAME) $(IMPLIB_SOLINK)
file added
+14
sysinfo/os/darwin.mk ADDED
@@ -0,0 +1,14 @@
1
+ OS = darwin
2
+ OS_APP_PREFIX =
3
+ OS_APP_SUFFIX =
4
+ OS_LIB_PREFIX = lib
5
+ OS_LIB_SUFFIX = .dylib
6
+ OS_IMPLIB_EXT = .invalid
7
+ OS_LIBDEF_EXT = .invalid
8
+ OS_ARCHIVE_EXT = .a
9
+ OS_SONAME = symlink
10
+ OS_BINFMT = MACHO
11
+
12
+ CFLAGS_OS += -D_DARWIN_C_SOURCE
13
+
14
+ .PHONY: $(IMPLIB_DEF) $(IMPLIB_VER) $(IMPLIB_SONAME) $(IMPLIB_SOLINK)
file added
+2
sysinfo/os/elf.mk ADDED
@@ -0,0 +1,2 @@
1
+ LDFLAGS_SHARED += -Wl,-soname
2
+ LDFLAGS_SHARED += -Wl,$(DSO_SONAME)
file added
+12
sysinfo/os/linux.mk ADDED
@@ -0,0 +1,12 @@
1
+ OS = linux
2
+ OS_APP_PREFIX =
3
+ OS_APP_SUFFIX =
4
+ OS_LIB_PREFIX = lib
5
+ OS_LIB_SUFFIX = .so
6
+ OS_IMPLIB_EXT = .invalid
7
+ OS_LIBDEF_EXT = .invalid
8
+ OS_ARCHIVE_EXT = .a
9
+ OS_SONAME = symlink
10
+ OS_BINFMT = ELF
11
+
12
+ .PHONY: $(IMPLIB_DEF) $(IMPLIB_VER) $(IMPLIB_SONAME) $(IMPLIB_SOLINK)
sysinfo/os/midipix.mk ADDED
@@ -0,0 +1,10 @@
1
+ OS = midipix
2
+ OS_APP_PREFIX =
3
+ OS_APP_SUFFIX =
4
+ OS_LIB_PREFIX = lib
5
+ OS_LIB_SUFFIX = .so
6
+ OS_IMPLIB_EXT = .lib.a
7
+ OS_LIBDEF_EXT = .so.def
8
+ OS_ARCHIVE_EXT = .a
9
+ OS_SONAME = copy
10
+ OS_BINFMT = PE
file added
+12
sysinfo/os/mingw.mk ADDED
@@ -0,0 +1,12 @@
1
+ OS = mingw
2
+ OS_APP_PREFIX =
3
+ OS_APP_SUFFIX = .exe
4
+ OS_LIB_PREFIX = lib
5
+ OS_LIB_SUFFIX = .dll
6
+ OS_IMPLIB_EXT = .dll.a
7
+ OS_LIBDEF_EXT = .def
8
+ OS_ARCHIVE_EXT = .a
9
+ OS_SONAME = copy
10
+ OS_BINFMT = PE
11
+
12
+ CFLAGS_PIC =
file added
+73
sysinfo/os/pe.mk ADDED
@@ -0,0 +1,73 @@
1
+ LDFLAGS_IMPLIB += -Wl,--output-def
2
+ LDFLAGS_IMPLIB += -Wl,$(IMPLIB_DEF)
3
+ LDFLAGS_SHARED += $(LDFLAGS_IMPLIB)
4
+
5
+ LDFLAGS_SHARED += -Wl,-soname
6
+ LDFLAGS_SHARED += -Wl,$(DSO_SONAME)
7
+
8
+ PE_SUBSYSTEM ?= windows
9
+ LDFLAGS_COMMON += -Wl,--subsystem=$(PE_SUBSYSTEM)
10
+
11
+ implib: implib-ver package-implib-soname package-implib-solink
12
+
13
+ implib-ver: shared-lib $(IMPLIB_VER)
14
+
15
+ implib-soname: shared-lib $(IMPLIB_SONAME)
16
+
17
+ implib-solink: shared-lib $(IMPLIB_SOLINK)
18
+
19
+ $(IMPLIB_DEF): shared-lib
20
+
21
+ $(IMPLIB_VER): $(IMPLIB_DEF)
22
+ $(DLLTOOL) -l $(IMPLIB_VER) -d $(IMPLIB_DEF) -D $(DSO_VER)
23
+
24
+ install-implib: install-implib-ver \
25
+ package-install-implib-soname \
26
+ package-install-implib-solink
27
+
28
+ install-implib-ver: implib-ver
29
+ mkdir -p $(DESTDIR)$(LIBDIR)
30
+ cp $(IMPLIB_VER) $(DESTDIR)$(LIBDIR)
31
+
32
+ clean-implib:
33
+ rm -f $(SHARED_LIB)
34
+ rm -f $(IMPLIB_DEF)
35
+ rm -f $(IMPLIB_VER)
36
+ rm -f $(IMPLIB_SONAME)
37
+ rm -f $(IMPLIB_SOLINK)
38
+
39
+
40
+ ifeq ($(AVOID_VERSION),yes)
41
+
42
+ package-implib-soname:
43
+ package-implib-solink:
44
+ package-install-implib-soname:
45
+ package-install-implib-solink:
46
+
47
+ else
48
+
49
+ package-implib-soname: implib-soname
50
+ package-implib-solink: implib-solink
51
+ package-install-implib-soname: install-implib-soname
52
+ package-install-implib-solink: install-implib-solink
53
+
54
+
55
+ $(IMPLIB_SONAME): $(IMPLIB_DEF)
56
+ $(DLLTOOL) -l $(IMPLIB_SONAME) -d $(IMPLIB_DEF) -D $(DSO_SONAME)
57
+
58
+ $(IMPLIB_SOLINK): $(IMPLIB_SONAME)
59
+ rm -f $(IMPLIB_SOLINK).tmp
60
+ ln -s $(IMP_SONAME) $(IMPLIB_SOLINK).tmp
61
+ mv $(IMPLIB_SOLINK).tmp $(IMPLIB_SOLINK)
62
+
63
+ install-implib-soname: implib-soname
64
+ mkdir -p $(DESTDIR)$(LIBDIR)
65
+ cp $(IMPLIB_SONAME) $(DESTDIR)$(LIBDIR)
66
+
67
+ install-implib-solink: implib-soname
68
+ mkdir -p $(DESTDIR)$(LIBDIR)
69
+ rm -f $@.tmp
70
+ ln -s $(IMP_SONAME) $@.tmp
71
+ mv $@.tmp $(DESTDIR)$(LIBDIR)/$(IMP_SOLINK)
72
+
73
+ endif
sysinfo/toolchain/binutils.mk ADDED
@@ -0,0 +1,18 @@
1
+ AS = $(CROSS_COMPILE)as
2
+ AR = $(CROSS_COMPILE)ar
3
+ LD = $(CROSS_COMPILE)ld
4
+ NM = $(CROSS_COMPILE)nm
5
+ OBJDUMP = $(CROSS_COMPILE)objdump
6
+ RANLIB = $(CROSS_COMPILE)ranlib
7
+ SIZE = $(CROSS_COMPILE)size
8
+ STRIP = $(CROSS_COMPILE)strip
9
+ STRINGS = $(CROSS_COMPILE)strings
10
+
11
+
12
+ ADDR2LINE = $(CROSS_COMPILE)addr2line
13
+ COV = $(CROSS_COMPILE)gcov
14
+ CXXFILT = $(CROSS_COMPILE)c++filt
15
+ ELFEDIT = $(CROSS_COMPILE)elfedit
16
+ OBJCOPY = $(CROSS_COMPILE)objcopy
17
+ READELF = $(CROSS_COMPILE)readelf
18
+ DLLTOOL = $(CROSS_COMPILE)dlltool
sysinfo/toolchain/llvm.mk ADDED
@@ -0,0 +1,18 @@
1
+ AS = llvm-mc -filetype=obj
2
+ AR = llvm-ar
3
+ LD = lld
4
+ NM = llvm-nm
5
+ OBJDUMP = llvm-objdump
6
+ RANLIB = llvm-ranlib
7
+ SIZE = llvm-size
8
+ STRIP = $(CROSS_COMPILE)strip
9
+ STRINGS = $(CROSS_COMPILE)strings
10
+
11
+
12
+ ADDR2LINE = $(CROSS_COMPILE)addr2line
13
+ COV = $(CROSS_COMPILE)gcov
14
+ CXXFILT = $(CROSS_COMPILE)c++filt
15
+ ELFEDIT = $(CROSS_COMPILE)elfedit
16
+ OBJCOPY = $(CROSS_COMPILE)objcopy
17
+ READELF = $(CROSS_COMPILE)readelf
18
+ DLLTOOL = $(CROSS_COMPILE)dlltool
file added
+61
sysinfo/version.sh ADDED
@@ -0,0 +1,61 @@
1
+ #!/bin/sh
2
+
3
+ usage()
4
+ {
5
+ cat << EOF >&2
6
+
7
+ Usage:
8
+ -h show this HELP message
9
+ -s SRCDIR set source directory
10
+ -o OUTPUT set output header
11
+ -p PREFIX set macro prefix
12
+
13
+ EOF
14
+ exit 1
15
+ }
16
+
17
+
18
+ # one
19
+ workdir=$(pwd)
20
+ srcdir=
21
+ output=
22
+ prefix=
23
+
24
+
25
+ while getopts "hs:o:p:" opt; do
26
+ case $opt in
27
+ h)
28
+ usage
29
+ ;;
30
+ s)
31
+ srcdir="$OPTARG"
32
+ ;;
33
+ o)
34
+ output="$OPTARG"
35
+ ;;
36
+ p)
37
+ prefix="$OPTARG"
38
+ ;;
39
+ \?)
40
+ printf "Invalid option: -%s" "$OPTARG" >&2
41
+ usage
42
+ ;;
43
+ esac
44
+ done
45
+
46
+
47
+ # two
48
+ if [ -z "$srcdir" ] || [ -z "$output" ] || [ -z "$prefix" ]; then
49
+ usage
50
+ fi
51
+
52
+ cd "$srcdir" || exit 2
53
+
54
+ gitver=`git rev-parse --verify HEAD 2>/dev/null` || gitver="unknown"
55
+ macro=`echo "$prefix"_GIT_VERSION | tr '[:lower:]' '[:upper:]'`
56
+
57
+ cd "$workdir" || exit 2
58
+ printf "#define $macro\t\"$gitver\"\n" > "$output"
59
+
60
+ # all done
61
+ exit 0