From b89e7e07d274c272d37c2e2e68e73d3ffec6d5c4 Mon Sep 17 00:00:00 2001 From: simon Date: Mon, 11 May 2009 18:48:43 +0000 Subject: [PATCH] Add a 'unix' Makefile type, for building the non-GUI parts of the PuTTY suite on non-GTK-enabled build platforms. git-svn-id: svn://svn.tartarus.org/sgt/putty@8577 cda61777-01e9-0310-a592-d414129be87e --- Recipe | 1 + mkfiles.pl | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 76 insertions(+), 2 deletions(-) diff --git a/Recipe b/Recipe index dfada9f2..81ac122e 100644 --- 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 diff --git a/mkfiles.pl b/mkfiles.pl index 835a9406..478b5d52 100755 --- a/mkfiles.pl +++ b/mkfiles.pl @@ -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'}, "/"); -- 2.11.0