summaryrefslogtreecommitdiff
path: root/v4l/scripts/make_makefile.pl
diff options
context:
space:
mode:
Diffstat (limited to 'v4l/scripts/make_makefile.pl')
-rwxr-xr-xv4l/scripts/make_makefile.pl164
1 files changed, 164 insertions, 0 deletions
diff --git a/v4l/scripts/make_makefile.pl b/v4l/scripts/make_makefile.pl
new file mode 100755
index 000000000..8371f6a4a
--- /dev/null
+++ b/v4l/scripts/make_makefile.pl
@@ -0,0 +1,164 @@
+#!/usr/bin/perl
+use FileHandle;
+
+my $instdir = ();
+
+sub check_line($$$)
+{
+ my $dir=shift;
+ my $obj=shift;
+ my $arg=shift;
+ my $arg2="";
+
+ my $idir = $dir;
+
+ $idir =~ s|^../linux/drivers/media/||;
+
+ $arg=$arg." ";
+
+ while ($arg ne "") {
+ if ($arg =~ m|^([^ /]+)/ |) {
+ my $newdir=$1;
+# print "include $dir/$newdir/Makefile\n";
+ open_makefile("$dir/$newdir/Makefile");
+ $arg =~ s/^[^ ]+ //;
+ } else {
+ $arg =~ s/^([^ ]+ )//;
+ my $cur=$1;
+ $arg2 = $arg2.$cur;
+
+ $cur =~ s/\s+$//;
+ $cur =~ s/\\$//;
+ $cur =~ s/\s+$//;
+ $cur =~ s/\.o$/.ko/;
+
+ if ( ($cur ne "") && (! ($instdir { $idir } =~ m/($cur) /))) {
+ $instdir { $idir } = $instdir { $idir }.$cur." ";
+ }
+ }
+ }
+ $arg2 =~ s/\s+$//;
+ if ($arg2 ne "") {
+# print "arg=$arg2\n";
+ print OUT "$obj$arg2\n";
+ }
+}
+
+sub remove_includes($$)
+{
+ my $obj=shift;
+ my $arg=shift;
+ my $arg2="";
+
+ $arg=$arg." ";
+
+ while ($arg ne "") {
+ if (!$arg =~ m|^(-I\s*[^ ]+) |) {
+ $arg2 = $arg2.$1;
+ $arg =~ s|^[^ ] ||;
+ } else {
+ $arg =~ s|^(-I\s*[^ ]+) ||;
+ }
+ }
+ if ($arg2 ne "") {
+ print OUT "$obj$arg2\n";
+ }
+}
+
+sub open_makefile($) {
+ my $file= shift;
+ my $in = new FileHandle;
+ my $dir= "";
+ my $count=0;
+
+ $file=~ m|^(.*)/[^/]*$|;
+ $dir=$1;
+
+#print "opening $file (dir=$dir)\n";
+ open $in,"$file";
+
+ while (<$in>) {
+ if (m|\s*#|) {
+ print OUT $_;
+ next;
+ }
+ if (m|^\s*include|) {
+ next;
+ }
+ if (count==1 || m|(^\s*EXTRA_CFLAGS.*=\s*)(.*/.*)\n|) {
+ remove_includes($1,$2);
+ if (m|[\\]\n|) {
+ $count=1;
+ } else {
+ $count=0;
+ }
+ next;
+ }
+# if (m|(^\s*obj.*=\s*)(.*/.*)\n|) {
+ if (count==2 || m|(^\s*obj.*=\s*)(.*)\n|) {
+ check_line($dir,$1,$2);
+ if (m|\\\n|) {
+ $count=1;
+ } else {
+ $count=0;
+ }
+ next;
+ }
+ print OUT $_;
+ }
+ close $in;
+}
+
+open OUT,">Makefile.media";
+open_makefile ("../linux/drivers/media/Makefile");
+
+# Creating Install rule
+printf OUT "install::\n";
+#printf OUT "\t@strip --strip-debug \$(inst-m)\n\n";
+
+while ( my ($key, $value) = each(%instdir) ) {
+ printf OUT "\t\@echo -e \"\\nInstalling \$(KDIR26)/$key files:\"\n";
+ printf OUT "\t\@install -d \$(KDIR26)/$key\n";
+
+ printf OUT "\t\@files='$value'; ";
+ printf OUT "for i in \$\$files;do if [ -e \$\$i ]; then echo -n \"\$\$i \";";
+ printf OUT " install -m 644 -c \$\$i \$(KDIR26)/$key; fi; done; echo;\n\n";
+}
+printf OUT "\t/sbin/depmod -a \${KERNELRELEASE}\n\n";
+
+# Creating Remove rule
+printf OUT "remove rminstall::\n";
+printf OUT "\t\@echo -e \"\\nRemoving old \$(DEST) files\\n\"\n";
+
+while ( my ($key, $value) = each(%instdir) ) {
+ printf OUT "\t\@echo -e \"\\nRemoving old \$(KDIR26)/$key files:\"\n";
+ printf OUT "\t\@files='$value'; ";
+
+ printf OUT "for i in \$\$files;do if [ -e \$(KDIR26)/$key/\$\$i ]; then ";
+ printf OUT "echo -n \"\$\$i \";";
+ printf OUT " rm \$(KDIR26)/$key/\$\$i; fi; done; ";
+
+ printf OUT "for i in \$\$files;do if [ -e \$(KDIR26)/$key/\$\$i.gz ]; then ";
+ printf OUT "echo -n \"\$\$i.gz \";";
+ printf OUT " rm \$(KDIR26)/$key/\$\$i.gz; fi; done; echo;\n\n";
+}
+
+close OUT;
+
+while ( my ($key, $value) = each(%config) ) {
+ delete $depend{$key};
+}
+
+open OUT,">Kconfig.kern";
+while ( my ($key, $value) = each(%depend) ) {
+ print OUT "# $key with $value refs\nconfig $key\n\ttristate\n\tdefault m\n\n";
+}
+close OUT;
+
+if (open OUT,".myconfig") {
+ close IN;
+} else {
+ system "make allmodconfig";
+}
+
+