forked from ApolloTeam-dev/ApolloOS
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile.in
338 lines (263 loc) · 14 KB
/
Makefile.in
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
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
# Copyright © 2000-2020, The AROS Development Team. All rights reserved.
# $Id$
#
# Main makefile for AROS
default: all
AROS_BUILD_HOST ?= @aros_build_host@
AROS_HOST_CPU ?= @aros_host_cpu@
AROS_HOST_ARCH ?= @aros_host_arch@
AROS_TARGET_CPU ?= @aros_target_cpu@
AROS_TARGET_CPU_TYPE ?= @aros_target_cpu_extra@
AROS_TARGET_CPU_MODE ?= @aros_target_cpu_mode@
AROS_TARGET_ARCH ?= @aros_target_arch@
AROS_TARGET_VARIANT ?= @aros_target_variant@
AMIGAOSNDKDIR ?= $(SRCDIR)/local/NDK_3.1
# normally, these variable's should go in mmake.config/globalvarfile
export AROS_TARGET_BOOTLOADER := @aros_target_bootloader@
export AROS_TARGET_ICONSET := @aros_target_iconset@
export AROS_GUI_THEME := @aros_target_guitheme@
TOP := @AROS_BUILDDIR@
SRCDIR := @SRCDIR@
include $(TOP)/config/make.cfg
ifneq ($(CROSSTOOLS_TARGET),)
include $(SRCDIR)/tools/crosstools/$(AROS_TOOLCHAIN).cfg
include $(SRCDIR)/tools/crosstools/$(AROS_TOOLCHAIN).deps
CROSSTOOLS_BUILDFLAG:=$(CROSSTOOLSDIR)/.installflag-crosstools
AROS_TOOLCHAIN_DEPS:=$(AROS_TOOLCHAIN_DEPS) $(SRCDIR)/tools/crosstools/$(AROS_TOOLCHAIN).cfg $(SRCDIR)/tools/crosstools/$(AROS_TOOLCHAIN).deps $(SRCDIR)/tools/crosstools/$(AROS_TOOLCHAIN)/mmakefile.src
else
CROSSTOOLS_BUILDFLAG:=
endif
MMAKE_OPTIONS ?= --srcdir=$(SRCDIR) --builddir=$(TOP)
ifneq (,$(findstring s,$(MAKEFLAGS)))
MMAKE_OPTIONS += -q
endif
#
# Rules for Configure generated files ...
#
$(TOP)/config.status: $(SRCDIR)/configure
@echo "****"
@echo "**** The configure script must be executed before running '$(MAKE)'."
@echo "**** Please run \"./configure\"."
@echo "****"
@exit 1
#$(TOP)/Makefile: $(SRCDIR)/Makefile.in $(TOP)/config.status
# @+$(ECHO) "Regenerating " $(subst $(TOP)/,,$@); \
# @$(TOP)/config.status --silent --file=$@:$<
#
#CONFIGUREFILES += $(TOP)/Makefile
$(TOP)/mmake.config: $(SRCDIR)/mmake.config.in $(TOP)/config.status
@+$(ECHO) "Regenerating " $(subst $(TOP)/,,$@); \
@$(TOP)/config.status --silent --file=$@:$<
CONFIGUREFILES += $(TOP)/mmake.config
CONFIGBUILDFILES += $(TOP)/mmake.config
$(TOP)/config/make.cfg: $(SRCDIR)/config/make.cfg.in $(TOP)/config.status
@+$(ECHO) "Regenerating " $(subst $(TOP)/,,$@); \
@$(TOP)/config.status --silent --file=$@:$<
CONFIGUREFILES += $(TOP)/config/make.cfg
CONFIGBUILDARCHFILES += $(TOP)/config/make.cfg
$(TOP)/compiler/include/geninc.cfg: $(SRCDIR)/compiler/include/geninc.cfg.in $(TOP)/config.status
@+$(ECHO) "Regenerating " $(subst $(TOP)/,,$@); \
@$(TOP)/config.status --silent --file=$@:$<
CONFIGUREFILES += $(TOP)/compiler/include/geninc.cfg
$(AROS_INCLUDES)/aros/config.h: $(SRCDIR)/config/config.h.in $(TOP)/config.status
@+$(ECHO) "Regenerating " $(subst $(TOP)/,,$@); \
@$(TOP)/config.status --silent --file=$@:$<
CONFIGUREFILES += $(AROS_INCLUDES)/aros/config.h
$(GENINCDIR)/aros/config.h: $(SRCDIR)/config/config.h.in $(TOP)/config.status
@+$(ECHO) "Regenerating " $(subst $(TOP)/,,$@); \
@$(TOP)/config.status --silent --file=$@:$<
CONFIGUREFILES += $(GENINCDIR)/aros/config.h
$(GENDIR)/config/target.cfg: $(SRCDIR)/config/target.cfg.in $(TOP)/config.status
@+$(ECHO) "Regenerating " $(subst $(TOP)/,,$@); \
@$(TOP)/config.status --silent --file=$@:$<
CONFIGUREFILES += $(GENDIR)/config/target.cfg
CONFIGBUILDARCHFILES += $(GENDIR)/config/target.cfg
$(GENDIR)/config/build.cfg: $(SRCDIR)/config/build.cfg.in $(TOP)/config.status
@+$(ECHO) "Regenerating " $(subst $(TOP)/,,$@); \
@$(TOP)/config.status --silent --file=$@:$<
CONFIGUREFILES += $(GENDIR)/config/build.cfg
CONFIGBUILDARCHFILES += $(GENDIR)/config/build.cfg
$(GENDIR)/config/make.defaults: $(SRCDIR)/config/make.defaults.in $(TOP)/config.status
@+$(ECHO) "Regenerating " $(subst $(TOP)/,,$@); \
@$(TOP)/config.status --silent --file=$@:$<
CONFIGUREFILES += $(GENDIR)/config/make.defaults
$(HOSTGENDIR)/config/host.cfg: $(SRCDIR)/config/host.cfg.in $(TOP)/config.status
@+$(ECHO) "Regenerating " $(subst $(TOP)/,,$@); \
@$(TOP)/config.status --silent --file=$@:$<
CONFIGUREFILES += $(HOSTGENDIR)/config/host.cfg
#
# Standard Rules ...
#
all: $(CONFIGUREFILES) crosstools-toolchain features
@+$(CALL) $(MMAKE) $(MMAKE_OPTIONS) AROS.AROS
makedirs:
@$(RM) $(TOP)/errors
@$(FOR) dir in $(AROSDIR) $(GENDIR) $(TOOLDIR) ; do \
$(IF) [ ! -d $$dir ]; then \
$(MECHO) $(MKDIR) "$$dir" ; \
$(MKDIR) "$$dir" ; \
else true ; fi ; \
done
@$(IF) [ ! -f $(AROSDIR)/.gdbinit ]; then \
$(CP) $(SRCDIR)/_gdbinit $(AROSDIR)/.gdbinit ; \
else true ; fi
$(PARSEOFFSETS): $(wildcard $(SRCDIR)/tools/parseoffsets/*.[ch])
@$(ECHO) Building parseoffsets...
@$(CALL) $(MAKE) $(MKARGS) -C $(SRCDIR)/tools/parseoffsets SRCDIR=$(SRCDIR) TOP=$(TOP)
parsesdkoffsets : $(PARSEOFFSETS)
@$(IF) [ ! -d $(AMIGAOSNDKDIR) ]; then \
$(ECHO) "Please copy the AmigaOS 3.1 (tm) NDK files to $(AMIGAOSNDKDIR)" ; \
else \
$(ECHO) "Parsing Structure.Offsets file..." ; \
$(PARSEOFFSETS) --offsetsfile=$(AMIGAOSNDKDIR)/Includes_Libs/StructOffsets/Structure.Offsets --gendir=$(GENDIR)/tools/parseoffsets --bindir=$(AROS_TESTS)/sdk --sdkdir=$(AROS_INCLUDES) ; \
fi ;
# Create the tools that are used to build AROS.
tools : makedirs mmake $(GENMFSCRIPT) $(ARCHTOOL) $(ELF2HUNK) \
$(FLEXCAT) $(CREATEDTDESC) \
$(ILBMTOC) $(ILBMTOICON) $(INFOINFO) \
$(COLLECT-AROS) $(AFSLIB) $(COPYTOAFS) \
$(FD2INLINE) $(FD2PRAGMA) $(SFDC) $(SETREV) $(PARSEOFFSETS)
@$(NOP)
# rebuild the crosstools if we are reconfigured, or its dependencies change.
$(CROSSTOOLSDIR)/.installflag-crosstools: $(TOP)/config.status $(AROS_TOOLCHAIN_DEPS) tools
@+$(IF) ! $(TEST) -f $@ ; then \
$(CALL) $(MMAKE) $(MMAKE_OPTIONS) AROS.$(CROSSTOOLS_TARGET) && $(TOUCH) $@ ; \
fi
crosstools-toolchain: tools $(CROSSTOOLS_BUILDFLAG)
@$(NOP)
crosstools : crosstools-toolchain features
@$(MAKE) $(MKARGS) linklibs-libatomic
$(TOP)/config/features.status: $(SRCDIR)/config/features $(CROSSTOOLS_BUILDFLAG)
@$(IF) ! $(TEST) -f $@ ; then \
$(ECHO) "Querying target compiler features..." ; \
cd $(TOP)/config ; CC="$(TARGET_CC) $(TARGET_SYSROOT)" CFLAGS="$(TARGET_CFLAGS) $(DEBUG_CFLAGS) $(OPTIMIZATION_CFLAGS)" CPP="$(TARGET_CPP) $(TARGET_SYSROOT)" CXX="$(TARGET_CXX) $(TARGET_SYSROOT)" CXXFLAGS=" $(TARGET_CXXFLAGS) $(DEBUG_CFLAGS) $(OPTIMIZATION_CFLAGS)" AROS_DEVELOPER="$(AROS_DEVELOPER)" CONFIG_STATUS="features.status" $(SRCDIR)/config/features --host=$(AROS_BUILD_HOST) --with-config-dir=$(GENDIR)/config ; \
fi
CONFIGBUILDARCHFILES += $(TOP)/config/features.status
features: crosstools-toolchain $(TOP)/config/features.status
@$(NOP)
NATIVEBUILDFILES = $(addprefix $(AROS_SDK)/,$(notdir $(CONFIGBUILDFILES)))
NATIVEBUILDARCHFILES = $(addprefix $(AROS_ARCH_SDK)/config/,$(notdir $(CONFIGBUILDARCHFILES)))
$(NATIVEBUILDFILES) $(NATIVEBUILDARCHFILES) : $(CONFIGBUILDFILES) $(CONFIGBUILDARCHFILES)
@$(ECHO) "Generating " $(subst $(TOP)/,,$@)
$(GENMFSCRIPT): $(SRCDIR)/tools/genmf/genmf.py
@$(ECHO) Generating $(subst $(TOP)/,,$(GENMFSCRIPT))...
@$(TOP)/config.status --silent --file=$(subst $(TOP)/,,$@):$<
$(ELF2HUNK): $(SRCDIR)/tools/elf2hunk/elf2hunk.c
@$(ECHO) Building elf2hunk...
@$(CALL) $(MAKE) $(MKARGS) -C $(SRCDIR)/tools/elf2hunk SRCDIR=$(SRCDIR) TOP=$(TOP)
$(ARCHTOOL): $(SRCDIR)/tools/archtools/archtool.c
@$(ECHO) Building archtool...
@$(CALL) $(MAKE) $(MKARGS) -C $(SRCDIR)/tools/archtools SRCDIR=$(SRCDIR) TOP=$(TOP)
$(FLEXCAT): $(wildcard $(SRCDIR)/tools/flexcat/src/*.[ch]) $(wildcard $(SRCDIR)/tools/flexcat/src/sd/*.sd)
@$(ECHO) Building flexcat...
@$(CALL) $(MAKE) $(MKARGS) -C $(SRCDIR)/tools/flexcat/src -f Makefile.aros SRCDIR=$(SRCDIR) TOP=$(TOP)
$(CREATEDTDESC): $(wildcard $(SRCDIR)/tools/dtdesc/*.[ch]) $(wildcard $(SRCDIR)/tools/dtdesc/c_iff/*.[ch])
@$(ECHO) Building createdtdesc...
@$(CALL) $(MAKE) $(MKARGS) -C $(SRCDIR)/tools/dtdesc -f Makefile.aros SRCDIR=$(SRCDIR) TOP=$(TOP)
$(AFSLIB): $(wildcard $(SRCDIR)/rom/filesys/afs/*.[ch])
@$(ECHO) Building afslib...
@$(CALL) $(MAKE) $(MKARGS) -C $(SRCDIR)/tools/copytoafs -f Makefile.afslib SRCDIR=$(SRCDIR) TOP=$(TOP)
$(COPYTOAFS): $(AFSLIB) $(SRCDIR)/tools/copytoafs/copytoafs.c
@$(ECHO) Building copytoafs...
@$(CALL) $(MAKE) $(MKARGS) -C $(SRCDIR)/tools/copytoafs SRCDIR=$(SRCDIR) TOP=$(TOP)
$(ILBMTOC): $(SRCDIR)/tools/ilbmtoc/ilbmtoc.c
@$(ECHO) Building ilbmtoc...
@$(CALL) $(MAKE) $(MKARGS) -C $(SRCDIR)/tools/ilbmtoc SRCDIR=$(SRCDIR) TOP=$(TOP)
$(ILBMTOICON): $(SRCDIR)/tools/ilbmtoicon/ilbmtoicon.c $(SRCDIR)/tools/ilbmtoicon/infoinfo.c
@$(ECHO) Building ilbmtoicon...
@$(CALL) $(MAKE) $(MKARGS) $@ -C $(SRCDIR)/tools/ilbmtoicon SRCDIR=$(SRCDIR) TOP=$(TOP)
$(INFOINFO): $(SRCDIR)/tools/ilbmtoicon/infoinfo.c
@$(ECHO) Building infoinfo...
@$(CALL) $(MAKE) $(MKARGS) $@ -C $(SRCDIR)/tools/ilbmtoicon SRCDIR=$(SRCDIR) TOP=$(TOP)
$(COLLECT-AROS): $(wildcard $(SRCDIR)/tools/collect-aros/*.[hc])
@$(ECHO) Building collect-aros...
@$(CALL) $(MAKE) $(MKARGS) -C $(SRCDIR)/tools/collect-aros SRCDIR=$(SRCDIR) TOP=$(TOP)
$(FD2INLINE): $(SRCDIR)/tools/fd2inline/fd2inline.c
@$(ECHO) Building fd2inline...
@$(CALL) $(MAKE) $(MKARGS) -C $(SRCDIR)/tools/fd2inline SRCDIR=$(SRCDIR) TOP=$(TOP)
$(FD2PRAGMA): $(SRCDIR)/tools/fd2pragma/fd2pragma.c
@$(ECHO) Building fd2pragma...
@$(CALL) $(MAKE) $(MKARGS) -C $(SRCDIR)/tools/fd2pragma SRCDIR=$(SRCDIR) TOP=$(TOP)
$(SFDC): $(SRCDIR)/tools/sfdc/*.pl
@$(ECHO) Building sfdc...
@$(CALL) $(MAKE) $(MKARGS) -C $(SRCDIR)/tools/sfdc SRCDIR=$(SRCDIR) TOP=$(TOP)
$(SETREV): $(SRCDIR)/tools/setrev/setrev.c
@$(ECHO) Building setrev...
@$(CALL) $(MAKE) $(MKARGS) -C $(SRCDIR)/tools/setrev SRCDIR=$(SRCDIR) TOP=$(TOP)
# MetaMake apparently requires a slighty different compilation. Probably
# because it is sort-of an external package as well.
mmake: $(TOP)/tools/MetaMake/Makefile $(MMAKE)
@$(NOP)
$(SRCDIR)/tools/MetaMake/configure: $(SRCDIR)/tools/MetaMake/configure.in
@$(ECHO) Building MetaMake...
@cd $(SRCDIR)/tools/MetaMake && @aros_host_aclocal@ && @aros_host_autoconf@
$(TOP)/tools/MetaMake/Makefile: $(SRCDIR)/tools/MetaMake/configure $(SRCDIR)/tools/MetaMake/Makefile.in
@$(IF) [ ! -d $(TOP)/tools/MetaMake ]; then \
$(MECHO) $(MKDIR) "$(TOP)/tools/MetaMake" ; \
$(MKDIR) "$(TOP)/tools/MetaMake"; \
fi;
@cd $(TOP)/tools/MetaMake ; CC="$(HOST_CC)" CFLAGS="$(HOST_CFLAGS) -D_FILE_OFFSET_BITS=64" LDFLAGS="$(HOST_LDFLAGS)" $(SRCDIR)/tools/MetaMake/configure --prefix=$(TOOLDIR) --bindir=$(TOOLDIR) --with-objfiledir=$(HOSTGENDIR)/tools/MetaMake
$(MMAKE): $(TOP)/tools/MetaMake/Makefile $(wildcard $(SRCDIR)/tools/MetaMake/*.[ch]) $(GENMFSCRIPT)
@$(MAKE) $(MKARGS) AUTOHEADER=@aros_host_autoheader@ -C $(TOP)/tools/MetaMake
@$(MAKE) $(MKARGS) -C $(TOP)/tools/MetaMake install
# Clean the sources and tools
clean:
@+$(CALL) $(MMAKE) $(MMAKE_OPTIONS) AROS.clean
@$(MAKE) $(MKARGS) -C $(TOP)/tools/MetaMake clean SRCDIR=$(SRCDIR) TOP=$(TOP)
@$(CALL) $(MAKE) $(MKARGS) -C $(SRCDIR)/tools/flexcat/src -f Makefile.aros clean SRCDIR=$(SRCDIR) TOP=$(TOP)
@$(CALL) $(MAKE) $(MKARGS) -C $(SRCDIR)/tools/archtools clean SRCDIR=$(SRCDIR) TOP=$(TOP)
@$(CALL) $(MAKE) $(MKARGS) -C $(SRCDIR)/tools/genmf clean
@$(CALL) $(MAKE) $(MKARGS) -C $(SRCDIR)/tools/dtdesc -f Makefile.aros clean SRCDIR=$(SRCDIR) TOP=$(TOP)
@$(CALL) $(MAKE) $(MKARGS) -C $(SRCDIR)/tools/collect-aros clean SRCDIR=$(SRCDIR) TOP=$(TOP)
@$(CALL) $(MAKE) $(MKARGS) -C $(SRCDIR)/tools/fd2inline clean SRCDIR=$(SRCDIR) TOP=$(TOP)
@$(CALL) $(MAKE) $(MKARGS) -C $(SRCDIR)/tools/fd2pragma clean SRCDIR=$(SRCDIR) TOP=$(TOP)
@$(CALL) $(MAKE) $(MKARGS) -C $(SRCDIR)/tools/sfdc clean SRCDIR=$(SRCDIR) TOP=$(TOP)
@$(CALL) $(MAKE) $(MKARGS) -C $(SRCDIR)/tools/setrev clean SRCDIR=$(SRCDIR) TOP=$(TOP)
-@$(RM) $(ARCHDIR) Makefile config.cache config.status config.log \
mmake.cache mmake.config rom/mmakefile config/make.cfg \
$(AROS_DEVELOPMENT)/include/aros/config.h \
$(GENDIR)/include/aros/config.h $(HOSTGENDIR)/config/host.cfg \
$(GENDIR)/config/target.cfg $(GENDIR)/config/make.defaults \
$(GENDIR)/config/specs \
$(TOOLDIR)/$(AROS_TARGET_CPU)-$(AROS_TARGET_ARCH)$(AROS_TARGET_SUFFIX)-aros-gcc \
$(TOOLDIR)/$(AROS_TARGET_CPU)-$(AROS_TARGET_ARCH)$(AROS_TARGET_SUFFIX)-aros-ld \
$(GENDIR)/scripts/genshared $(TOOLDIR)/genmf.py \
tools/adflib/myconf.aros tools/collect-aros/env.h
# Clean the sources and tools
arch-clean: clean
@$(NOP)
# Really clean all - like a clean checkout
dist-clean: arch-clean
@$(NOP)
sdk : crosstools features $(CONFIGUREFILES) $(NATIVEBUILDFILES) $(NATIVEBUILDARCHFILES)
@+$(CALL) $(MMAKE) $(MMAKE_OPTIONS) AROS.$@
sdk-test: parsesdkoffsets crosstools features $(CONFIGUREFILES)
@$(CALL) $(MAKE) $(MKARGS) -C $(GENDIR)/tools/parseoffsets SRCDIR=$(SRCDIR) TOP=$(TOP) test-sdk-headers-genfiles
# Don't try to generate $(TOP)/bin/$(AROS_TARGET_ARCH)-$(AROS_TARGET_CPU)$(AROS_TARGET_SUFFIX)/gen/config/make.opts
$(TOP)/bin/$(AROS_TARGET_ARCH)-$(AROS_TARGET_CPU)$(AROS_TARGET_SUFFIX)/gen/config/make.opts:
@$(NOP)
# targets which do not generate files or for which a file/directory exists
.PHONY: default all makedirs tools crosstools features docs clean arch-clean dist-clean install \
$(TOP)/bin/$(AROS_TARGET_ARCH)-$(AROS_TARGET_CPU)$(AROS_TARGET_SUFFIX)/gen/config/make.opts \
test kernel boot workbench compiler contrib ports sdk mmake query
# Workaround for bug in make v3.81 (should normally be handled by .DEFAULT)
install test kernel boot workbench compiler contrib ports : crosstools-toolchain features $(CONFIGUREFILES)
@+$(CALL) $(MMAKE) $(MMAKE_OPTIONS) AROS.$@
# Bypass crosstools target.
query: tools
@+$(CALL) $(MMAKE) $(MMAKE_OPTIONS) AROS.$@
# Map MetaTargets to make targets : Call mmake with AROS.target
# This does not allow to check for dependancies, so it is not suitable for
# Calling standard main targets, but is usable as a shortcut for MetaMake
# if it was not installed globally
#
distfiles::
@+$(CALL) $(MMAKE) $(MMAKE_OPTIONS) AROS.$@
# The '%-quick' and '%-clean' targets are special - we don't want to wait around
# for building crosstools if we just want to build one subtarget
%-quick %-clean:
@+$(CALL) $(MMAKE) $(MMAKE_OPTIONS) AROS.$@
.DEFAULT: $(CONFIGUREFILES)
@$(MAKE) $(MKARGS) crosstools-toolchain
@$(MAKE) $(MKARGS) crosstools-toolchain features
@+$(CALL) $(MMAKE) $(MMAKE_OPTIONS) AROS.$@