mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-09 05:05:20 -05:00
Add new asmdefs mechanism for exporting information only available to the C compiler for use in asm files, and use it in arm jpeg idct. See apps/apps.make, apps/core_asmdefs.c, and apps/recorder/jpeg_idct_arm.S for details.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21831 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
36eeecbe9a
commit
668a769ca4
6 changed files with 87 additions and 152 deletions
|
|
@ -23,6 +23,7 @@ my $src;
|
|||
# Split the input file on any runs of '\' and whitespace.
|
||||
for (split(/[\s\\]+/m, <STDIN>)) {
|
||||
/^(\/)?[^:]+(\:)?$/;
|
||||
print ">>$& $src"
|
||||
# Save target and continue if this item ends in ':'
|
||||
if (!($2 && ($target=$&))) {
|
||||
$src = $&;
|
||||
|
|
|
|||
|
|
@ -25,6 +25,9 @@ preprocess = $(shell $(CC) $(PPCFLAGS) $(2) -E -P -x c -include config.h $(1) |
|
|||
preprocess2file = $(shell $(CC) $(PPCFLAGS) $(3) -E -P -x c -include config.h $(1) | \
|
||||
grep -v '^\#' | grep -v "^$$" > $(2))
|
||||
|
||||
asmdefs2file = $(shell $(CC) $(PPCFLAGS) $(3) -S -x c -o - -include config.h $(1) | \
|
||||
perl -ne 'if(/^AD_(\w+):$$/){$$var=$$1}else{/^\W\.word\W(.*)$$/ && $$var && print "\#define $$var $$1\n";$$var=0}' > $2)
|
||||
|
||||
c2obj = $(addsuffix .o,$(basename $(subst $(ROOTDIR),$(BUILDDIR),$(1))))
|
||||
|
||||
# calculate dependencies for a list of source files $(2) and output them
|
||||
|
|
@ -32,6 +35,7 @@ c2obj = $(addsuffix .o,$(basename $(subst $(ROOTDIR),$(BUILDDIR),$(1))))
|
|||
mkdepfile = $(shell \
|
||||
$(CC) $(PPCFLAGS) $(OTHER_INC) -MG -MM -include config.h $(2) | \
|
||||
sed -e "s: lang.h: lang/lang_core.o:" \
|
||||
-e 's:_asmdefs.o:_asmdefs.h:' \
|
||||
-e "s: max_language_size.h: lang/max_language_size.h:" | \
|
||||
$(TOOLSDIR)/addtargetdir.pl $(ROOTDIR) $(BUILDDIR) \
|
||||
>> $(1)_)
|
||||
|
|
|
|||
|
|
@ -51,8 +51,8 @@ endif
|
|||
|
||||
all: $(DEPFILE) build
|
||||
|
||||
# Subdir makefiles. their primary purpose is to populate SRC & OTHER_SRC
|
||||
# but they also define special dependencies and compile rules
|
||||
# Subdir makefiles. their primary purpose is to populate SRC, OTHER_SRC &
|
||||
# ASMDEFS_SRC but they also define special dependencies and compile rules
|
||||
include $(TOOLSDIR)/tools.make
|
||||
include $(FIRMDIR)/firmware.make
|
||||
include $(ROOTDIR)/apps/bitmaps/bitmaps.make
|
||||
|
|
@ -96,6 +96,7 @@ $(DEPFILE) dep:
|
|||
@echo foo > /dev/null # there must be a "real" command in the rule
|
||||
$(call mkdepfile,$(DEPFILE),$(SRC))
|
||||
$(call mkdepfile,$(DEPFILE),$(OTHER_SRC))
|
||||
$(call mkdepfile,$(DEPFILE),$(ASMDEFS_SRC))
|
||||
@mv $(DEPFILE)_ $(DEPFILE)
|
||||
$(call bmpdepfile,$(DEPFILE),$(BMP) $(PBMP))
|
||||
|
||||
|
|
@ -317,6 +318,12 @@ $(BUILDDIR)/%.o: $(ROOTDIR)/%.S
|
|||
$(SILENT)mkdir -p $(dir $@)
|
||||
$(call PRINTS,CC $(subst $(ROOTDIR)/,,$<))$(CC) $(CFLAGS) -c $< -o $@
|
||||
|
||||
# generated definitions for use in .S files
|
||||
$(BUILDDIR)/%_asmdefs.h: $(ROOTDIR)/%_asmdefs.c
|
||||
$(call PRINTS,ASMDEFS $(@F))
|
||||
$(SILENT)mkdir -p $(dir $@)
|
||||
$(call asmdefs2file,$<,$@)
|
||||
|
||||
# when source and object are both in BUILDDIR (generated code):
|
||||
%.o: %.c
|
||||
$(SILENT)mkdir -p $(dir $@)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue