When doing custom bob builds from a given SVN revision, include the
[u/mdw/putty] / mkfiles.pl
index 0bbd566..8155c90 100755 (executable)
@@ -215,8 +215,8 @@ sub mfval($) {
     # Returns true if the argument is a known makefile type. Otherwise,
     # prints a warning and returns false;
     if (grep { $type eq $_ }
-       ("vc","vcproj","cygwin","borland","lcc","devcppproj","gtk","ac","mpw",
-        "osx",)) {
+       ("vc","vcproj","cygwin","borland","lcc","devcppproj","gtk","unix",
+        "ac","mpw","osx",)) {
            return 1;
        }
     warn "$.:unknown makefile type '$type'\n";
@@ -928,10 +928,10 @@ if (defined $makefiles{'gtk'}) {
     "KRB5CONFIG=krb5-config\n".
     "# You can manually set this to `gtk-config' or `pkg-config gtk+-1.2'\n".
     "# (depending on what works on your system) if you want to enforce\n".
-    "# building with GTK 1.2, or you can set it to `pkg-config gtk+-2.0'\n".
+    "# building with GTK 1.2, or you can set it to `pkg-config gtk+-2.0 x11'\n".
     "# if you want to enforce 2.0. The default is to try 2.0 and fall back\n".
     "# to 1.2 if it isn't found.\n".
-    "GTK_CONFIG = sh -c 'pkg-config gtk+-2.0 \$\$0 2>/dev/null || gtk-config \$\$0'\n".
+    "GTK_CONFIG = sh -c 'pkg-config gtk+-2.0 x11 \$\$0 2>/dev/null || gtk-config \$\$0'\n".
     "\n".
     "-include Makefile.local\n".
     "\n".
@@ -989,6 +989,79 @@ if (defined $makefiles{'gtk'}) {
     select STDOUT; close OUT;
 }
 
+if (defined $makefiles{'unix'}) {
+    $dirpfx = &dirpfx($makefiles{'unix'}, "/");
+
+    ##-- GTK-free pure-Unix makefile for non-GUI apps only
+    open OUT, ">$makefiles{'unix'}"; select OUT;
+    print
+    "# Makefile for $project_name under Unix.\n".
+    "#\n# This file was created by `mkfiles.pl' from the `Recipe' file.\n".
+    "# DO NOT EDIT THIS FILE DIRECTLY; edit Recipe or mkfiles.pl instead.\n";
+    # gcc command line option is -D not /D
+    ($_ = $help) =~ s/([=" ])\/D/\1-D/gs;
+    print $_;
+    print
+    "\n".
+    "# You can define this path to point at your tools if you need to\n".
+    "# TOOLPATH = /opt/gcc/bin\n".
+    "CC = \$(TOOLPATH)cc\n".
+    "# If necessary set the path to krb5-config here\n".
+    "KRB5CONFIG=krb5-config\n".
+    "\n".
+    "-include Makefile.local\n".
+    "\n".
+    "unexport CFLAGS # work around a weird issue with krb5-config\n".
+    "\n".
+    &splitline("CFLAGS = -O2 -Wall -Werror -g " .
+              (join " ", map {"-I$dirpfx$_"} @srcdirs)).
+                " -D _FILE_OFFSET_BITS=64\n".
+    "ULDFLAGS = \$(LDFLAGS)\n".
+    "ifeq (,\$(findstring NO_GSSAPI,\$(COMPAT)))\n".
+    "CFLAGS+= \$(shell \$(KRB5CONFIG) --cflags gssapi)\n".
+    "ULDFLAGS = \$(shell \$(KRB5CONFIG) --libs gssapi)\n".
+    "endif\n".
+    "INSTALL=install\n".
+    "INSTALL_PROGRAM=\$(INSTALL)\n".
+    "INSTALL_DATA=\$(INSTALL)\n".
+    "prefix=/usr/local\n".
+    "exec_prefix=\$(prefix)\n".
+    "bindir=\$(exec_prefix)/bin\n".
+    "mandir=\$(prefix)/man\n".
+    "man1dir=\$(mandir)/man1\n".
+    "\n".
+    $makefile_extra{'unix'}->{'vars'} .
+    "\n".
+    ".SUFFIXES:\n".
+    "\n".
+    "\n";
+    print &splitline("all:" . join "", map { " $_" } &progrealnames("U"));
+    print "\n\n";
+    foreach $p (&prognames("U")) {
+      ($prog, $type) = split ",", $p;
+      $objstr = &objects($p, "X.o", undef, undef);
+      print &splitline($prog . ": " . $objstr), "\n";
+      $libstr = &objects($p, undef, undef, "-lX");
+      print &splitline("\t\$(CC)" . $mw . " -o \$@ " .
+                       $objstr . " \$(${type}LDFLAGS) $libstr", 69), "\n\n";
+    }
+    foreach $d (&deps("X.o", undef, $dirpfx, "/", "unix")) {
+      if ($forceobj{$d->{obj_orig}}) {
+        printf("%s: FORCE\n", $d->{obj});
+      } else {
+        print &splitline(sprintf("%s: %s", $d->{obj},
+                                 join " ", @{$d->{deps}})), "\n";
+      }
+      print &splitline("\t\$(CC) \$(COMPAT) \$(CFLAGS) \$(XFLAGS) -c $d->{deps}->[0]\n");
+    }
+    print "\n";
+    print $makefile_extra{'unix'}->{'end'};
+    print "\nclean:\n".
+    "\trm -f *.o". (join "", map { " $_" } &progrealnames("U")) . "\n";
+    print "\nFORCE:\n";
+    select STDOUT; close OUT;
+}
+
 if (defined $makefiles{'ac'}) {
     $dirpfx = &dirpfx($makefiles{'ac'}, "/");
 
@@ -1005,7 +1078,8 @@ if (defined $makefiles{'ac'}) {
     "\n".
     "CC = \@CC\@\n".
     "\n".
-    &splitline("CFLAGS = \@CFLAGS\@ \@CPPFLAGS\@ \@DEFS\@ \@GTK_CFLAGS\@ " .
+    &splitline("CFLAGS = \@CFLAGS\@ \@PUTTYCFLAGS\@ \@CPPFLAGS\@ " .
+               "\@DEFS\@ \@GTK_CFLAGS\@ " .
               (join " ", map {"-I$dirpfx$_"} @srcdirs))."\n".
     "XLDFLAGS = \@LDFLAGS\@ \@LIBS\@ \@GTK_LIBS\@\n".
     "ULDFLAGS = \@LDFLAGS\@ \@LIBS\@\n".
@@ -1015,6 +1089,7 @@ if (defined $makefiles{'ac'}) {
     "prefix=\@prefix\@\n".
     "exec_prefix=\@exec_prefix\@\n".
     "bindir=\@bindir\@\n".
+    "datarootdir=\@datarootdir\@\n".
     "mandir=\@mandir\@\n".
     "man1dir=\$(mandir)/man1\n".
     "\n".
@@ -1048,6 +1123,9 @@ if (defined $makefiles{'ac'}) {
     print $makefile_extra{'gtk'}->{'end'};
     print "\nclean:\n".
     "\trm -f *.o". (join "", map { " $_" } &progrealnames("X:U")) . "\n";
+    print "\ndistclean: clean\n".
+    "\t". &splitline("rm -f config.status config.cache config.log ".
+                    "configure.lineno config.status.lineno Makefile") . "\n";
     print "\nFORCE:\n";
     select STDOUT; close OUT;
 }