summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2012-03-26 22:24:57 +0200
committerThomas Martitz <kugel@rockbox.org>2012-03-26 22:27:40 +0200
commitf269aa0060950f7b9c42216267c639a2fb556196 (patch)
tree218ad3a737f11cb18e48676f300bc22038cfa140
parent9445d4625a3d47b28d756a5763165eb73d6b4ada (diff)
downloadrockbox-f269aa0060950f7b9c42216267c639a2fb556196.tar.gz
rockbox-f269aa0060950f7b9c42216267c639a2fb556196.zip
build system: unify/simplify library handling a bit.
libs in $ROOT/lib now add to $(CORE_LIBS) and $(EXTRA_LIBS) and are automatically linked by the core and codecs/plugins respectively. Change-Id: Iff482c792a8c8142718f6a16a450c6e2f1497c9a
-rw-r--r--android/android.make2
-rw-r--r--apps/codecs/codecs.make17
-rw-r--r--apps/plugins/imageviewer/imageviewer.make2
-rw-r--r--apps/plugins/mikmod/mikmod.make2
-rw-r--r--apps/plugins/pdbox/pdbox.make2
-rw-r--r--apps/plugins/plugins.make8
-rw-r--r--firmware/target/hosted/ypr0/ypr0.make8
-rw-r--r--lib/arm_support/arm_support.make16
-rw-r--r--lib/libsetjmp/libsetjmp.make16
-rw-r--r--lib/rbcodec/rbcodec.make18
-rw-r--r--lib/skin_parser/skin_parser.make16
-rw-r--r--lib/unwarminder/unwarminder.make15
-rw-r--r--tools/functions.make2
-rw-r--r--tools/root.make43
-rw-r--r--uisimulator/uisimulator.make2
15 files changed, 79 insertions, 90 deletions
diff --git a/android/android.make b/android/android.make
index f18b3f958e..dfbc64ef6e 100644
--- a/android/android.make
+++ b/android/android.make
@@ -114,7 +114,7 @@ dex: $(DEX)
114classes: $(R_OBJ) $(JAVA_OBJ) 114classes: $(R_OBJ) $(JAVA_OBJ)
115 115
116 116
117$(BUILDDIR)/$(BINARY): $$(OBJ) $(VOICESPEEXLIB) $(FIRMLIB) $(RBCODEC_LIB) $(SKINLIB) $(UNWARMINDER) $(CPUFEAT_BUILD)/cpu-features.o 117$(BUILDDIR)/$(BINARY): $$(OBJ) $(FIRMLIB) $(VOICESPEEXLIB) $(CORE_LIBS) $(CPUFEAT_BUILD)/cpu-features.o
118 $(call PRINTS,LD $(BINARY))$(CC) -o $@ $^ $(LDOPTS) $(GLOBAL_LDOPTS) -Wl,-Map,$(BUILDDIR)/rockbox.map 118 $(call PRINTS,LD $(BINARY))$(CC) -o $@ $^ $(LDOPTS) $(GLOBAL_LDOPTS) -Wl,-Map,$(BUILDDIR)/rockbox.map
119 $(call PRINTS,OC $(@F))$(OC) -S -x $@ 119 $(call PRINTS,OC $(@F))$(OC) -S -x $@
120 120
diff --git a/apps/codecs/codecs.make b/apps/codecs/codecs.make
index 55002b229b..37713015ad 100644
--- a/apps/codecs/codecs.make
+++ b/apps/codecs/codecs.make
@@ -21,6 +21,9 @@ include $(APPSDIR)/codecs/lib/tlsf/libtlsf.make
21include $(APPSDIR)/codecs/lib/libcodec.make 21include $(APPSDIR)/codecs/lib/libcodec.make
22OTHER_INC += -I$(APPSDIR)/codecs/lib 22OTHER_INC += -I$(APPSDIR)/codecs/lib
23 23
24# extra libraries
25CODEC_LIBS := $(EXTRA_LIBS) $(TLSFLIB) $(CODECLIB)
26
24# the codec libraries 27# the codec libraries
25include $(APPSDIR)/codecs/demac/libdemac.make 28include $(APPSDIR)/codecs/demac/libdemac.make
26include $(APPSDIR)/codecs/liba52/liba52.make 29include $(APPSDIR)/codecs/liba52/liba52.make
@@ -135,7 +138,7 @@ $(CODECDIR)/spc.codec : $(CODECDIR)/libspc.a
135$(CODECDIR)/mpa.codec : $(CODECDIR)/libmad.a 138$(CODECDIR)/mpa.codec : $(CODECDIR)/libmad.a
136$(CODECDIR)/a52.codec : $(CODECDIR)/liba52.a 139$(CODECDIR)/a52.codec : $(CODECDIR)/liba52.a
137$(CODECDIR)/flac.codec : $(CODECDIR)/libffmpegFLAC.a 140$(CODECDIR)/flac.codec : $(CODECDIR)/libffmpegFLAC.a
138$(CODECDIR)/vorbis.codec : $(CODECDIR)/libtremor.a $(TLSFLIB) 141$(CODECDIR)/vorbis.codec : $(CODECDIR)/libtremor.a
139$(CODECDIR)/speex.codec : $(CODECDIR)/libspeex.a 142$(CODECDIR)/speex.codec : $(CODECDIR)/libspeex.a
140$(CODECDIR)/mpc.codec : $(CODECDIR)/libmusepack.a 143$(CODECDIR)/mpc.codec : $(CODECDIR)/libmusepack.a
141$(CODECDIR)/wavpack.codec : $(CODECDIR)/libwavpack.a 144$(CODECDIR)/wavpack.codec : $(CODECDIR)/libwavpack.a
@@ -168,10 +171,7 @@ $(CODECDIR)/sgc.codec : $(CODECDIR)/libsgc.a $(CODECDIR)/libemu2413.a
168$(CODECDIR)/vgm.codec : $(CODECDIR)/libvgm.a $(CODECDIR)/libemu2413.a 171$(CODECDIR)/vgm.codec : $(CODECDIR)/libvgm.a $(CODECDIR)/libemu2413.a
169$(CODECDIR)/kss.codec : $(CODECDIR)/libkss.a $(CODECDIR)/libemu2413.a 172$(CODECDIR)/kss.codec : $(CODECDIR)/libkss.a $(CODECDIR)/libemu2413.a
170 173
171$(CODECS): $(CODECLIB) # this must be last in codec dependency list 174$(CODECS): $(CODEC_LIBS) # this must be last in codec dependency list
172
173# libfaad and libmusepack both contain a huffman.h file, with different
174# content. So we compile them with special command lines:
175 175
176# pattern rule for compiling codecs 176# pattern rule for compiling codecs
177$(CODECDIR)/%.o: $(ROOTDIR)/apps/codecs/%.c 177$(CODECDIR)/%.o: $(ROOTDIR)/apps/codecs/%.c
@@ -194,14 +194,13 @@ else
194endif 194endif
195CODECLDFLAGS += $(GLOBAL_LDOPTS) 195CODECLDFLAGS += $(GLOBAL_LDOPTS)
196 196
197$(CODECDIR)/%-pre.map: $(CODEC_CRT0) $(CODECLINK_LDS) $(CODECDIR)/%.o $(CODECLIB) 197$(CODECDIR)/%-pre.map: $(CODEC_CRT0) $(CODECLINK_LDS) $(CODECDIR)/%.o $(CODECS_LIBS)
198 $(call PRINTS,LD $(@F))$(CC) $(CODECFLAGS) -o $(CODECDIR)/$*-pre.elf \ 198 $(call PRINTS,LD $(@F))$(CC) $(CODECFLAGS) -o $(CODECDIR)/$*-pre.elf \
199 $(filter %.o, $^) \ 199 $(filter %.o, $^) \
200 $(filter-out $(CODECLIB),$(filter %.a, $+)) \ 200 $(filter-out $(CODECLIB),$(filter %.a, $+)) $(CODECLIB) \
201 $(CODECLIB) \
202 -lgcc $(subst .map,-pre.map,$(CODECLDFLAGS)) 201 -lgcc $(subst .map,-pre.map,$(CODECLDFLAGS))
203 202
204$(CODECDIR)/%.codec: $(CODECDIR)/%.o $(LIBSETJMP) $(LIBARMSUPPORT) 203$(CODECDIR)/%.codec: $(CODECDIR)/%.o
205 $(call PRINTS,LD $(@F))$(CC) $(CODECFLAGS) -o $(CODECDIR)/$*.elf \ 204 $(call PRINTS,LD $(@F))$(CC) $(CODECFLAGS) -o $(CODECDIR)/$*.elf \
206 $(filter %.o, $^) \ 205 $(filter %.o, $^) \
207 $(filter %.a, $+) \ 206 $(filter %.a, $+) \
diff --git a/apps/plugins/imageviewer/imageviewer.make b/apps/plugins/imageviewer/imageviewer.make
index 76cc3e266d..7f7d94320a 100644
--- a/apps/plugins/imageviewer/imageviewer.make
+++ b/apps/plugins/imageviewer/imageviewer.make
@@ -47,7 +47,7 @@ else
47endif 47endif
48 48
49# rule to create reference map for image decoder 49# rule to create reference map for image decoder
50$(IMGVBUILDDIR)/%.refmap: $(APPSDIR)/plugin.h $(IMGVSRCDIR)/imageviewer.h $(PLUGINLINK_LDS) $(LIBARMSUPPORT) $(PLUGINLIB) $(PLUGINBITMAPLIB) 50$(IMGVBUILDDIR)/%.refmap: $(APPSDIR)/plugin.h $(IMGVSRCDIR)/imageviewer.h $(PLUGINLINK_LDS) $(PLUGIN_LIBS)
51 $(call PRINTS,LD $(@F))$(CC) $(IMGDECFLAGS) -o /dev/null \ 51 $(call PRINTS,LD $(@F))$(CC) $(IMGDECFLAGS) -o /dev/null \
52 $(filter %.o, $^) \ 52 $(filter %.o, $^) \
53 $(filter %.a, $+) \ 53 $(filter %.a, $+) \
diff --git a/apps/plugins/mikmod/mikmod.make b/apps/plugins/mikmod/mikmod.make
index c975e1e5c7..38a95c3695 100644
--- a/apps/plugins/mikmod/mikmod.make
+++ b/apps/plugins/mikmod/mikmod.make
@@ -20,7 +20,7 @@ OTHER_SRC += $(MIKMOD_SRC)
20 20
21MIKMODCFLAGS = $(PLUGINFLAGS) -I$(MIKMODSRCDIR) -O2 21MIKMODCFLAGS = $(PLUGINFLAGS) -I$(MIKMODSRCDIR) -O2
22 22
23$(MIKMODBUILDDIR)/mikmod.rock: $(MIKMOD_OBJ) $(CODECDIR)/libtlsf.a 23$(MIKMODBUILDDIR)/mikmod.rock: $(MIKMOD_OBJ)
24 24
25# new rule needed to use extra compile flags 25# new rule needed to use extra compile flags
26$(MIKMODBUILDDIR)/%.o: $(MIKMODSRCDIR)/%.c 26$(MIKMODBUILDDIR)/%.o: $(MIKMODSRCDIR)/%.c
diff --git a/apps/plugins/pdbox/pdbox.make b/apps/plugins/pdbox/pdbox.make
index 0e40232321..239e1c0852 100644
--- a/apps/plugins/pdbox/pdbox.make
+++ b/apps/plugins/pdbox/pdbox.make
@@ -18,7 +18,7 @@ PDBOX_OBJ := $(call c2obj, $(PDBOX_SRC))
18# add source files to OTHERSRC to get automatic dependencies 18# add source files to OTHERSRC to get automatic dependencies
19OTHER_SRC += $(PDBOX_SRC) 19OTHER_SRC += $(PDBOX_SRC)
20 20
21$(PDBOXBUILDDIR)/pdbox.rock: $(PDBOX_OBJ) $(MPEG_OBJ) $(CODECDIR)/libtlsf.a 21$(PDBOXBUILDDIR)/pdbox.rock: $(PDBOX_OBJ) $(MPEG_OBJ)
22 22
23PDBOXFLAGS = $(PLUGINFLAGS) -fno-strict-aliasing 23PDBOXFLAGS = $(PLUGINFLAGS) -fno-strict-aliasing
24PDBOXLDFLAGS = $(PLUGINLDFLAGS) 24PDBOXLDFLAGS = $(PLUGINLDFLAGS)
diff --git a/apps/plugins/plugins.make b/apps/plugins/plugins.make
index 272b1b8e93..3ea6d96432 100644
--- a/apps/plugins/plugins.make
+++ b/apps/plugins/plugins.make
@@ -53,6 +53,8 @@ else
53PLUGINSUBDIRS := $(call preprocess, $(APPSDIR)/plugins/SUBDIRS) 53PLUGINSUBDIRS := $(call preprocess, $(APPSDIR)/plugins/SUBDIRS)
54endif 54endif
55 55
56PLUGIN_LIBS := $(EXTRA_LIBS) $(TLSFLIB) $(PLUGINLIB) $(PLUGINBITMAPLIB)
57
56# include <dir>.make from each subdir (yay!) 58# include <dir>.make from each subdir (yay!)
57$(foreach dir,$(PLUGINSUBDIRS),$(eval include $(dir)/$(notdir $(dir)).make)) 59$(foreach dir,$(PLUGINSUBDIRS),$(eval include $(dir)/$(notdir $(dir)).make))
58 60
@@ -65,7 +67,7 @@ PLUGINFLAGS = -I$(APPSDIR)/plugins -DPLUGIN $(CFLAGS)
65$(ROCKS1): $(BUILDDIR)/%.rock: $(BUILDDIR)/%.o 67$(ROCKS1): $(BUILDDIR)/%.rock: $(BUILDDIR)/%.o
66 68
67# dependency for all plugins 69# dependency for all plugins
68$(ROCKS): $(APPSDIR)/plugin.h $(PLUGINLINK_LDS) $(LIBARMSUPPORT) $(PLUGINLIB) $(PLUGINBITMAPLIB) $(PLUGIN_CRT0) $(LIBSETJMP) 70$(ROCKS): $(APPSDIR)/plugin.h $(PLUGINLINK_LDS) $(PLUGIN_LIBS) $(PLUGIN_CRT0)
69 71
70$(PLUGINLIB): $(PLUGINLIB_OBJ) 72$(PLUGINLIB): $(PLUGINLIB_OBJ)
71 $(SILENT)$(shell rm -f $@) 73 $(SILENT)$(shell rm -f $@)
@@ -85,7 +87,7 @@ $(BUILDDIR)/credits.raw credits.raw: $(DOCSDIR)/CREDITS
85 $(call PRINTS,Create credits.raw)perl $(APPSDIR)/plugins/credits.pl < $< > $(BUILDDIR)/$(@F) 87 $(call PRINTS,Create credits.raw)perl $(APPSDIR)/plugins/credits.pl < $< > $(BUILDDIR)/$(@F)
86 88
87# special dependencies 89# special dependencies
88$(BUILDDIR)/apps/plugins/wav2wv.rock: $(BUILDDIR)/apps/codecs/libwavpack.a $(PLUGINLIB) 90$(BUILDDIR)/apps/plugins/wav2wv.rock: $(BUILDDIR)/apps/codecs/libwavpack.a $(PLUGIN_LIBS)
89 91
90# Do not use '-ffunction-sections' and '-fdata-sections' when compiling sdl-sim 92# Do not use '-ffunction-sections' and '-fdata-sections' when compiling sdl-sim
91ifeq ($(findstring sdl-sim, $(APP_TYPE)), sdl-sim) 93ifeq ($(findstring sdl-sim, $(APP_TYPE)), sdl-sim)
@@ -129,7 +131,7 @@ endif
129$(BUILDDIR)/apps/plugins/%.lua: $(ROOTDIR)/apps/plugins/%.lua 131$(BUILDDIR)/apps/plugins/%.lua: $(ROOTDIR)/apps/plugins/%.lua
130 $(call PRINTS,CP $(subst $(ROOTDIR)/,,$<))cp $< $(BUILDDIR)/apps/plugins/ 132 $(call PRINTS,CP $(subst $(ROOTDIR)/,,$<))cp $< $(BUILDDIR)/apps/plugins/
131 133
132$(BUILDDIR)/%.refmap: $(APPSDIR)/plugin.h $(OVERLAYREF_LDS) $(LIBARMSUPPORT) $(PLUGINLIB) $(PLUGINBITMAPLIB) $(LIBSETJMP) $(PLUGIN_CRT0) 134$(BUILDDIR)/%.refmap: $(APPSDIR)/plugin.h $(OVERLAYREF_LDS) $(PLUGIN_LIBS)
133 $(call PRINTS,LD $(@F))$(CC) $(PLUGINFLAGS) -o /dev/null \ 135 $(call PRINTS,LD $(@F))$(CC) $(PLUGINFLAGS) -o /dev/null \
134 $(filter %.o, $^) \ 136 $(filter %.o, $^) \
135 $(filter %.a, $+) \ 137 $(filter %.a, $+) \
diff --git a/firmware/target/hosted/ypr0/ypr0.make b/firmware/target/hosted/ypr0/ypr0.make
index d74b9058f5..68f53902ad 100644
--- a/firmware/target/hosted/ypr0/ypr0.make
+++ b/firmware/target/hosted/ypr0/ypr0.make
@@ -13,13 +13,11 @@ SIMFLAGS += $(INCLUDES) $(DEFINES) -DHAVE_CONFIG_H $(GCCOPTS)
13 13
14.SECONDEXPANSION: # $$(OBJ) is not populated until after this 14.SECONDEXPANSION: # $$(OBJ) is not populated until after this
15 15
16 16$(BUILDDIR)/rockbox.elf : $$(OBJ) $(FIRMLIB) $(VOICESPEEXLIB) $(CORE_LIBS)
17$(BUILDDIR)/rockbox.elf : $$(OBJ) $$(RBCODEC_LIB) $$(FIRMLIB) $$(VOICESPEEXLIB) $$(SKINLIB) $$(UNWARMINDER)
18 $(call PRINTS,LD $(@F))$(CC) $(GCCOPTS) -Os -o $@ $(OBJ) \ 17 $(call PRINTS,LD $(@F))$(CC) $(GCCOPTS) -Os -o $@ $(OBJ) \
19 -L$(BUILDDIR)/firmware -lfirmware \ 18 -L$(BUILDDIR)/firmware -lfirmware \
20 $(RBCODEC_LIB) \ 19 -L$(BUILDDIR)/apps/codecs $(call a2lnk, $(VOICESPEEXLIB)) \
21 -L$(BUILDDIR)/apps/codecs $(VOICESPEEXLIB:lib%.a=-l%) \ 20 -L$(BUILDDIR)/lib $(call a2lnk,$(CORE_LIBS)) \
22 -L$(BUILDDIR)/lib -lskin_parser \
23 $(LDOPTS) $(GLOBAL_LDOPTS) -Wl,-Map,$(BUILDDIR)/rockbox.map 21 $(LDOPTS) $(GLOBAL_LDOPTS) -Wl,-Map,$(BUILDDIR)/rockbox.map
24 22
25$(BUILDDIR)/rockbox : $(BUILDDIR)/rockbox.elf 23$(BUILDDIR)/rockbox : $(BUILDDIR)/rockbox.elf
diff --git a/lib/arm_support/arm_support.make b/lib/arm_support/arm_support.make
index a3775ee3b0..054d723e62 100644
--- a/lib/arm_support/arm_support.make
+++ b/lib/arm_support/arm_support.make
@@ -6,14 +6,16 @@
6# \/ \/ \/ \/ \/ 6# \/ \/ \/ \/ \/
7# 7#
8 8
9ARMSUPPORT_DIR = $(ROOTDIR)/lib/arm_support 9ARMSUPPORTLIB_DIR := $(ROOTDIR)/lib/arm_support
10ARMSUPPORT_SRC = $(ARMSUPPORT_DIR)/support-arm.S 10ARMSUPPORTLIB_SRC := $(ARMSUPPORTLIB_DIR)/support-arm.S
11ARMSUPPORT_OBJ := $(call c2obj, $(ARMSUPPORT_SRC)) 11ARMSUPPORTLIB_OBJ := $(call c2obj, $(ARMSUPPORTLIB_SRC))
12ARMSUPPORTLIB := $(BUILDDIR)/lib/libarm_support.a
12 13
13OTHER_SRC += $(ARMSUPPORT_SRC) 14OTHER_SRC += $(ARMSUPPORTLIB_SRC)
15# both core and plugins link this
16CORE_LIBS += $(ARMSUPPORTLIB)
17PLUGIN_LIBS += $(ARMSUPPORTLIB)
14 18
15LIBARMSUPPORT := $(BUILDDIR)/lib/libarm_support.a 19$(ARMSUPPORTLIB): $(ARMSUPPORTLIB_OBJ)
16
17$(LIBARMSUPPORT): $(ARMSUPPORT_OBJ)
18 $(SILENT)$(shell rm -f $@) 20 $(SILENT)$(shell rm -f $@)
19 $(call PRINTS,AR $(@F))$(AR) rcs $@ $^ >/dev/null 21 $(call PRINTS,AR $(@F))$(AR) rcs $@ $^ >/dev/null
diff --git a/lib/libsetjmp/libsetjmp.make b/lib/libsetjmp/libsetjmp.make
index b7d4cad25f..f8df7513c9 100644
--- a/lib/libsetjmp/libsetjmp.make
+++ b/lib/libsetjmp/libsetjmp.make
@@ -6,16 +6,16 @@
6# \/ \/ \/ \/ \/ 6# \/ \/ \/ \/ \/
7# 7#
8 8
9SETJMP_DIR = $(ROOTDIR)/lib/libsetjmp 9SETJMPLIB_DIR = $(ROOTDIR)/lib/libsetjmp
10SETJMP_SRC = $(call preprocess, $(SETJMP_DIR)/SOURCES) 10SETJMPLIB_SRC = $(call preprocess, $(SETJMPLIB_DIR)/SOURCES)
11SETJMP_OBJ := $(call c2obj, $(SETJMP_SRC)) 11SETJMPLIB_OBJ := $(call c2obj, $(SETJMPLIB_SRC))
12 12
13OTHER_SRC += $(SETJMP_SRC) 13SETJMPLIB = $(BUILDDIR)/lib/libsetjmp.a
14 14
15LIBSETJMP = $(BUILDDIR)/lib/libsetjmp.a 15INCLUDES += -I$(SETJMPLIB_DIR)
16OTHER_SRC += $(SETJMPLIB_SRC)
17EXTRA_LIBS += $(SETJMPLIB)
16 18
17INCLUDES += -I$(SETJMP_DIR) 19$(SETJMPLIB): $(SETJMPLIB_OBJ)
18
19$(LIBSETJMP): $(SETJMP_OBJ)
20 $(SILENT)$(shell rm -f $@) 20 $(SILENT)$(shell rm -f $@)
21 $(call PRINTS,AR $(@F))$(AR) rcs $@ $^ >/dev/null 21 $(call PRINTS,AR $(@F))$(AR) rcs $@ $^ >/dev/null
diff --git a/lib/rbcodec/rbcodec.make b/lib/rbcodec/rbcodec.make
index afa289ba28..cd669d22c9 100644
--- a/lib/rbcodec/rbcodec.make
+++ b/lib/rbcodec/rbcodec.make
@@ -5,15 +5,15 @@
5# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 5# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
6# \/ \/ \/ \/ \/ 6# \/ \/ \/ \/ \/
7 7
8RBCODEC_LIB = $(RBCODEC_BLD)/librbcodec.a 8# RBCODEC_BLD is defined in the calling Makefile
9RBCODEC_SRC := $(call preprocess, $(RBCODEC_DIR)/SOURCES) 9RBCODECLIB_DIR := $(ROOTDIR)/lib/rbcodec
10RBCODEC_OBJ := $(call c2obj, $(RBCODEC_SRC)) 10RBCODECLIB_SRC := $(call preprocess, $(RBCODECLIB_DIR)/SOURCES)
11INCLUDES += -I$(RBCODEC_DIR) -I$(RBCODEC_DIR)/dsp -I$(RBCODEC_DIR)/metadata 11RBCODECLIB_OBJ := $(call c2obj, $(RBCODECLIB_SRC))
12OTHER_SRC += $(RBCODEC_SRC) 12RBCODECLIB := $(BUILDDIR)/lib/librbcodec.a
13 13
14$(RBCODEC_BLD)/%.o: $(RBCODEC_DIR)/%.c 14INCLUDES += -I$(RBCODECLIB_DIR) -I$(RBCODECLIB_DIR)/dsp -I$(RBCODECLIB_DIR)/metadata
15 $(SILENT)mkdir -p $(dir $@) 15OTHER_SRC += $(RBCODECLIB_SRC)
16 $(call PRINTS,CC $<)$(CC) $(CFLAGS) $(RBCODEC_CFLAGS) -c $< -o $@ 16CORE_LIBS += $(RBCODECLIB)
17 17
18$(RBCODEC_LIB): $(RBCODEC_OBJ) 18$(RBCODECLIB): $(RBCODECLIB_OBJ)
19 $(call PRINTS,AR $(@F))$(AR) rcs $@ $^ >/dev/null 19 $(call PRINTS,AR $(@F))$(AR) rcs $@ $^ >/dev/null
diff --git a/lib/skin_parser/skin_parser.make b/lib/skin_parser/skin_parser.make
index 0be85f3e58..42104a2822 100644
--- a/lib/skin_parser/skin_parser.make
+++ b/lib/skin_parser/skin_parser.make
@@ -5,16 +5,16 @@
5# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 5# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
6# \/ \/ \/ \/ \/ 6# \/ \/ \/ \/ \/
7# 7#
8SKINP_DIR = $(ROOTDIR)/lib/skin_parser 8SKINPARSLIB_DIR = $(ROOTDIR)/lib/skin_parser
9SKINP_SRC = $(call preprocess, $(SKINP_DIR)/SOURCES) 9SKINPARSLIB_SRC = $(call preprocess, $(SKINPARSLIB_DIR)/SOURCES)
10SKINP_OBJ := $(call c2obj, $(SKINP_SRC)) 10SKINPARSLIB_OBJ := $(call c2obj, $(SKINPARSLIB_SRC))
11 11
12OTHER_SRC += $(SKINP_SRC) 12SKINPARSLIB = $(BUILDDIR)/lib/libskin_parser.a
13 13
14SKINLIB = $(BUILDDIR)/lib/libskin_parser.a 14INCLUDES += -I$(SKINPARSLIB_DIR)
15OTHER_SRC += $(SKINPARSLIB_SRC)
16CORE_LIBS += $(SKINPARSLIB)
15 17
16INCLUDES += -I$(SKINP_DIR) 18$(SKINPARSLIB): $(SKINPARSLIB_OBJ)
17
18$(SKINLIB): $(SKINP_OBJ)
19 $(SILENT)$(shell rm -f $@) 19 $(SILENT)$(shell rm -f $@)
20 $(call PRINTS,AR $(@F))$(AR) rcs $@ $^ >/dev/null 20 $(call PRINTS,AR $(@F))$(AR) rcs $@ $^ >/dev/null
diff --git a/lib/unwarminder/unwarminder.make b/lib/unwarminder/unwarminder.make
index f570d49640..5093156f54 100644
--- a/lib/unwarminder/unwarminder.make
+++ b/lib/unwarminder/unwarminder.make
@@ -6,16 +6,17 @@
6# \/ \/ \/ \/ \/ 6# \/ \/ \/ \/ \/
7# 7#
8 8
9UNWARM_DIR = $(ROOTDIR)/lib/unwarminder 9UNWARMLIB_DIR = $(ROOTDIR)/lib/unwarminder
10UNWARM_SRC = $(call preprocess, $(UNWARM_DIR)/SOURCES) 10UNWARMLIB_SRC = $(call preprocess, $(UNWARMLIB_DIR)/SOURCES)
11UNWARM_OBJ := $(call c2obj, $(UNWARM_SRC)) 11UNWARMLIB_OBJ := $(call c2obj, $(UNWARMLIB_SRC))
12 12
13OTHER_SRC += $(UNWARM_SRC) 13OTHER_SRC += $(UNWARMLIB_SRC)
14 14
15UNWARMINDER = $(BUILDDIR)/lib/libunwarminder.a 15UNWARMLIB = $(BUILDDIR)/lib/libunwarminder.a
16CORE_LIBS += $(UNWARMLIB)
16 17
17INCLUDES += -I$(UNWARM_DIR) 18INCLUDES += -I$(UNWARMLIB_DIR)
18 19
19$(UNWARMINDER): $(UNWARM_OBJ) 20$(UNWARMLIB): $(UNWARMLIB_OBJ)
20 $(SILENT)$(shell rm -f $@) 21 $(SILENT)$(shell rm -f $@)
21 $(call PRINTS,AR $(@F))$(AR) rcs $@ $^ >/dev/null 22 $(call PRINTS,AR $(@F))$(AR) rcs $@ $^ >/dev/null
diff --git a/tools/functions.make b/tools/functions.make
index 26fc471c3c..db7bbe9680 100644
--- a/tools/functions.make
+++ b/tools/functions.make
@@ -26,6 +26,8 @@ asmdefs2file = $(SILENT)$(CC) $(PPCFLAGS) $(3) -S -x c -o - -include config.h $(
26 26
27c2obj = $(addsuffix .o,$(basename $(subst $(ROOTDIR),$(BUILDDIR),$(1)))) 27c2obj = $(addsuffix .o,$(basename $(subst $(ROOTDIR),$(BUILDDIR),$(1))))
28 28
29a2lnk = $(patsubst lib%.a,-l%,$(notdir $(1)))
30
29# calculate dependencies for a list of source files $(2) and output them to $(1) 31# calculate dependencies for a list of source files $(2) and output them to $(1)
30mkdepfile = $(SILENT)perl $(TOOLSDIR)/multigcc.pl $(CC) $(PPCFLAGS) $(OTHER_INC) -MG -MM -include config.h -- $(2) | \ 32mkdepfile = $(SILENT)perl $(TOOLSDIR)/multigcc.pl $(CC) $(PPCFLAGS) $(OTHER_INC) -MG -MM -include config.h -- $(2) | \
31 sed -e "s: lang.h: lang/lang.h:" \ 33 sed -e "s: lang.h: lang/lang.h:" \
diff --git a/tools/root.make b/tools/root.make
index 1bac0d6600..eb7e7480d3 100644
--- a/tools/root.make
+++ b/tools/root.make
@@ -58,8 +58,9 @@ endif
58 58
59all: $(DEPFILE) build 59all: $(DEPFILE) build
60 60
61# Subdir makefiles. their primary purpose is to populate SRC, OTHER_SRC & 61# Subdir makefiles. their primary purpose is to populate SRC, OTHER_SRC,
62# ASMDEFS_SRC but they also define special dependencies and compile rules 62# ASMDEFS_SRC, CORE_LIBS and EXTRA_LIBS. But they also define special
63# dependencies and compile rules
63include $(TOOLSDIR)/tools.make 64include $(TOOLSDIR)/tools.make
64 65
65ifeq (,$(findstring checkwps,$(APPSDIR))) 66ifeq (,$(findstring checkwps,$(APPSDIR)))
@@ -95,10 +96,8 @@ else ifneq (,$(findstring database,$(APP_TYPE)))
95else ifneq (,$(findstring warble,$(APP_TYPE))) 96else ifneq (,$(findstring warble,$(APP_TYPE)))
96 include $(ROOTDIR)/lib/rbcodec/test/warble.make 97 include $(ROOTDIR)/lib/rbcodec/test/warble.make
97else 98else
98 RBCODEC_DIR = $(ROOTDIR)/lib/rbcodec
99 RBCODEC_BLD = $(BUILDDIR)/lib/rbcodec
100 include $(APPSDIR)/apps.make 99 include $(APPSDIR)/apps.make
101 include $(RBCODEC_DIR)/rbcodec.make 100 include $(ROOTDIR)/lib/rbcodec/rbcodec.make
102 include $(APPSDIR)/lang/lang.make 101 include $(APPSDIR)/lang/lang.make
103 102
104 ifdef SOFTWARECODECS 103 ifdef SOFTWARECODECS
@@ -179,12 +178,6 @@ ifeq (,$(findstring bootloader,$(APPSDIR)))
179 178
180OBJ += $(LANG_O) 179OBJ += $(LANG_O)
181 180
182ifeq (arm,$(ARCH))
183 UNWARMINDER_LINK := -lunwarminder
184else
185 UNWARMINDER_LINK :=
186endif
187
188ifndef APP_TYPE 181ifndef APP_TYPE
189 182
190## target build 183## target build
@@ -194,12 +187,6 @@ LINKRAM := $(BUILDDIR)/ram.link
194ROMLDS := $(FIRMDIR)/rom.lds 187ROMLDS := $(FIRMDIR)/rom.lds
195LINKROM := $(BUILDDIR)/rom.link 188LINKROM := $(BUILDDIR)/rom.link
196 189
197ifeq (arm,$(ARCH))
198 LIBARMSUPPORT_LINK := -larm_support
199else
200 LIBARMSUPPORT_LINK :=
201endif
202
203$(LINKRAM): $(RAMLDS) $(CONFIGFILE) 190$(LINKRAM): $(RAMLDS) $(CONFIGFILE)
204 $(call PRINTS,PP $(@F)) 191 $(call PRINTS,PP $(@F))
205 $(call preprocess2file,$<,$@,-DLOADADDRESS=$(LOADADDRESS)) 192 $(call preprocess2file,$<,$@,-DLOADADDRESS=$(LOADADDRESS))
@@ -208,23 +195,21 @@ $(LINKROM): $(ROMLDS)
208 $(call PRINTS,PP $(@F)) 195 $(call PRINTS,PP $(@F))
209 $(call preprocess2file,$<,$@,-DLOADADDRESS=$(LOADADDRESS)) 196 $(call preprocess2file,$<,$@,-DLOADADDRESS=$(LOADADDRESS))
210 197
211$(BUILDDIR)/rockbox.elf : $$(OBJ) $$(FIRMLIB) $$(RBCODEC_LIB) $$(VOICESPEEXLIB) $$(SKINLIB) $$(LIBARMSUPPORT) $$(UNWARMINDER) $$(LINKRAM) 198$(BUILDDIR)/rockbox.elf : $$(OBJ) $(FIRMLIB) $(VOICESPEEXLIB) $(CORE_LIBS) $$(LINKRAM)
212 $(call PRINTS,LD $(@F))$(CC) $(GCCOPTS) -Os -nostdlib -o $@ $(OBJ) \ 199 $(call PRINTS,LD $(@F))$(CC) $(GCCOPTS) -Os -nostdlib -o $@ $(OBJ) \
213 -L$(BUILDDIR)/firmware -lfirmware \ 200 -L$(BUILDDIR)/firmware -lfirmware \
214 -L$(RBCODEC_BLD) -lrbcodec \ 201 -L$(BUILDDIR)/apps/codecs $(call a2lnk, $(VOICESPEEXLIB)) \
215 -L$(BUILDDIR)/lib -lskin_parser $(LIBARMSUPPORT_LINK) \ 202 -L$(BUILDDIR)/lib $(call a2lnk, $(CORE_LIBS)) \
216 $(UNWARMINDER_LINK) -L$(BUILDDIR)/apps/codecs \ 203 -lgcc $(BOOTBOXLDOPTS) $(GLOBAL_LDOPTS) \
217 $(VOICESPEEXLIB:lib%.a=-l%) -lgcc $(BOOTBOXLDOPTS) \ 204 -T$(LINKRAM) -Wl,-Map,$(BUILDDIR)/rockbox.map
218 $(GLOBAL_LDOPTS) -T$(LINKRAM) -Wl,-Map,$(BUILDDIR)/rockbox.map
219 205
220$(BUILDDIR)/rombox.elf : $$(OBJ) $$(FIRMLIB) $$(RBCODEC_LIB) $$(VOICESPEEXLIB) $$(SKINLIB) $$(LIBARMSUPPORT) $$(UNWARMINDER) $$(LINKROM) 206$(BUILDDIR)/rombox.elf : $$(OBJ) $(FIRMLIB) $(VOICESPEEXLIB) $(CORE_LIBS) $$(LINKROM)
221 $(call PRINTS,LD $(@F))$(CC) $(GCCOPTS) -Os -nostdlib -o $@ $(OBJ) \ 207 $(call PRINTS,LD $(@F))$(CC) $(GCCOPTS) -Os -nostdlib -o $@ $(OBJ) \
222 -L$(BUILDDIR)/firmware -lfirmware \ 208 -L$(BUILDDIR)/firmware -lfirmware \
223 -L$(RBCODEC_BLD) -lrbcodec \ 209 -L$(BUILDDIR)/apps/codecs $(call a2lnk, $(VOICESPEEXLIB)) \
224 -L$(BUILDDIR)/lib -lskin_parser $(LIBARMSUPPORT_LINK) \ 210 -L$(BUILDDIR)/lib $(call a2lnk, $(CORE_LIBS)) \
225 $(UNWARMINDER_LINK) -L$(BUILDDIR)/apps/codecs \ 211 -lgcc $(BOOTBOXLDOPTS) $(GLOBAL_LDOPTS) \
226 $(VOICESPEEXLIB:lib%.a=-l%) -lgcc $(GLOBAL_LDOPTS) \ 212 -T$(LINKROM) -Wl,-Map,$(BUILDDIR)/rombox.map
227 -T$(LINKROM) -Wl,-Map,$(BUILDDIR)/rombox.map
228 213
229$(BUILDDIR)/rockbox.bin : $(BUILDDIR)/rockbox.elf 214$(BUILDDIR)/rockbox.bin : $(BUILDDIR)/rockbox.elf
230 $(call PRINTS,OC $(@F))$(OC) $(if $(filter yes, $(USE_ELF)), -S -x, -O binary) $< $@ 215 $(call PRINTS,OC $(@F))$(OC) $(if $(filter yes, $(USE_ELF)), -S -x, -O binary) $< $@
diff --git a/uisimulator/uisimulator.make b/uisimulator/uisimulator.make
index be57e3c216..77cd51494a 100644
--- a/uisimulator/uisimulator.make
+++ b/uisimulator/uisimulator.make
@@ -30,7 +30,7 @@ $(SIMLIB): $$(SIMOBJ) $(UIBMP)
30 $(SILENT)$(shell rm -f $@) 30 $(SILENT)$(shell rm -f $@)
31 $(call PRINTS,AR $(@F))$(AR) rcs $@ $^ >/dev/null 31 $(call PRINTS,AR $(@F))$(AR) rcs $@ $^ >/dev/null
32 32
33$(BUILDDIR)/$(BINARY): $$(OBJ) $(SIMLIB) $(VOICESPEEXLIB) $(FIRMLIB) $(RBCODEC_LIB) $(SKINLIB) $(UNWARMINDER) 33$(BUILDDIR)/$(BINARY): $$(OBJ) $(FIRMLIB) $(CORE_LIBS) $(SIMLIB)
34 $(call PRINTS,LD $(BINARY))$(CC) -o $@ $^ $(SIMLIB) $(LDOPTS) $(GLOBAL_LDOPTS) \ 34 $(call PRINTS,LD $(BINARY))$(CC) -o $@ $^ $(SIMLIB) $(LDOPTS) $(GLOBAL_LDOPTS) \
35 -Wl,-Map,$(BUILDDIR)/rockbox.map 35 -Wl,-Map,$(BUILDDIR)/rockbox.map
36 36