Automagically expand includes in Makefile.in during configure time
authorJelmer Vernooij <jelmer@samba.org>
Wed, 21 Jan 2009 16:21:45 +0000 (17:21 +0100)
committerJelmer Vernooij <jelmer@samba.org>
Wed, 21 Jan 2009 16:21:45 +0000 (17:21 +0100)
when make is not GNU Make.

source3/configure.in
source3/script/expand-includes.pl [new file with mode: 0755]

index 4191915f96fd2e9d3477485dbb6f41766dfae281..f1004778f4086b7ac204d761aa4e379e1ebdc06b 100644 (file)
@@ -6374,7 +6374,17 @@ else
        fi
 fi
 
-AC_OUTPUT(Makefile
+AC_SUBST(MAKEFILE)
+if test x$samba_cv_gnu_make = xyes; then
+       MAKEFILE=Makefile
+else
+       # When we don't have GNU Make, generate a copy of Makefile.in 
+       # that doesn't have the "include " statements but just includes 
+       # the files verbatim.
+       MAKEFILE=Makefile-noincludes
+       $PERL ./script/expand-includes.pl Makefile.in > $MAKEFILE.in
+fi
+AC_OUTPUT($MAKEFILE
          script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
          lib/netapi/examples/Makefile
          lib/netapi/tests/Makefile
@@ -6384,6 +6394,12 @@ AC_OUTPUT(Makefile
          pkgconfig/smbsharemodes.pc
          ../examples/libsmbclient/Makefile.internal
          )
+dnl If we had to expand the includes, make tsure the output file is moved back
+AC_OUTPUT_COMMANDS([
+if test x$MAKEFILE != Makefile; then
+       mv $MAKEFILE Makefile
+fi
+])
 
 #################################################
 # Print very concise instructions on building/use
diff --git a/source3/script/expand-includes.pl b/source3/script/expand-includes.pl
new file mode 100755 (executable)
index 0000000..da64363
--- /dev/null
@@ -0,0 +1,25 @@
+#!/usr/bin/perl
+# Expand the include lines in a Makefile
+# Copyright (C) 2009 Jelmer Vernooij <jelmer@samba.org>
+# Published under the GNU GPLv3 or later
+
+sub process($)
+{
+       my ($f) = @_;
+       open(IN, $f) or die("Unable to open $f: $!");
+       foreach (<IN>) {
+               my $l = $_;
+               if ($l =~ /^include (.*)$/) {
+                       process($1);
+               } else {
+                       print $l;
+               }
+       }
+}
+
+my $path = shift;
+unless ($path) {
+       print STDERR "Usage: $0 Makefile.in > Makefile-noincludes.in\n";
+       exit(1);
+}
+process($path);