Add a 'unix' Makefile type, for building the non-GUI parts of the

PuTTY suite on non-GTK-enabled build platforms.

[originally from svn r8577]
This commit is contained in:
Simon Tatham 2009-05-11 18:48:43 +00:00
Родитель 4c0b7ba7e4
Коммит f8a260d59f
2 изменённых файлов: 76 добавлений и 2 удалений

1
Recipe
Просмотреть файл

@ -18,6 +18,7 @@
!makefile borland windows/Makefile.bor !makefile borland windows/Makefile.bor
!makefile lcc windows/Makefile.lcc !makefile lcc windows/Makefile.lcc
!makefile gtk unix/Makefile.gtk !makefile gtk unix/Makefile.gtk
!makefile unix unix/Makefile.ux
!makefile ac unix/Makefile.in !makefile ac unix/Makefile.in
!makefile mpw mac/Makefile.mpw !makefile mpw mac/Makefile.mpw
!makefile osx macosx/Makefile !makefile osx macosx/Makefile

Просмотреть файл

@ -215,8 +215,8 @@ sub mfval($) {
# Returns true if the argument is a known makefile type. Otherwise, # Returns true if the argument is a known makefile type. Otherwise,
# prints a warning and returns false; # prints a warning and returns false;
if (grep { $type eq $_ } if (grep { $type eq $_ }
("vc","vcproj","cygwin","borland","lcc","devcppproj","gtk","ac","mpw", ("vc","vcproj","cygwin","borland","lcc","devcppproj","gtk","unix",
"osx",)) { "ac","mpw","osx",)) {
return 1; return 1;
} }
warn "$.:unknown makefile type '$type'\n"; warn "$.:unknown makefile type '$type'\n";
@ -989,6 +989,79 @@ if (defined $makefiles{'gtk'}) {
select STDOUT; close OUT; 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'}) { if (defined $makefiles{'ac'}) {
$dirpfx = &dirpfx($makefiles{'ac'}, "/"); $dirpfx = &dirpfx($makefiles{'ac'}, "/");