summaryrefslogtreecommitdiff
authorkergoth <kergoth>2002-11-05 18:26:02 (UTC)
committer kergoth <kergoth>2002-11-05 18:26:02 (UTC)
commit468f1826ade3afaf7a8b8587b297d9ec6e0ccf3f (patch) (unidiff)
tree76a3e2002b736da582de22852c9b4e7cfa6de2f2
parentbbacc58102236691c8161fac2674998ce428ac3c (diff)
downloadopie-468f1826ade3afaf7a8b8587b297d9ec6e0ccf3f.zip
opie-468f1826ade3afaf7a8b8587b297d9ec6e0ccf3f.tar.gz
opie-468f1826ade3afaf7a8b8587b297d9ec6e0ccf3f.tar.bz2
Rearranged root makefile to fix dependencies on make targets, split config.in generation rules into .depends.cfgs
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--Makefile.test50
-rw-r--r--Rules.make8
2 files changed, 40 insertions, 18 deletions
diff --git a/Makefile.test b/Makefile.test
index 3311cde..b30b85d 100644
--- a/Makefile.test
+++ b/Makefile.test
@@ -1,62 +1,82 @@
1#!/usr/bin/make -f 1#!/usr/bin/make -f
2export OPIEDIR:=$(shell pwd) 2export OPIEDIR:=$(shell pwd)
3export TOPDIR:=$(OPIEDIR) 3export TOPDIR:=$(OPIEDIR)
4 4
5export QMAKESPECSDIR=$(OPIEDIR)/mkspecs 5export QMAKESPECSDIR=$(OPIEDIR)/mkspecs
6export QMAKESPEC=$(QMAKESPECSDIR)/qws/linux-generic-g++ 6export QMAKESPEC=$(QMAKESPECSDIR)/qws/linux-generic-g++
7 7
8all : 8# $(TOPDIR)/.config depends on .depends.cfgs, as it depends on $(configs)
9# in order to have a full set of config.in files.
10# .depends depends on $(TOPDIR)/.config
11# everything else depends on .depends, to ensure the dependencies are
12# intact.
13#
14# NOTE: The order in which things happen in this makefile is
15 # -critical-. Do not rearrange this!
16
17all : $(TOPDIR)/.config
18
19$(TOPDIR)/.config : $(TOPDIR)/.depends.cfgs
20
21all menuconfig xconfig oldconfig config randconfig allyesconfig allnoconfig defconfig : $(TOPDIR)/.depends
9 22
10clean-configs : $(TOPDIR)/.depends 23clean-configs : $(TOPDIR)/.depends
11 @echo "Wiping generated config.in files..." 24 @echo "Wiping generated config.in files..."
12 @-rm -f $(configs) 25 @-rm -f $(configs)
13 26
14-include $(TOPDIR)/.config 27-include $(TOPDIR)/.depends.cfgs
15-include $(TOPDIR)/..config.cmd
16-include $(TOPDIR)/.depends
17 28
18all : $(TOPDIR)/.depends $(configs) $(subdir-y) 29all menuconfig xconfig oldconfig config randconfig allyesconfig allnoconfig defconfig : $(configs)
19 30
20./.config: $(configs) 31$(TOPDIR)/.config: $(TOPDIR)/.depends.cfgs $(configs)
21 $(call descend,scripts/kconfig,conf) 32 $(call descend,scripts/kconfig,conf)
22 @if [ ! -e $@ ]; then \ 33 @if [ ! -e $@ ]; then \
23 cp $(TOPDIR)/def-configs/opie $@; \ 34 cp $(TOPDIR)/def-configs/opie $@; \
24 fi; 35 fi;
25 @$(MAKE) -C scripts/kconfig conf; 36 @$(MAKE) -C scripts/kconfig conf;
26 ./scripts/kconfig/conf -s ./config.in 37 ./scripts/kconfig/conf -s ./config.in
27 38
28xconfig: $(configs) 39# config rules must have the $(configs) var defined
40# at the time that they run. we must ensure that .depends.cfgs
41# is built and included by the time we reach this point.
42
43xconfig :
29 $(call descend,scripts/kconfig,qconf) 44 $(call descend,scripts/kconfig,qconf)
30 ./scripts/kconfig/qconf ./config.in 45 ./scripts/kconfig/qconf ./config.in
31 46
32menuconfig: $(configs) scripts/lxdialog/lxdialog 47menuconfig : scripts/lxdialog/lxdialog
33 $(call descend,scripts/kconfig,mconf) 48 $(call descend,scripts/kconfig,mconf)
34 ./scripts/kconfig/mconf ./config.in 49 ./scripts/kconfig/mconf ./config.in
35 50
36config: $(configs) 51config :
37 $(call descend,scripts/kconfig,conf) 52 $(call descend,scripts/kconfig,conf)
38 ./scripts/kconfig/conf ./config.in 53 ./scripts/kconfig/conf ./config.in
39 54
40oldconfig: $(configs) 55oldconfig :
41 $(call descend,scripts/kconfig,conf) 56 $(call descend,scripts/kconfig,conf)
42 ./scripts/kconfig/conf -o ./config.in 57 ./scripts/kconfig/conf -o ./config.in
43 58
44randconfig: $(configs) 59randconfig :
45 $(call descend,scripts/kconfig,conf) 60 $(call descend,scripts/kconfig,conf)
46 ./scripts/kconfig/conf -r ./config.in 61 ./scripts/kconfig/conf -r ./config.in
47 62
48allyesconfig: $(configs) 63allyesconfig :
49 $(call descend,scripts/kconfig,conf) 64 $(call descend,scripts/kconfig,conf)
50 ./scripts/kconfig/conf -y ./config.in 65 ./scripts/kconfig/conf -y ./config.in
51 66
52allnoconfig: $(configs) 67allnoconfig :
53 $(call descend,scripts/kconfig,conf) 68 $(call descend,scripts/kconfig,conf)
54 ./scripts/kconfig/conf -n ./config.in 69 ./scripts/kconfig/conf -n ./config.in
55 70
56defconfig: $(configs) 71defconfig :
57 $(call descend,scripts/kconfig,conf) 72 $(call descend,scripts/kconfig,conf)
58 ./scripts/kconfig/conf -d ./config.in 73 ./scripts/kconfig/conf -d ./config.in
59 74
60 75
61include $(TOPDIR)/Rules.make 76-include $(TOPDIR)/.config
77-include $(TOPDIR)/..config.cmd
78-include $(TOPDIR)/.depends
62 79
80all : $(subdir-y)
81
82include $(TOPDIR)/Rules.make
diff --git a/Rules.make b/Rules.make
index 74e74fd..5943b93 100644
--- a/Rules.make
+++ b/Rules.make
@@ -1,44 +1,46 @@
1## targets ## 1## targets ##
2 2
3$(configs) : 3$(configs) :
4 $(call makecfg,$@) 4 $(call makecfg,$@)
5 5
6$(TOPDIR)/.depends : $(shell if [ -e $(TOPDIR)/config.in ]\; then echo $(TOPDIR)/config.in\; fi\;) 6$(TOPDIR)/.depends : $(shell if [ -e $(TOPDIR)/config.in ]\; then echo $(TOPDIR)/config.in\; fi\;) $(TOPDIR)/.config
7 @echo Generating dependency information... 7 @echo Generating dependency information...
8# add to subdir-y, and add descend rules 8# add to subdir-y, and add descend rules
9 @cat $(TOPDIR)/packages | \ 9 @cat $(TOPDIR)/packages | \
10 awk '/^#/ { next }; {print \ 10 awk '/^#/ { next }; {print \
11 ".PHONY : " $$2 "\n" \ 11 ".PHONY : " $$2 "\n" \
12 "subdir-$$(" $$1 ") += " $$2 "\n\n" \ 12 "subdir-$$(" $$1 ") += " $$2 "\n\n" \
13 $$2 "/Makefile : " $$2 "/" $$3 " $$(TOPDIR)/qmake/qmake\n\t" \ 13 $$2 "/Makefile : " $$2 "/" $$3 " $$(TOPDIR)/qmake/qmake\n\t" \
14 "$$(call makefilegen,$$@)\n\n" \ 14 "$$(call makefilegen,$$@)\n\n" \
15 $$2 " : " $$2 "/Makefile\n\t$$(call descend,$$@)\n"}'\ 15 $$2 " : " $$2 "/Makefile\n\t$$(call descend,$$@)\n"}'\
16 > $(TOPDIR)/.depends 16 > $(TOPDIR)/.depends
17# interpackage dependency generation 17# interpackage dependency generation
18 @cat $(TOPDIR)/packages | \ 18 @cat $(TOPDIR)/packages | \
19 $(TOPDIR)/scripts/deps.pl >> $(TOPDIR)/.depends 19 $(TOPDIR)/scripts/deps.pl >> $(TOPDIR)/.depends
20
21$(TOPDIR)/.depends.cfgs:
20# generation of config.in files, and config.in interdependencies 22# generation of config.in files, and config.in interdependencies
21 @find $(TOPDIR)/ -name config.in | ( for cfg in `cat`; do dir=`dirname $$cfg`; name=`basename $$dir`; if [ ! -e $$dir/$$name.pro ]; then echo $$dir; fi; done; ) > dirs 23 @find $(TOPDIR)/ -name config.in | ( for cfg in `cat`; do dir=`dirname $$cfg`; name=`basename $$dir`; if [ ! -e $$dir/$$name.pro ]; then echo $$dir; fi; done; ) > dirs
22 @echo "configs += `echo \`cat dirs | sed -e's,^$(TOPDIR)/,$$(TOPDIR)/,g' -e's,$$,/config.in,g'\``" >> .depends 24 @echo "configs += `echo \`cat dirs | sed -e's,^$(TOPDIR)/,$$(TOPDIR)/,g' -e's,$$,/config.in,g'\``" >> $@
23 @cat dirs | ( for i in `cat`; do if [ "`cat dirs|grep $$i 2>/dev/null|wc -l`" -ne "1" ]; then deps=`cat dirs|grep $$i| grep -v "^$$i$$"|for i in \`cat|sed -e's,^$(TOPDIR)/,$$(TOPDIR)/,g'\`; do echo $$i/config.in; done`; echo `echo $$i/config.in|sed -e 's,^$(TOPDIR)/,$$(TOPDIR)/,'` : $$deps; fi; done ) >> $(TOPDIR)/.depends 25 @cat dirs | ( for i in `cat`; do if [ "`cat dirs|grep $$i 2>/dev/null|wc -l`" -ne "1" ]; then deps=`cat dirs|grep $$i| grep -v "^$$i$$"|for i in \`cat|sed -e's,^$(TOPDIR)/,$$(TOPDIR)/,g'\`; do echo $$i/config.in; done`; echo `echo $$i/config.in|sed -e 's,^$(TOPDIR)/,$$(TOPDIR)/,'` : $$deps; fi; done ) >> $@
24 @-rm -f dirs 26 @-rm -f dirs
25 27
26$(TOPDIR)/qmake/qmake : 28$(TOPDIR)/qmake/qmake :
27 $(call descend,$(TOPDIR)/qmake) 29 $(call descend,$(TOPDIR)/qmake)
28 30
29$(TOPDIR)/scripts/lxdialog/lxdialog $(TOPDIR)/scripts/kconfig/conf scripts/kconfig/conf $(TOPDIR)/scripts/kconfig/mconf scripts/kconfig/mconf $(TOPDIR)/scripts/kconfig/qconf scripts/kconfig/qconf : 31$(TOPDIR)/scripts/lxdialog/lxdialog $(TOPDIR)/scripts/kconfig/conf scripts/kconfig/conf $(TOPDIR)/scripts/kconfig/mconf scripts/kconfig/mconf $(TOPDIR)/scripts/kconfig/qconf scripts/kconfig/qconf :
30 $(call descend,$(shell dirname $@),$(shell basename $@)) 32 $(call descend,$(shell dirname $@),$(shell basename $@))
31 33
32## general rules ## 34## general rules ##
33 35
34define descend 36define descend
35 $(MAKE) -C $(1) $(2) 37 $(MAKE) -C $(1) $(2)
36endef 38endef
37 39
38define makefilegen 40define makefilegen
39 cd $(shell dirname $(1)); $(TOPDIR)/qmake/qmake $(3) -o $(shell basename $(1)) `echo $(1)|sed -e 's,/Makefile$$,,g' -e 's,.*/,,g'`.pro 41 cd $(shell dirname $(1)); $(TOPDIR)/qmake/qmake $(3) -o $(shell basename $(1)) `echo $(1)|sed -e 's,/Makefile$$,,g' -e 's,.*/,,g'`.pro
40endef 42endef
41 43
42define makecfg 44define makecfg
43 $(TOPDIR)/scripts/makecfg.pl $1 45 $(TOPDIR)/scripts/makecfg.pl $1
44endef 46endef