summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--Rules.make2
-rwxr-xr-xscripts/makecfg.pl37
2 files changed, 8 insertions, 31 deletions
diff --git a/Rules.make b/Rules.make
index f85779c..817c2bc 100644
--- a/Rules.make
+++ b/Rules.make
@@ -1,90 +1,90 @@
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\;) $(TOPDIR)/.config $(TOPDIR)/packages 6$(TOPDIR)/.depends : $(shell if [ -e $(TOPDIR)/config.in ]\; then echo $(TOPDIR)/config.in\; fi\;) $(TOPDIR)/.config $(TOPDIR)/packages
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 | grep -v '^#' | \ 9 cat $(TOPDIR)/packages | grep -v '^#' | \
10 awk '{print \ 10 awk '{print \
11 ".PHONY : " $$2 "\n" \ 11 ".PHONY : " $$2 "\n" \
12 "subdir-$$(" $$1 ") += " $$2 "\n\n"; \ 12 "subdir-$$(" $$1 ") += " $$2 "\n\n"; \
13 print $$2 " : " $$2 "/Makefile\n\t$$(call descend,$$@,$(filter-out $$@,$$(filter-out $$@,$$(MAKECMDGOALS))))\n"; }' > $(TOPDIR)/.depends 13 print $$2 " : " $$2 "/Makefile\n\t$$(call descend,$$@,$(filter-out $$@,$$(filter-out $$@,$$(MAKECMDGOALS))))\n"; }' > $(TOPDIR)/.depends
14 cat $(TOPDIR)/packages | grep -v '^#' | \ 14 cat $(TOPDIR)/packages | grep -v '^#' | \
15 perl -ne '($$cfg, $$dir, $$pro) = $$_ =~ /^(\S+)\s+(\S+)\s+(\S+)/; if ( -e "$$dir/$$pro" ) { print "$$dir/Makefile : $$dir/$$pro \$$(TOPDIR)/qmake/qmake\n\t\$$(call makefilegen,\$$@)\n\n"; }' \ 15 perl -ne '($$cfg, $$dir, $$pro) = $$_ =~ /^(\S+)\s+(\S+)\s+(\S+)/; if ( -e "$$dir/$$pro" ) { print "$$dir/Makefile : $$dir/$$pro \$$(TOPDIR)/qmake/qmake\n\t\$$(call makefilegen,\$$@)\n\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 20
21$(TOPDIR)/.depends.cfgs: 21$(TOPDIR)/.depends.cfgs:
22# config.in interdependencies 22# config.in interdependencies
23 @echo $(configs) | sed -e 's,/config.in,,g' | ( for i in `cat`; do echo $$i; done ) > dirs 23 @echo $(configs) | sed -e 's,/config.in,,g' | ( for i in `cat`; do echo $$i; done ) > dirs
24 @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 @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 ) >> $@
25 @-rm -f dirs 25 @-rm -f dirs
26 26
27$(TOPDIR)/stamp-headers : 27$(TOPDIR)/stamp-headers :
28 @-rm -f $(TOPDIR)/stamp-headers* 28 @-rm -f $(TOPDIR)/stamp-headers*
29 mkdir -p $(TOPDIR)/include/qpe $(TOPDIR)/include/qtopia \ 29 mkdir -p $(TOPDIR)/include/qpe $(TOPDIR)/include/qtopia \
30 $(TOPDIR)/include/opie $(TOPDIR)/include/qtopia/private 30 $(TOPDIR)/include/opie $(TOPDIR)/include/qtopia/private
31 ( cd include/qpe && rm -f *.h; ln -sf ../../library/*.h .; ln -sf ../../library/backend/*.h .; rm -f *_p.h; ) 31 ( cd include/qpe && rm -f *.h; ln -sf ../../library/*.h .; ln -sf ../../library/backend/*.h .; rm -f *_p.h; )
32 ( cd include/qtopia && rm -f *.h; ln -sf ../../library/*.h .; ) 32 ( cd include/qtopia && rm -f *.h; ln -sf ../../library/*.h .; )
33 ( cd include/qtopia/private && rm -f *.h; ln -sf ../../../library/backend/*.h .; ) 33 ( cd include/qtopia/private && rm -f *.h; ln -sf ../../../library/backend/*.h .; )
34 ( cd include/opie && rm -f *.h; ln -sf ../../libopie/*.h .; rm -f *_p.h; ) 34 ( cd include/opie && rm -f *.h; ln -sf ../../libopie/*.h .; rm -f *_p.h; )
35 ( cd include/opie && ln -sf ../../libsql/*.h .; ) 35 ( cd include/opie && ln -sf ../../libsql/*.h .; )
36 ( cd include/opie && ln -sf ../../libopie/pim/*.h .; ) 36 ( cd include/opie && ln -sf ../../libopie/pim/*.h .; )
37 ( cd include/opie; for generatedHeader in `cd ../../libopie; ls *.ui | sed -e "s,\.ui,\.h,g"`; do \ 37 ( cd include/opie; for generatedHeader in `cd ../../libopie; ls *.ui | sed -e "s,\.ui,\.h,g"`; do \
38 ln -sf ../../libopie/$$generatedHeader $$generatedHeader; done ) 38 ln -sf ../../libopie/$$generatedHeader $$generatedHeader; done )
39 ln -sf ../../library/custom.h $(TOPDIR)/include/qpe/custom.h 39 ln -sf ../../library/custom.h $(TOPDIR)/include/qpe/custom.h
40 ( cd $(QTDIR)/include; \ 40 ( cd $(QTDIR)/include; \
41 $(patsubst %,ln -sf ../src/kernel/%;,qgfx_qws.h qwsmouse_qws.h \ 41 $(patsubst %,ln -sf ../src/kernel/%;,qgfx_qws.h qwsmouse_qws.h \
42 qcopchannel_qws.h qwindowsystem_qws.h \ 42 qcopchannel_qws.h qwindowsystem_qws.h \
43 qfontmanager_qws.h qwsdefaultdecoration_qws.h)) 43 qfontmanager_qws.h qwsdefaultdecoration_qws.h))
44 touch $@ 44 touch $@
45 45
46$(TOPDIR)/stamp-headers-x11 : 46$(TOPDIR)/stamp-headers-x11 :
47 @-rm -f $(TOPDIR)/stamp-headers* 47 @-rm -f $(TOPDIR)/stamp-headers*
48 mkdir -p $(TOPDIR)/include/qpe $(TOPDIR)/include/qtopia \ 48 mkdir -p $(TOPDIR)/include/qpe $(TOPDIR)/include/qtopia \
49 $(TOPDIR)/include/opie $(TOPDIR)/include/qtopia/private 49 $(TOPDIR)/include/opie $(TOPDIR)/include/qtopia/private
50 ( cd include/qpe && rm -f *.h; ln -sf ../../library/*.h .; ln -sf ../../library/backend/*.h .; rm -f *_p.h; ) 50 ( cd include/qpe && rm -f *.h; ln -sf ../../library/*.h .; ln -sf ../../library/backend/*.h .; rm -f *_p.h; )
51 ( cd include/qtopia && rm -f *.h; ln -sf ../../library/*.h .; ) 51 ( cd include/qtopia && rm -f *.h; ln -sf ../../library/*.h .; )
52 ( cd include/qtopia/private && rm -f *.h; ln -sf ../../../library/backend/*.h .; ) 52 ( cd include/qtopia/private && rm -f *.h; ln -sf ../../../library/backend/*.h .; )
53 ( cd include/opie && rm -f *.h; ln -sf ../../libopie/*.h .; rm -f *_p.h; ) 53 ( cd include/opie && rm -f *.h; ln -sf ../../libopie/*.h .; rm -f *_p.h; )
54 ( cd include/opie && ln -sf ../../libsql/*.h .; ) 54 ( cd include/opie && ln -sf ../../libsql/*.h .; )
55 ( cd include/opie && ln -sf ../../libopie/pim/*.h .; ) 55 ( cd include/opie && ln -sf ../../libopie/pim/*.h .; )
56 ( cd include/opie; for generatedHeader in `cd ../../libopie; ls *.ui | sed -e "s,\.ui,\.h,g"`; do \ 56 ( cd include/opie; for generatedHeader in `cd ../../libopie; ls *.ui | sed -e "s,\.ui,\.h,g"`; do \
57 ln -sf ../../libopie/$$generatedHeader $$generatedHeader; done ) 57 ln -sf ../../libopie/$$generatedHeader $$generatedHeader; done )
58 ln -sf ../../library/custom.h $(TOPDIR)/include/qpe/custom.h 58 ln -sf ../../library/custom.h $(TOPDIR)/include/qpe/custom.h
59 ( cd include/qpe; ln -sf ../../x11/libqpe-x11/qpe/*.h .; ) 59 ( cd include/qpe; ln -sf ../../x11/libqpe-x11/qpe/*.h .; )
60 cd $(QTDIR)/include; $(patsubst %,ln -sf $(OPIEDIR)/x11/libqpe-x11/qt/%;,qgfx_qws.h qwsmouse_qws.h qcopchannel_qws.h qwindowsystem_qws.h qfontmanager_qws.h qwsdefaultdecoration_qws.h) 60 cd $(QTDIR)/include; $(patsubst %,ln -sf $(OPIEDIR)/x11/libqpe-x11/qt/%;,qgfx_qws.h qwsmouse_qws.h qcopchannel_qws.h qwindowsystem_qws.h qfontmanager_qws.h qwsdefaultdecoration_qws.h)
61 touch $@ 61 touch $@
62 62
63$(TOPDIR)/library/custom.h : $(TOPDIR)/.config 63$(TOPDIR)/library/custom.h : $(TOPDIR)/.config
64 @-rm -f $@ 64 @-rm -f $@
65 @$(if $(patsubst "%",%,$(CONFIG_CUSTOMFILE)),\ 65 @$(if $(patsubst "%",%,$(CONFIG_CUSTOMFILE)),\
66 ln -sf $(patsubst "%",%,$(CONFIG_CUSTOMFILE)) $@) 66 ln -sf $(patsubst "%",%,$(CONFIG_CUSTOMFILE)) $@)
67 @touch $@ 67 @touch $@
68 68
69$(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 $(TOPDIR)/qmake/qmake : 69$(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 $(TOPDIR)/qmake/qmake :
70 $(call descend,$(shell dirname $@),$(shell basename $@)) 70 $(call descend,$(shell dirname $@),$(shell basename $@))
71 71
72$(TOPDIR)/qmake/qmake : $(TOPDIR)/mkspecs/default 72$(TOPDIR)/qmake/qmake : $(TOPDIR)/mkspecs/default
73 73
74$(TOPDIR)/mkspecs/default : 74$(TOPDIR)/mkspecs/default :
75 ln -sf linux-g++ $@ 75 ln -sf linux-g++ $@
76 76
77## general rules ## 77## general rules ##
78 78
79define descend 79define descend
80 $(MAKE) $(if $(QMAKE),QMAKE=$(QMAKE)) -C $(1) $(2) 80 $(MAKE) $(if $(QMAKE),QMAKE=$(QMAKE)) -C $(1) $(2)
81endef 81endef
82 82
83define makefilegen 83define makefilegen
84 cd $(if $(1),$(shell dirname $(1))); $(TOPDIR)/qmake/qmake $(3) -o $(if $(1),$(shell basename $(1))) `cat $(OPIEDIR)/packages | grep " \`echo $(1)|sed -e 's,/Makefile$$,,'\`" | \ 84 cd $(if $(1),$(shell dirname $(1))); $(TOPDIR)/qmake/qmake $(3) -o $(if $(1),$(shell basename $(1))) `cat $(OPIEDIR)/packages | grep " \`echo $(1)|sed -e 's,/Makefile$$,,'\`" | \
85 head -1 | awk '{print $$3}'` 85 head -1 | awk '{print $$3}'`
86endef 86endef
87 87
88define makecfg 88define makecfg
89 $(TOPDIR)/scripts/makecfg.pl $1 89 $(TOPDIR)/scripts/makecfg.pl $1 $(OPIEDIR)
90endef 90endef
diff --git a/scripts/makecfg.pl b/scripts/makecfg.pl
index 5dd66a4..d7dc41e 100755
--- a/scripts/makecfg.pl
+++ b/scripts/makecfg.pl
@@ -1,102 +1,79 @@
1#!/usr/bin/perl -w 1#!/usr/bin/perl -w
2eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' 2eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
3if 0; #$running_under_some_shell 3if 0; #$running_under_some_shell
4 4
5use strict; 5use strict;
6use File::Find; 6use File::Find;
7 7
8my $packages=""; 8my $packages="";
9open(FILE, "<./packages"); 9open(FILE, "<./packages");
10while(<FILE>){$packages.=$_;} 10while(<FILE>){$packages.=$_;}
11close(FILE); 11close(FILE);
12 12
13my ($dirname,$dir,$file,@files,$filename,$tagname,$name,$caps,$pre,$post,$sources,@dupecheck); 13my ($dirname,$dir,$file,@files,$filename,$tagname,$name,$caps,$pre,$post,$sources,@dupecheck,$basedir);
14$file = shift || die; 14$file = shift || die;
15$basedir = shift;
15push(@files, $file); 16push(@files, $file);
16 17
17foreach(@files){ 18foreach(@files){
18my $cfg=$_; 19my $cfg=$_;
19($dirname=$cfg)=~s,(.*)/(.*),$1,; 20($dirname=$cfg)=~s,(.*)/(.*),$1,;
20($filename=$cfg)=~s,(.*/)(.*),$2,; 21($filename=$cfg)=~s,(.*/)(.*),$2,;
21($tagname=$dirname)=~s,.*/,,; 22($tagname=$dirname)=~s,.*/,,;
22($caps=$tagname)=~tr/[a-z]/[A-Z]/; 23($caps=$tagname)=~tr/[a-z]/[A-Z]/;
23#print "cfg is $cfg\n"; 24#print "cfg is $cfg\n";
24#print "dir is $dirname\n"; 25#print "dir is $dirname\n";
25#print "filename is $filename\n"; 26#print "filename is $filename\n";
26sub wanted; 27sub wanted;
27 28
28if(-e "$dirname/config.in.in"){ 29if(-e "$dirname/config.in.in"){
29 my $contents; 30 my $contents;
30 open(FILE, "<$dirname/config.in.in"); 31 open(FILE, "<$dirname/config.in.in");
31 while(<FILE>){ $contents.=$_; } 32 while(<FILE>){ $contents.=$_; }
32 close(FILE); 33 close(FILE);
33 if($contents=~/\@sources\@/){ 34 if($contents=~/\@sources\@/){
34 ($post = $contents) =~ s/^.*\@sources\@//s; 35 ($post = $contents) =~ s/^.*\@sources\@//s;
35 ($pre = $contents) =~ s/\@sources\@.*$//s; 36 ($pre = $contents) =~ s/\@sources\@.*$//s;
36 } else { 37 } else {
37 $pre = $contents; 38 $pre = $contents;
38 } 39 }
39} else { 40} else {
40 $pre = "menu \"$tagname\"\n"; 41 $pre = "menu \"$tagname\"\n";
41 $post = "endmenu\n"; 42 $post = "endmenu\n";
42} 43}
43 44
44open(CFG, ">$cfg") || die "Unable to open $cfg for writing\n"; 45open(CFG, ">$cfg") || die "Unable to open $cfg for writing\n";
45select(CFG); 46select(CFG);
46print $pre; 47print $pre;
47@dupecheck=(); 48@dupecheck=();
48File::Find::find({wanted => \&wanted}, $dirname); 49File::Find::find({wanted => \&wanted}, $dirname);
49print $post; 50print $post;
50select(STDOUT); 51select(STDOUT);
51close(CFG); 52close(CFG);
52} 53}
53exit; 54exit;
54 55
55open(FILE,">$dir/config.in");
56select(FILE);
57print "menu \"$name\"\n";
58print "\n";
59my @subdirs=();
60my @dirs;
61foreach(grep(/^$dir/, @dirs)){
62 chomp;
63 /^$dir\/$name.pro$/ && next;
64 my $localdir=$_;
65 if($dir=~m,^$localdir$,){
66 next;
67 }
68#($locadir=$_)~s,/[^/]+$,,g;
69 if($localdir=~/^\.$/){next;}
70 if(grep(/^$localdir$/, @subdirs)){next;}
71 my $nslashes = $localdir =~ tr!/!!;
72 my $dirnslashes = $dir =~ tr!/!!;
73 $dirnslashes++;
74 if($dirnslashes != $nslashes ){next;}
75 print STDERR "$localdir/config.in\n";
76 print " source $localdir/config.in\n";
77 push(@subdirs, $localdir);
78 print "endmenu\n";
79 select(STDOUT);
80 close(FILE);
81}
82
83use vars qw/*name *dir *prune/; 56use vars qw/*name *dir *prune/;
84*name = *File::Find::name; 57*name = *File::Find::name;
85*dir = *File::Find::dir; 58*dir = *File::Find::dir;
86*prune = *File::Find::prune; 59*prune = *File::Find::prune;
87 60
88sub wanted { 61sub wanted {
89 if( /config.in$/s ) { 62 if( /config.in$/s ) {
90 if(grep(/^$File::Find::dir\/config.in$/, @dupecheck)){ 63 if(grep(/^$File::Find::dir\/config.in$/, @dupecheck)){
91 return; 64 return;
92 } 65 }
93 my $nslashes = $File::Find::dir =~ tr!/!!; 66 my $nslashes = $File::Find::dir =~ tr!/!!;
94 my $dirnslashes = $dirname =~ tr!/!!; 67 my $dirnslashes = $dirname =~ tr!/!!;
95 $dirnslashes++; 68 $dirnslashes++;
96 # print STDERR "dirnslashes is $dirnslashes\n"; 69 # print STDERR "dirnslashes is $dirnslashes\n";
97 # print STDERR "nslashes is $nslashes\n"; 70 # print STDERR "nslashes is $nslashes\n";
98 if($dirnslashes != $nslashes){return;} 71 if($dirnslashes != $nslashes){return;}
99 print " source " . $File::Find::dir . "/config.in\n"; 72 my $reldir;
73 if (defined($basedir)) {
74 ($reldir=$File::Find::dir)=~s,^$basedir/,,;
75 }
76 print " source " . $reldir . "/config.in\n";
100 push(@dupecheck, $File::Find::dir . "/config.in"); 77 push(@dupecheck, $File::Find::dir . "/config.in");
101 } 78 }
102} 79}