Add a 'unix' Makefile type, for building the non-GUI parts of the
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Mon, 11 May 2009 18:48:43 +0000 (18:48 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Mon, 11 May 2009 18:48:43 +0000 (18:48 +0000)
PuTTY suite on non-GTK-enabled build platforms.

git-svn-id: svn://svn.tartarus.org/sgt/putty@8577 cda61777-01e9-0310-a592-d414129be87e

Recipe
mkfiles.pl

diff --git a/Recipe b/Recipe
index dfada9f..81ac122 100644 (file)
--- a/Recipe
+++ b/Recipe
@@ -18,6 +18,7 @@
 !makefile borland windows/Makefile.bor
 !makefile lcc windows/Makefile.lcc
 !makefile gtk unix/Makefile.gtk
+!makefile unix unix/Makefile.ux
 !makefile ac unix/Makefile.in
 !makefile mpw mac/Makefile.mpw
 !makefile osx macosx/Makefile
index 835a940..478b5d5 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";
@@ -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'}, "/");