For building on Unix:
- - unix/Makefile.gtk is for Unix and GTK. If you don't have GTK, you
+ - unix/configure is for Unix and GTK. If you don't have GTK, you
should still be able to build the command-line utilities (PSCP,
- PSFTP, Plink, PuTTYgen) using this makefile. The makefile expects
- you to change into the `unix' subdirectory, then run `make -f
- Makefile.gtk'. Note that Unix PuTTY has mostly only been tested
+ PSFTP, Plink, PuTTYgen) using this script. To use it, change
+ into the `unix' subdirectory, run `./configure' and then `make'.
+
+ - unix/Makefile.gtk is for non-autoconfigured builds. This makefile
+ expects you to change into the `unix' subdirectory, then run `make
+ -f Makefile.gtk'. Note that Unix PuTTY has mostly only been tested
on Linux so far; portability problems such as BSD-style ptys or
different header file requirements are expected.
# 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","gtk","mpw","osx")) {
+ ("vc","vcproj","cygwin","borland","lcc","gtk","ac","mpw","osx")) {
return 1;
}
warn "$.:unknown makefile type '$type'\n";
select STDOUT; close OUT;
}
+if (defined $makefiles{'ac'}) {
+ $dirpfx = &dirpfx($makefiles{'ac'}, "/");
+
+ ##-- Unix/autoconf makefile
+ open OUT, ">$makefiles{'ac'}"; select OUT;
+ print
+ "# Makefile.in for $project_name under Unix with Autoconf.\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/=-D/gs;
+ print $_;
+ print
+ "\n".
+ "CC = \@CC\@\n".
+ "\n".
+ &splitline("CFLAGS = \@CFLAGS\@ \@CPPFLAGS\@ \@DEFS\@ \@GTK_CFLAGS\@ " .
+ (join " ", map {"-I$dirpfx$_"} @srcdirs))."\n".
+ "XLDFLAGS = \@LDFLAGS\@ \@LIBS\@ \@GTK_LIBS\@\n".
+ "ULDFLAGS = \@LDFLAGS\@ \@LIBS\@\n".
+ "INSTALL=\@INSTALL\@\n",
+ "INSTALL_PROGRAM=\$(INSTALL)\n",
+ "INSTALL_DATA=\$(INSTALL)\n",
+ "prefix=\@prefix\@\n",
+ "exec_prefix=\@exec_prefix\@\n",
+ "bindir=\@bindir\@\n",
+ "mandir=\@mandir\@\n",
+ "man1dir=\$(mandir)/man1\n",
+ "\n".
+ $makefile_extra{'gtk'}->{'vars'} .
+ "\n".
+ ".SUFFIXES:\n".
+ "\n".
+ "\n".
+ "all: \@all_targets\@\n".
+ &splitline("all-cli:" . join "", map { " $_" } &progrealnames("U"))."\n".
+ &splitline("all-gtk:" . join "", map { " $_" } &progrealnames("X"))."\n";
+ print "\n";
+ foreach $p (&prognames("X: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 . " \$(${type}LDFLAGS) -o \$@ " .
+ $objstr . " $libstr", 69), "\n\n";
+ }
+ foreach $d (&deps("X.o", undef, $dirpfx, "/", "gtk")) {
+ print &splitline(sprintf("%s: %s", $d->{obj}, join " ", @{$d->{deps}})),
+ "\n";
+ print &splitline("\t\$(CC) \$(COMPAT) \$(XFLAGS) \$(CFLAGS) -c $d->{deps}->[0]\n");
+ }
+ print "\n";
+ print $makefile_extra{'gtk'}->{'end'};
+ print "\nclean:\n".
+ "\trm -f *.o". (join "", map { " $_" } &progrealnames("X:U")) . "\n";
+ select STDOUT; close OUT;
+}
+
if (defined $makefiles{'mpw'}) {
##-- MPW Makefile
open OUT, ">$makefiles{'mpw'}"; select OUT;
--- /dev/null
+# To compile this into a configure script, you need:
+# * Autoconf 2.50 or newer
+# * Gtk (for $prefix/share/aclocal/gtk.m4)
+# * Automake (for aclocal)
+# If you've got them, running "autoreconf" should work.
+
+AC_INIT
+AC_CONFIG_FILES([Makefile])
+AC_CONFIG_HEADERS([uxconfig.h:uxconfig.in])
+
+AC_PROG_INSTALL
+AC_PROG_CC
+if test "X$GCC" = Xyes; then
+ CFLAGS="$CFLAGS -Wall -Werror"
+fi
+
+AM_PATH_GTK([1.2.0], [all_targets="all-cli all-gtk"], [all_targets="all-cli"])
+AC_SUBST([all_targets])
+
+AC_SEARCH_LIBS([socket], [xnet])
+
+AC_CHECK_FUNCS([getaddrinfo ptsname pututline setresuid strsignal])
+
+AC_OUTPUT
+
+AH_BOTTOM([
+/* Convert autoconf definitions to ones that PuTTY wants. */
+
+#ifndef HAVE_GETADDRINFO
+# define NO_IPV6
+#endif
+#ifndef HAVE_SETRESUID
+# define HAVE_NO_SETRESUID
+#endif
+#ifndef HAVE_STRSIGNAL
+# define HAVE_NO_STRSIGNAL
+#endif
+#ifndef HAVE_PUTUTLINE
+# define OMIT_UTMP
+#endif
+#ifndef HAVE_PTSNAME
+# define BSD_PTYS
+#endif
+])