2 # Open \______ \ ____ ____ | | _\_ |__ _______ ___
3 # Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
4 # Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
5 # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
10 # preprocess - run preprocessor on a file and return the result as a string
12 # The weird grep -v thing in here is due to Apple's stupidities and is needed
13 # to make this do right when used on Mac OS X.
15 # The sed line is to prepend the directory to all source files
17 preprocess
= $(shell $(CC
) $(PPCFLAGS
) $(2) -E
-P
-x c
-include config.h
$(1) | \
18 grep
-v
'^\#' | grep
-v
"^ *$$" | \
19 sed
-e
's:^..*:$(dir $(1))&:')
21 preprocess2file
= $(SILENT
)$(CC
) $(PPCFLAGS
) $(3) -E
-P
-x c
-include config.h
$(1) | \
22 grep
-v
'^\#' | grep
-v
"^$$" > $(2)
24 asmdefs2file
= $(SILENT
)$(CC
) $(PPCFLAGS
) $(3) -S
-x c
-o
- -include config.h
$(1) | \
25 perl
-ne
'if(/^_?AD_(\w+):$$/){$$var=$$1}else{/^\W\.(?:word|long)\W(.*)$$/ && $$var && print "\#define $$var $$1\n";$$var=0}' > $(2)
27 c2obj
= $(addsuffix .o
,$(basename $(subst $(ROOTDIR
),$(BUILDDIR
),$(1))))
29 a2lnk
= $(patsubst lib
%.a
,-l
%,$(notdir $(1)))
31 # objcopy wrapper that keeps debug symbols in DEBUG builds
32 # handles the $(1) == $(2) case too
34 objcopy
= $(OC
) $(if
$(filter yes
, $(USE_ELF
)), -S
-x
, -O binary
) $(1) $(2) # objcopy native
35 else ifneq (,$(findstring sdl-sim
,$(APP_TYPE
)))
36 objcopy
= cp
$(1) $(1).tmp
;mv
-f
$(1).tmp
$(2) # objcopy simulator
39 objcopy
= cp
$(1) $(1).tmp
;mv
-f
$(1).tmp
$(2) # objcopy hosted (DEBUG)
41 objcopy
= $(OC
) -S
-x
$(1) $(2) # objcopy hosted (!DEBUG)
45 # calculate dependencies for a list of source files $(2) and output them to $(1)
46 mkdepfile
= $(SILENT
)perl
$(TOOLSDIR
)/multigcc.pl
$(CC
) $(PPCFLAGS
) $(OTHER_INC
) -MG
-MM
-include config.h
-- $(2) | \
47 sed
-e
"s: lang.h: lang/lang.h:" \
48 -e
's:_asmdefs.o:_asmdefs.h:' \
49 -e
"s: max_language_size.h: lang/max_language_size.h:" | \
50 $(TOOLSDIR
)/addtargetdir.pl
$(ROOTDIR
) $(BUILDDIR
) \
53 # function to create .bmp dependencies
54 bmpdepfile
= $(SILENT
) \
55 for each in
$(2); do \
56 obj
=`echo $$each | sed -e 's/\.bmp/.o/' -e 's:$(ROOTDIR):$(BUILDDIR):'`; \
57 src
=`echo $$each | sed -e 's/\.bmp/.c/' -e 's:$(ROOTDIR):$(BUILDDIR):'`; \
68 PRINTS
=$(SILENT
)$(call
info,$(1))
70 # old 'make' versions don't have the built-in 'info' function
71 info=old
$(shell echo
>&2 "Consider upgrading to GNU make 3.81+ for optimum build performance.")
72 ifeq ($(call
info),old
)
73 export info=echo
"$$(1)";