[PATCH] Use automake (v2)

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[PATCH] Use automake (v2)

Jon TURNEY
v2:
* Include tzmap.h in BUILT_SOURCES
* Make per-file flags appear after user-supplied CXXFLAGS, so they can
override optimization level.
* Correct .o files used to define symbols exported by libm.a
* Drop gcrt0.o mistakenly incuded in libgmon.a
* Add missing line continuations in GMON_FILES value
---
 winsup/Makefile.am                     |  19 +
 winsup/Makefile.am.common              |  15 +
 winsup/Makefile.common                 |  51 --
 winsup/autogen.sh                      |   1 +
 winsup/configure.ac                    |  21 +-
 winsup/cygserver/Makefile.am           |  58 ++
 winsup/cygwin/Makefile.am              | 768 +++++++++++++++++++++++++
 winsup/cygwin/config.h.in              |   2 +-
 winsup/doc/Makefile.am                 | 155 +++++
 winsup/testsuite/Makefile.am           |  64 +++
 winsup/testsuite/config/default.exp    |   4 +-
 winsup/testsuite/cygrun/Makefile.am    |  21 +
 winsup/testsuite/winsup.api/winsup.exp |   6 +-
 winsup/utils/Makefile.am               |  81 +++
 winsup/utils/mingw/Makefile.am         |  50 ++
 15 files changed, 1257 insertions(+), 59 deletions(-)
 create mode 100644 winsup/Makefile.am
 create mode 100644 winsup/Makefile.am.common
 delete mode 100644 winsup/Makefile.common
 create mode 100644 winsup/cygserver/Makefile.am
 create mode 100644 winsup/cygwin/Makefile.am
 create mode 100644 winsup/doc/Makefile.am
 create mode 100644 winsup/testsuite/Makefile.am
 create mode 100644 winsup/testsuite/cygrun/Makefile.am
 create mode 100644 winsup/utils/Makefile.am
 create mode 100644 winsup/utils/mingw/Makefile.am

diff --git a/winsup/Makefile.am b/winsup/Makefile.am
new file mode 100644
index 000000000..067f74688
--- /dev/null
+++ b/winsup/Makefile.am
@@ -0,0 +1,19 @@
+# Makefile.am for winsup stuff
+#
+# This file is part of Cygwin.
+#
+# This software is a copyrighted work licensed under the terms of the
+# Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
+# details.
+
+# This makefile requires GNU make.
+
+cygdocdir = $(datarootdir)/doc/Cygwin
+
+cygdoc_DATA = \
+ CYGWIN_LICENSE \
+ COPYING
+
+SUBDIRS = cygwin cygserver doc utils testsuite
+
+cygserver utils testsuite: cygwin
diff --git a/winsup/Makefile.am.common b/winsup/Makefile.am.common
new file mode 100644
index 000000000..884194df2
--- /dev/null
+++ b/winsup/Makefile.am.common
@@ -0,0 +1,15 @@
+# Makefile.am.common - common definitions for the winsup directory
+#
+# This file is part of Cygwin.
+#
+# This software is a copyrighted work licensed under the terms of the
+# Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
+# details.
+
+flags_common=-Wall -Wstrict-aliasing -Wwrite-strings -fno-common -pipe -fbuiltin -fmessage-length=0
+
+# compiler flags commonly used (but not for MinGW compilation, because they
+# include the Cygwin header paths via @INCLUDES@)
+
+cxxflags_common=$(INCLUDES) -fno-rtti -fno-exceptions -fno-use-cxa-atexit $(flags_common)
+cflags_common=$(INCLUDES) $(flags_common)
diff --git a/winsup/Makefile.common b/winsup/Makefile.common
deleted file mode 100644
index 3141bd111..000000000
--- a/winsup/Makefile.common
+++ /dev/null
@@ -1,51 +0,0 @@
-# Makefile.common - common definitions for the winsup directory
-#
-# This file is part of Cygwin.
-#
-# This software is a copyrighted work licensed under the terms of the
-# Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
-# details.
-
-define justdir
-$(patsubst %/,%,$(dir $1))
-endef
-
-define libname
-$(realpath $(shell ${CC} --print-file-name=$1 $2))
-endef
-
-export PATH:=${winsup_srcdir}:${PATH}
-
-# Allow CFLAGS=-O,-g to control CXXFLAGS too
-opt=$(filter -O%,${CFLAGS}) $(filter -g%,${CFLAGS})
-override CXXFLAGS:=${filter-out -g%,$(filter-out -O%,${CXXFLAGS})} ${opt}
-
-cflags_common:=-Wall -Wstrict-aliasing -Wwrite-strings -fno-common -pipe -fbuiltin -fmessage-length=0
-COMPILE.cc=${CXX} ${INCLUDES} ${CXXFLAGS} -fno-rtti -fno-exceptions -fno-use-cxa-atexit ${cflags_common}
-COMPILE.c=${CC} ${INCLUDES} ${CFLAGS} ${cflags_common}
-
-top_srcdir:=$(call justdir,${winsup_srcdir})
-top_builddir:=$(call justdir,${target_builddir})
-
-cygwin_build:=${target_builddir}/winsup/cygwin
-newlib_build:=${target_builddir}/newlib
-
-VPATH:=${srcdir}
-
-.SUFFIXES:
-.SUFFIXES: .c .cc .def .S .a .o .d .s .E
-
-%.o: %.cc
- $(strip ${COMPILE.cc} -c -o $@ $<)
-
-%.o: %.c
- $(strip ${COMPILE.c} -c -o $@ $<)
-
-%.E: %.cc
- $(strip ${COMPILE.cc} -E -dD -o $@ $<)
-
-%.E: %.c
- $(strip ${COMPILE.c} -E -dD -o $@ $<)
-
-%.o: %.S
- $(strip ${COMPILE.S} -c -o $@ $<)
diff --git a/winsup/autogen.sh b/winsup/autogen.sh
index 4a60ef39f..1db91add9 100755
--- a/winsup/autogen.sh
+++ b/winsup/autogen.sh
@@ -1,3 +1,4 @@
 /usr/bin/aclocal --force
 /usr/bin/autoconf -f
+/usr/bin/automake -ac
 /bin/rm -rf autom4te.cache
diff --git a/winsup/configure.ac b/winsup/configure.ac
index 438e629e7..9a11411ab 100644
--- a/winsup/configure.ac
+++ b/winsup/configure.ac
@@ -10,8 +10,10 @@ dnl Process this file with autoconf to produce a configure script.
 
 AC_PREREQ([2.59])
 AC_INIT([Cygwin],[0],[[hidden email]],[cygwin],[https://cygwin.com])
-AC_CONFIG_SRCDIR(Makefile.in)
 AC_CONFIG_AUX_DIR(..)
+AC_CANONICAL_TARGET
+AM_INIT_AUTOMAKE([dejagnu foreign no-define no-dist subdir-objects -Wall -Wno-portability -Wno-extra-portability])
+AM_SILENT_RULES([yes])
 
 realdirpath() {
     test -z "$1" && return 1
@@ -26,13 +28,15 @@ realdirpath() {
 winsup_srcdir="$(realdirpath $srcdir)"
 target_builddir="$(realdirpath ..)"
 
-AC_PROG_INSTALL
 AC_NO_EXECUTABLES
-AC_CANONICAL_TARGET
 
+AC_PROG_INSTALL
+AC_PROG_MKDIR_P
 AC_PROG_CC
 AC_PROG_CXX
 AC_PROG_CPP
+AM_PROG_AS
+
 AC_LANG(C)
 AC_LANG(C++)
 
@@ -82,6 +86,8 @@ AC_SUBST(DEF_DLL_ENTRY)
 AC_SUBST(DIN_FILE)
 AC_SUBST(TLSOFFSETS_H)
 
+AM_CONDITIONAL(TARGET_X86_64, [test $target_cpu = "x86_64"])
+
 AC_CHECK_PROGS([DOCBOOK2XTEXI], [docbook2x-texi db2x_docbook2texi], [true])
 
 if test "x$with_cross_bootstrap" != "xyes"; then
@@ -90,15 +96,24 @@ if test "x$with_cross_bootstrap" != "xyes"; then
     AC_CHECK_PROGS(MINGW_CC, ${target_cpu}-w64-mingw32-gcc)
     test -n "$MINGW_CC" || AC_MSG_ERROR([no acceptable MinGW gcc found in \$PATH])
 fi
+AM_CONDITIONAL(CROSS_BOOTSTRAP, [test "x$with_cross_bootstrap" != "xyes"])
+
 AC_EXEEXT
 
+AC_CHECK_LIB([bfd], [bfd_init], [true],
+     AC_MSG_WARN([Not building dumper.exe since some required libraries or headers are missing]))
+
+AM_CONDITIONAL(BUILD_DUMPER, [test "x$ac_cv_lib_bfd_bfd_init" = "xyes"])
+
 AC_CONFIG_FILES([
     Makefile
     cygwin/Makefile
     cygserver/Makefile
     doc/Makefile
     utils/Makefile
+    utils/mingw/Makefile
     testsuite/Makefile
+    testsuite/cygrun/Makefile
 ])
 
 AC_OUTPUT
diff --git a/winsup/cygserver/Makefile.am b/winsup/cygserver/Makefile.am
new file mode 100644
index 000000000..d52f93ce0
--- /dev/null
+++ b/winsup/cygserver/Makefile.am
@@ -0,0 +1,58 @@
+# Makefile for Cygwin server
+
+# This file is part of Cygwin.
+
+# This software is a copyrighted work licensed under the terms of the
+# Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
+# details.
+
+include $(top_srcdir)/Makefile.am.common
+
+cygserver_flags=$(cxxflags_common) -Wimplicit-fallthrough=5 -Werror -DSYSCONFDIR="\"$(sysconfdir)\""
+
+noinst_LIBRARIES = libcygserver.a
+sbin_PROGRAMS = cygserver
+bin_SCRIPTS = cygserver-config
+
+cygserver_SOURCES = \
+ bsd_helper.cc \
+ bsd_log.cc \
+ bsd_mutex.cc \
+ client.cc \
+ cygserver.cc \
+ msg.cc \
+ process.cc \
+ pwdgrp.cc \
+ sem.cc \
+ setpwd.cc \
+ shm.cc \
+ sysv_msg.cc \
+ sysv_sem.cc \
+ sysv_shm.cc \
+ threaded_queue.cc \
+ transport.cc \
+ transport_pipes.cc
+
+cygserver_CXXFLAGS = $(cygserver_flags) -D__OUTSIDE_CYGWIN__
+cygserver_LDADD = -lntdll
+cygserver_LDFLAGS = -static -static-libgcc
+
+# Note: the objects in libcygserver are built without -D__OUTSIDE_CYGWIN__,
+# unlike cygserver.exe
+
+libcygserver_a_SOURCES = \
+ $(cygserver_SOURCES)
+
+libcygserver_a_CXXFLAGS = $(cygserver_flags)
+
+cygdocdir = $(datarootdir)/doc/Cygwin
+
+install-data-local:
+ @$(MKDIR_P) $(DESTDIR)$(cygdocdir)
+ $(INSTALL_DATA) $(srcdir)/README $(DESTDIR)$(cygdocdir)/cygserver.README
+ @$(MKDIR_P) $(DESTDIR)$(sysconfdir)/defaults/etc
+ $(INSTALL_DATA) $(srcdir)/cygserver.conf $(DESTDIR)$(sysconfdir)/defaults/etc/cygserver.conf
+
+uninstall-local:
+ rm -f $(DESTDIR)$(cygdocdir)/cygserver.README
+ rm -f $(DESTDIR)$(sysconfdir)/defaults/etc/cygserver.conf
diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am
new file mode 100644
index 000000000..04b071de6
--- /dev/null
+++ b/winsup/cygwin/Makefile.am
@@ -0,0 +1,768 @@
+# Makefile.am for Cygwin.
+#
+# This file is part of Cygwin.
+#
+# This software is a copyrighted work licensed under the terms of the
+# Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
+# details.
+
+# This makefile requires GNU make.
+
+include $(top_srcdir)/Makefile.am.common
+
+COMMON_CFLAGS=-Wimplicit-fallthrough=5 -Werror -fmerge-constants -ftracer
+if TARGET_X86_64
+COMMON_CFLAGS+=-mcmodel=small
+endif
+
+AM_CFLAGS=$(cflags_common) $(COMMON_CFLAGS)
+AM_CXXFLAGS=$(cxxflags_common) $(COMMON_CFLAGS)
+
+if TARGET_X86_64
+# Needed by mcountFunc.S to choose the right code path and symbol names
+AM_CCASFLAGS=-D_WIN64
+endif
+
+target_builddir=@target_builddir@
+newlib_build=$(target_builddir)/newlib
+
+#
+# Specialize libdir and includedir to use tooldir prefixed paths (containing
+# target_alias) as used by newlib, because we overwrite library and header files
+# installed there by newlib.
+#
+
+toollibdir=$(prefix)/$(target_alias)/lib
+toolincludedir=$(prefix)/$(target_alias)/include
+
+# Parameters used in building the cygwin.dll.
+
+DLL_NAME=cygwin1.dll
+TEST_DLL_NAME=cygwin0.dll
+DIN_FILE=@DIN_FILE@
+DEF_FILE=cygwin.def
+TLSOFFSETS_H=@TLSOFFSETS_H@
+LIB_NAME=libcygwin.a
+TEST_LIB_NAME=libcygwin0.a
+
+#
+# sources
+#
+
+# These objects are included directly into the import library
+LIB_FILES= \
+ lib/_cygwin_crt0_common.cc \
+ lib/atexit.c \
+ lib/cygwin_attach_dll.c \
+ lib/cygwin_crt0.c \
+ lib/dll_entry.c \
+ lib/dll_main.cc \
+ lib/dso_handle.c \
+ lib/libcmain.c \
+ lib/premain0.c \
+ lib/premain1.c \
+ lib/premain2.c \
+ lib/premain3.c \
+ lib/pseudo-reloc-dummy.c
+
+LIBC_FILES= \
+ libc/arc4random_stir.c \
+ libc/base64.c \
+ libc/bsdlib.cc \
+ libc/call_once.c \
+ libc/cnd.c \
+ libc/fnmatch.c \
+ libc/fts.c \
+ libc/ftw.c \
+ libc/getentropy.cc \
+ libc/getopt.c \
+ libc/inet_addr.c \
+ libc/inet_network.c \
+ libc/minires-os-if.c \
+ libc/minires.c \
+ libc/msgcat.c \
+ libc/mtx.c \
+ libc/nftw.c \
+ libc/rcmd.cc \
+ libc/rexec.cc \
+ libc/strfmon.c \
+ libc/strptime.cc \
+ libc/thrd.c \
+ libc/tss.c \
+ libc/xsique.cc
+
+MATH_FILES= \
+ math/acoshl.c \
+ math/acosl.c \
+ math/asinhl.c \
+ math/asinl.c \
+ math/atan2l.c \
+ math/atanhl.c \
+ math/atanl.c \
+ math/cabsl.c \
+ math/cacosl.c \
+ math/cargl.c \
+ math/casinl.c \
+ math/catanl.c \
+ math/cbrtl.c \
+ math/ccosl.c \
+ math/ceill.S \
+ math/cephes_emath.c \
+ math/cexpl.c \
+ math/cimagl.c \
+ math/clog10l.c \
+ math/clogl.c \
+ math/conjl.c \
+ math/copysignl.S \
+ math/coshl.c \
+ math/cosl.c \
+ math/cosl_internal.S \
+ math/cossin.c \
+ math/cpowl.c \
+ math/cprojl.c \
+ math/creall.c \
+ math/csinl.c \
+ math/csqrtl.c \
+ math/ctanl.c \
+ math/erfl.c \
+ math/exp10l.c \
+ math/exp2l.S \
+ math/expl.c \
+ math/expm1l.c \
+ math/fabsl.c \
+ math/fdiml.c \
+ math/finite.c \
+ math/floorl.S \
+ math/fmal.c \
+ math/fmaxl.c \
+ math/fminl.c \
+ math/fmodl.c \
+ math/frexpl.S \
+ math/ilogbl.S \
+ math/internal_logl.S \
+ math/isinf.c \
+ math/isnan.c \
+ math/ldexpl.c \
+ math/lgammal.c \
+ math/llrint.c \
+ math/llrintf.c \
+ math/llrintl.c \
+ math/llroundl.c \
+ math/log10l.S \
+ math/log1pl.S \
+ math/log2l.S \
+ math/logbl.c \
+ math/logl.c \
+ math/lrint.c \
+ math/lrintf.c \
+ math/lrintl.c \
+ math/lroundl.c \
+ math/modfl.c \
+ math/nearbyint.S \
+ math/nearbyintf.S \
+ math/nearbyintl.S \
+ math/nextafterl.c \
+ math/nexttoward.c \
+ math/nexttowardf.c \
+ math/pow10l.c \
+ math/powil.c \
+ math/powl.c \
+ math/remainder.S \
+ math/remainderf.S \
+ math/remainderl.S \
+ math/remquol.S \
+ math/rint.c \
+ math/rintf.c \
+ math/rintl.c \
+ math/roundl.c \
+ math/scalbl.S \
+ math/scalbnl.S \
+ math/sinhl.c \
+ math/sinl.c \
+ math/sinl_internal.S \
+ math/sqrtl.c \
+ math/tanhl.c \
+ math/tanl.S \
+ math/tgammal.c \
+ math/truncl.c
+
+REGEX_FILES = \
+ regex/regcomp.c \
+ regex/regerror.c \
+ regex/regexec.c \
+ regex/regfree.c
+
+TZCODE_FILES= \
+ tzcode/localtime_wrapper.c
+
+DLL_FILES= \
+ advapi32.cc \
+ aio.cc \
+ assert.cc \
+ autoload.cc \
+ clock.cc \
+ ctype.cc \
+ cxx.cc \
+ cygheap.cc \
+ cygthread.cc \
+ cygtls.cc \
+ cygwait.cc \
+ cygxdr.cc \
+ dcrt0.cc \
+ debug.cc \
+ devices.cc \
+ dir.cc \
+ dlfcn.cc \
+ dll_init.cc \
+ dtable.cc \
+ environ.cc \
+ errno.cc \
+ exceptions.cc \
+ exec.cc \
+ external.cc \
+ fcntl.cc \
+ fenv.cc \
+ fhandler.cc \
+ fhandler_clipboard.cc \
+ fhandler_console.cc \
+ fhandler_cygdrive.cc \
+ fhandler_dev.cc \
+ fhandler_disk_file.cc \
+ fhandler_dsp.cc \
+ fhandler_fifo.cc \
+ fhandler_floppy.cc \
+ fhandler_netdrive.cc \
+ fhandler_nodevice.cc \
+ fhandler_pipe.cc \
+ fhandler_proc.cc \
+ fhandler_process.cc \
+ fhandler_process_fd.cc \
+ fhandler_procnet.cc \
+ fhandler_procsys.cc \
+ fhandler_procsysvipc.cc \
+ fhandler_random.cc \
+ fhandler_raw.cc \
+ fhandler_registry.cc \
+ fhandler_serial.cc \
+ fhandler_signalfd.cc \
+ fhandler_socket.cc \
+ fhandler_socket_inet.cc \
+ fhandler_socket_local.cc \
+ fhandler_socket_unix.cc \
+ fhandler_tape.cc \
+ fhandler_termios.cc \
+ fhandler_timerfd.cc \
+ fhandler_tty.cc \
+ fhandler_virtual.cc \
+ fhandler_windows.cc \
+ fhandler_zero.cc \
+ flock.cc \
+ fork.cc \
+ forkable.cc \
+ glob.cc \
+ glob_pattern_p.cc \
+ globals.cc \
+ grp.cc \
+ heap.cc \
+ hookapi.cc \
+ init.cc \
+ ioctl.cc \
+ ipc.cc \
+ kernel32.cc \
+ ldap.cc \
+ libstdcxx_wrapper.cc \
+ loadavg.cc \
+ lsearch.cc \
+ malloc_wrapper.cc \
+ miscfuncs.cc \
+ mktemp.cc \
+ mmap.cc \
+ mmap_alloc.cc \
+ msg.cc \
+ mount.cc \
+ net.cc \
+ netdb.cc \
+ nfs.cc \
+ nlsfuncs.cc \
+ ntea.cc \
+ passwd.cc \
+ path.cc \
+ pinfo.cc \
+ poll.cc \
+ posix_ipc.cc \
+ posix_timer.cc \
+ pseudo-reloc.cc \
+ pthread.cc \
+ quotactl.cc \
+ random.cc \
+ registry.cc \
+ resource.cc \
+ scandir.cc \
+ sched.cc \
+ sec_acl.cc \
+ sec_auth.cc \
+ sec_helper.cc \
+ sec_posixacl.cc \
+ security.cc \
+ select.cc \
+ sem.cc \
+ setlsapwd.cc \
+ shared.cc \
+ shm.cc \
+ signal.cc \
+ sigproc.cc \
+ smallprint.cc \
+ spawn.cc \
+ strace.cc \
+ strfuncs.cc \
+ strsep.cc \
+ strsig.cc \
+ sync.cc \
+ syscalls.cc \
+ sysconf.cc \
+ syslog.cc \
+ termios.cc \
+ thread.cc \
+ timerfd.cc \
+ times.cc \
+ tls_pbuf.cc \
+ tty.cc \
+ uinfo.cc \
+ uname.cc \
+ wait.cc \
+ wincap.cc \
+ window.cc \
+ winf.cc
+
+MALLOC_FILES= \
+ malloc.cc
+
+GMON_FILES= \
+ gmon.c \
+ mcount.c \
+ profil.c \
+ mcountFunc.S
+
+GENERATED_FILES= \
+ sigfe.s
+
+liblib_a_SOURCES= \
+ $(LIB_FILES)
+
+libdll_a_SOURCES= \
+ $(DLL_FILES) \
+ $(REGEX_FILES) \
+ $(MALLOC_FILES) \
+ $(LIBC_FILES) \
+ $(MATH_FILES) \
+ $(TZCODE_FILES) \
+ $(GENERATED_FILES)
+
+#
+# generated sources
+#
+
+shared_info_magic.h: cygmagic shared_info.h
+ $(srcdir)/cygmagic $@ "$(CC) $(INCLUDES) $(CPPFLAGS) -E -x c++" $(word 2,$^) SHARED_MAGIC 'class shared_info' USER_MAGIC 'class user_info'
+
+child_info_magic.h: cygmagic child_info.h
+ $(srcdir)/cygmagic $@ "$(CC) $(INCLUDES) $(CPPFLAGS) -E -x c++" $(word 2,$^) CHILD_INFO_MAGIC 'class child_info'
+
+globals.h: mkglobals_h globals.cc
+ $^ > $@
+
+localtime.patched.c: tzcode/localtime.c tzcode/localtime.c.patch
+ patch -u -o localtime.patched.c \
+    $(srcdir)/tzcode/localtime.c \
+    $(srcdir)/tzcode/localtime.c.patch
+
+$(srcdir)/devices.cc: gendevices devices.in devices.h
+ $(wordlist 1,2,$^) $@
+
+$(srcdir)/$(TLSOFFSETS_H): gentls_offsets cygtls.h
+ $^ $@ $(target_cpu) $(CC) $(AM_CFLAGS) -c || rm $@
+
+BUILT_SOURCES = \
+ child_info_magic.h \
+ shared_info_magic.h \
+ globals.h \
+ localtime.patched.c
+
+# Every time we touch a source file, the version info has to be rebuilt
+# to maintain a correct build date, especially in uname release output
+dirs = $(srcdir) $(srcdir)/regex $(srcdir)/lib $(srcdir)/libc $(srcdir)/math $(srcdir)/tzcode
+find_src_files = $(wildcard $(dir)/*.[chS]) $(wildcard $(dir)/*.cc)
+src_files := $(foreach dir,$(dirs),$(find_src_files))
+
+# mkvers.sh creates version.cc in the first place, winver.o always
+# second, so version.cc is always older than winver.o
+version.cc: mkvers.sh include/cygwin/version.h winver.rc $(src_files)
+ @echo "Making version.cc and winver.o";\
+ export CC="$(CC)";\
+ /bin/sh $(word 1,$^) $(word 2,$^) $(word 3,$^) $(WINDRES) $(CFLAGS)
+
+winver.o: version.cc
+
+VERSION_OFILES = version.o winver.o
+
+#
+# export renames for mkimport
+#
+
+NEW_FUNCTIONS=$(addprefix --replace=,\
+ atexit= \
+ timezone= \
+ uname=uname_x \
+ __xdrrec_getrec= \
+ __xdrrec_setnonblock= \
+ xdr_array= \
+ xdr_bool= \
+ xdr_bytes= \
+ xdr_char= \
+ xdr_double= \
+ xdr_enum= \
+ xdr_float= \
+ xdr_free= \
+ xdr_hyper= \
+ xdr_int= \
+ xdr_int16_t= \
+ xdr_int32_t= \
+ xdr_int64_t= \
+ xdr_int8_t= \
+ xdr_long= \
+ xdr_longlong_t= \
+ xdr_netobj= \
+ xdr_opaque= \
+ xdr_pointer= \
+ xdr_reference= \
+ xdr_short= \
+ xdr_sizeof= \
+ xdr_string= \
+ xdr_u_char= \
+ xdr_u_hyper= \
+ xdr_u_int= \
+ xdr_u_int16_t= \
+ xdr_u_int32_t= \
+ xdr_u_int64_t= \
+ xdr_u_int8_t= \
+ xdr_u_long= \
+ xdr_u_longlong_t= \
+ xdr_u_short= \
+ xdr_uint16_t= \
+ xdr_uint32_t= \
+ xdr_uint64_t= \
+ xdr_uint8_t= \
+ xdr_union= \
+ xdr_vector= \
+ xdr_void= \
+ xdr_wrapstring= \
+ xdrmem_create= \
+ xdrrec_create= \
+ xdrrec_endofrecord= \
+ xdrrec_eof= \
+ xdrrec_skiprecord= \
+ xdrstdio_create= \
+)
+
+if !TARGET_X86_64
+NEW_FUNCTIONS+=$(addprefix --replace=,\
+ acl=_acl32 \
+ aclcheck=_aclcheck32 \
+ aclfrommode=_aclfrommode32 \
+ aclfrompbits=_aclfrompbits32 \
+ aclfromtext=_aclfromtext32 \
+ aclsort=_aclsort32 \
+ acltomode=_acltomode32 \
+ acltopbits=_acltopbits32 \
+ acltotext=_acltotext32 \
+ chown=_chown32 \
+ facl=_facl32 \
+ fchown=_fchown32 \
+ fcntl=_fcntl64 \
+ fdopen=_fdopen64 \
+ fgetpos=_fgetpos64 \
+ fopen=_fopen64 \
+ freopen=_freopen64 \
+ fseeko=_fseeko64 \
+ fsetpos=_fsetpos64 \
+ fstat=_fstat64 \
+ ftello=_ftello64 \
+ ftruncate=_ftruncate64 \
+ getegid=_getegid32 \
+ geteuid=_geteuid32 \
+ getgid=_getgid32 \
+ getgrent=_getgrent32 \
+ getgrgid=_getgrgid32 \
+ getgrnam=_getgrnam32 \
+ getgroups=_getgroups32 \
+ getpwuid=_getpwuid32 \
+ getpwuid_r=_getpwuid_r32 \
+ getuid=_getuid32 \
+ initgroups=_initgroups32 \
+ lchown=_lchown32 \
+ lseek=_lseek64 \
+ lstat=_lstat64 \
+ mknod=_mknod32 \
+ mmap=_mmap64 \
+ open=_open64 \
+ setegid=_setegid32 \
+ seteuid=_seteuid32 \
+ setgid=_setgid32 \
+ setgroups=_setgroups32 \
+ setregid=_setregid32 \
+ setreuid=_setreuid32 \
+ setuid=_setuid32 \
+ stat=_stat64 \
+ tmpfile=_tmpfile64 \
+ truncate=_truncate64 \
+)
+endif
+
+#
+# per-file compilation flags
+#
+# (these come after, and thus override, the user-supplied CXXFLAGS, as they need
+# to be able to fiddle with the optimization level)
+#
+
+CXXFLAGS += $($(*F)_CFLAGS)
+
+localtime_wrapper_CFLAGS=-I$(srcdir)/tzcode -fwrapv
+
+# required since gcc 9.x
+exec_CFLAGS=-fno-builtin-execve
+
+fhandler_proc_CFLAGS=-DUSERNAME="\"$(USER)\"" -DHOSTNAME="\"$(HOSTNAME)\"" \
+     -DGCC_VERSION="\"`$(CC) -v 2>&1 | tail -n 1`\""
+
+if !TARGET_X86_64
+# on x86, exceptions.cc must be compiled with a frame-pointer as it uses RtlCaptureContext()
+exceptions_CFLAGS=-fno-omit-frame-pointer
+endif
+
+dtable_CFLAGS=-fcheck-new
+
+# If an optimization level is explicitly set in CXXFLAGS, set -O3 for these files
+# XXX: this seems to assume it's not -O0?
+#
+# (the indentation here prevents automake trying to process this as an automake
+# conditional)
+ ifneq "${filter -O%,$(CXXFLAGS)}" ""
+  malloc_CFLAGS=-O3
+  sync_CFLAGS=-O3
+ endif
+
+#
+# libraries and installed objects
+#
+# (Don't ever try to use automake's shared library support via libtool to build
+# Cygwin. Instead we have explicit rules to build it.)
+#
+
+SUBLIBS = \
+ libpthread.a \
+ libutil.a \
+ libm.a \
+ libc.a \
+ libdl.a \
+ libresolv.a \
+ librt.a \
+ libacl.a \
+ libssp.a
+
+EXTRALIBS = \
+ libautomode.a \
+ libbinmode.a \
+ libtextmode.a \
+ libtextreadmode.a
+
+noinst_LIBRARIES = \
+ libdll.a \
+ liblib.a
+
+toollib_LIBRARIES = \
+ libgmon.a \
+ $(EXTRALIBS)
+
+CYGWIN_START=crt0.o
+GMON_START=gcrt0.o
+INSTOBJS=automode.o binmode.o textmode.o textreadmode.o
+
+toollib_DATA = \
+ $(CYGWIN_START) \
+ $(GMON_START) \
+ $(INSTOBJS) \
+ $(LIB_NAME) \
+ $(SUBLIBS)
+
+libgmon_a_SOURCES = $(GMON_FILES)
+libgmon_a_LIBADD =
+
+libautomode_a_SOURCES =
+libautomode_a_LIBADD = automode.o
+
+libbinmode_a_SOURCES =
+libbinmode_a_LIBADD = binmode.o
+
+libtextmode_a_SOURCES =
+libtextmode_a_LIBADD = textmode.o
+
+libtextreadmode_a_SOURCES =
+libtextreadmode_a_LIBADD = textreadmode.o
+
+# cygserver library
+cygserver_blddir = ${target_builddir}/winsup/cygserver
+LIBSERVER = $(cygserver_blddir)/libcygserver.a
+
+$(LIBSERVER):
+ $(MAKE) -C $(cygserver_blddir) libcygserver.a
+
+# We build as cygwin0.dll and rename at install time to overcome native
+# rebuilding issues (we don't want the build tools to see a partially built
+# cygwin.dll and attempt to use it instead of the old one).
+
+# linker script
+LDSCRIPT=cygwin.sc
+$(LDSCRIPT): $(LDSCRIPT).in
+ $(CC) -E - -P < $^ -o $@
+
+# cygwin dll
+$(TEST_DLL_NAME): $(LDSCRIPT) dllfixdbg libdll.a $(VERSION_OFILES) $(LIBSERVER)
+ $(CXX) $(CXXFLAGS) \
+ -mno-use-libstdc-wrappers \
+ -Wl,--gc-sections -nostdlib -Wl,-T$(LDSCRIPT) -static \
+ -Wl,--heap=0 -Wl,--out-implib,cygdll.a -shared -o $@ \
+ -e @DLL_ENTRY@ $(DEF_FILE) \
+ -Wl,-whole-archive libdll.a -Wl,-no-whole-archive \
+ $(VERSION_OFILES) \
+ $(LIBSERVER) \
+ $(newlib_build)/libm/libm.a \
+ $(newlib_build)/libc/libc.a \
+ -lgcc -lkernel32 -lntdll -Wl,-Map,cygwin.map
+ $(srcdir)/dllfixdbg $(OBJDUMP) $(OBJCOPY) $@ cygwin1.dbg
+ @ln -f $@ new-cygwin1.dll
+
+# cygwin import library
+toolopts=--cpu=@target_cpu@ --ar=@AR@ --as=@AS@ --nm=@NM@ --objcopy=@OBJCOPY@
+
+$(DEF_FILE): gendef $(srcdir)/$(TLSOFFSETS_H) $(DIN_FILE) common.din
+ $(srcdir)/gendef --cpu=@target_cpu@ --output-def=$(DEF_FILE) --tlsoffsets=$(srcdir)/$(TLSOFFSETS_H) $(srcdir)/$(DIN_FILE) $(srcdir)/common.din
+
+sigfe.s: $(DEF_FILE)
+ @[ -s $@ ] || \
+ { rm -f $(DEF_FILE); $(MAKE) -s -j1 $(DEF_FILE); }; \
+ [ -s $@ ] && touch $@
+
+LIBCOS=$(addsuffix .o,$(basename $(LIB_FILES)))
+$(LIB_NAME): $(DEF_FILE) $(LIBCOS) | $(TEST_DLL_NAME)
+ $(srcdir)/mkimport $(toolopts) $(NEW_FUNCTIONS) $@ cygdll.a $(wordlist 2,99,$^)
+
+# cygwin import library used by testsuite
+$(TEST_LIB_NAME): $(LIB_NAME)
+ perl -p -e 'BEGIN{binmode(STDIN); binmode(STDOUT);}; s/cygwin1/cygwin0/g' < $? > $@
+
+# sublibs
+# import libraries for some subset of symbols indicated by given objects
+speclib=\
+ $(srcdir)/speclib $(toolopts) \
+ --exclude='cygwin' \
+ --exclude='(?i:dll)' \
+ --exclude='reloc' \
+ --exclude='^main$$' \
+ --exclude='^_main$$'
+
+libc.a: $(LIB_NAME) libm.a libpthread.a libutil.a
+ $(speclib) $^ -v $(@F)
+
+libm.a: $(LIB_NAME) $(newlib_build)/libm/libm.a $(addsuffix .o,$(basename $(MATH_FILES)))
+ $(speclib) $^ $(@F)
+
+libpthread.a: $(LIB_NAME) pthread.o thread.o libc/call_once.o libc/cnd.o \
+      libc/mtx.o libc/thrd.o libc/tss.o
+ $(speclib) $^ $(@F)
+
+libutil.a: $(LIB_NAME) libc/bsdlib.o
+ $(speclib) $^ $(@F)
+
+libdl.a: $(LIB_NAME) dlfcn.o
+ $(speclib) $^ $(@F)
+
+libresolv.a: $(LIB_NAME) libc/minires.o
+ $(speclib) $^ $(@F)
+
+librt.a: $(LIB_NAME) posix_ipc.o
+ $(speclib) $^ $(@F)
+
+libacl.a: $(LIB_NAME) sec_posixacl.o
+ $(speclib) $^ $(@F)
+
+libssp.a: $(LIB_NAME) $(newlib_build)/libc/ssp/lib.a
+ $(speclib) $^ $(@F)
+
+#
+# all
+#
+
+all-local: $(LIB_NAME) $(TEST_LIB_NAME) $(SUBLIBS)
+
+#
+# clean
+#
+
+clean-local:
+ -rm -f $(BUILT_SOURCES)
+ -rm -f $(DEF_FILE) sigfe.s
+ -rm -f cygwin.sc cygdll.a cygwin.map $(TEST_DLL_NAME) cygwin1.dbg new-cygwin1.dll
+ -rm -f $(LIB_NAME) $(TEST_LIB_NAME) $(SUBLIBS)
+ -rm -f version.cc
+
+maintainer-clean-local:
+ -rm -f $(srcdir)/$(TLSOFFSETS_H) $(srcdir)/devices.cc
+
+#
+# install
+#
+
+man_MANS = regex/regex.3 regex/regex.7
+
+install-exec-hook: install-libs
+install-data-local: install-headers install-ldif
+
+install-libs:
+ @$(MKDIR_P) $(DESTDIR)$(bindir)
+ $(INSTALL_PROGRAM) $(TEST_DLL_NAME) $(DESTDIR)$(bindir)/$(DLL_NAME)
+ (cd $(DESTDIR)$(toollibdir) && ln -sf $(LIB_NAME) libg.a)
+
+install-headers:
+ cd $(srcdir)/include; \
+ for sub in `find . -type d -print | sort`; do \
+    $(MKDIR_P) $(DESTDIR)$(toolincludedir)/$$sub; \
+    for i in $$sub/*.h ; do \
+      $(INSTALL_DATA) $$i $(DESTDIR)$(toolincludedir)/$$sub/`basename $$i` ; \
+    done ; \
+ done ;
+
+install-ldif:
+ @$(MKDIR_P) $(DESTDIR)$(datarootdir)/cygwin
+ $(INSTALL_DATA) $(srcdir)/cygwin.ldif $(DESTDIR)$(datarootdir)/cygwin
+
+#
+# uninstall
+#
+
+uninstall-hook: uninstall-headers uninstall-ldif uninstall-libs
+
+uninstall-libs:
+ rm -f $(DESTDIR)$(bindir)/cygwin1.dll
+ rm -f $(DESTDIR)$(toollibdir)/libg.a
+
+uninstall-headers:
+ cd $(srcdir)/include; \
+ for sub in `find . -type d -print | sort`; do \
+    for i in $$sub/*.h ; do \
+      rm -f $(DESTDIR)$(toolincludedir)/$$sub/`basename $$i` ; \
+    done ; \
+ done ;
+
+uninstall-ldif:
+ rm -f $(DESTDIR)$(datarootdir)/cygwin/cygwin.ldif
diff --git a/winsup/cygwin/config.h.in b/winsup/cygwin/config.h.in
index 5ddff249f..1c4940951 100644
--- a/winsup/cygwin/config.h.in
+++ b/winsup/cygwin/config.h.in
@@ -1,4 +1,4 @@
-/* config.h.in.  Generated from configure.ac by autoheader.  */
+/* cygwin/config.h.in.  Generated from configure.ac by autoheader.  */
 
 /* Define if DEBUGGING support is requested. */
 #undef DEBUGGING
diff --git a/winsup/doc/Makefile.am b/winsup/doc/Makefile.am
new file mode 100644
index 000000000..72b803c49
--- /dev/null
+++ b/winsup/doc/Makefile.am
@@ -0,0 +1,155 @@
+# -*- Makefile -*- for winsup/doc
+#
+# This file is part of Cygwin.
+#
+# This software is a copyrighted work licensed under the terms of the
+# Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
+# details.
+
+man1_MANS =
+man3_MANS =
+
+doc_DATA = \
+ cygwin-ug-net/cygwin-ug-net.pdf \
+ cygwin-api/cygwin-api.pdf
+
+htmldir = $(datarootdir)/doc
+
+XMLTO=xmlto --skip-validation --with-dblatex
+DOCBOOK2XTEXI=@DOCBOOK2XTEXI@ --xinclude --info --utf8trans-map=charmap
+
+-include Makefile.dep
+
+.PHONY: install-extra-man install-etc
+
+all-local: Makefile.dep \
+ cygwin-api/cygwin-api.html \
+ cygwin-ug-net/cygwin-ug-net.html \
+ faq/faq.html faq/faq.body \
+ cygwin-ug-net/cygwin-ug-net-nochunks.html.gz \
+ api2man.stamp intro2man.stamp utils2man.stamp \
+ cygwin-api.info cygwin-ug-net.info
+
+clean-local:
+ rm -f Makefile.dep
+ rm -f *.html *.html.gz
+ rm -Rf cygwin-api cygwin-ug-net faq
+ rm -f api2man.stamp intro2man.stamp utils2man.stamp
+ rm -f *.1
+ rm -f *.3
+ rm -f *.info* charmap
+
+install-html-local: cygwin-ug-net/cygwin-ug-net.html cygwin-api/cygwin-api.html
+ @$(MKDIR_P) $(DESTDIR)$(htmldir)/cygwin-ug-net
+ $(INSTALL_DATA) cygwin-ug-net/*.html $(DESTDIR)$(htmldir)/cygwin-ug-net
+ (cd $(DESTDIR)$(htmldir)/cygwin-ug-net && ln -f cygwin-ug-net.html index.html)
+ $(INSTALL_DATA) $(srcdir)/docbook.css $(DESTDIR)$(htmldir)/cygwin-ug-net
+ @$(MKDIR_P) $(DESTDIR)$(htmldir)/cygwin-api
+ $(INSTALL_DATA) cygwin-api/*.html $(DESTDIR)$(htmldir)/cygwin-api
+ (cd $(DESTDIR)$(htmldir)/cygwin-api && ln -f cygwin-api.html index.html)
+ $(INSTALL_DATA) $(srcdir)/docbook.css $(DESTDIR)$(htmldir)/cygwin-api
+
+install-extra-man: api2man.stamp intro2man.stamp utils2man.stamp
+ @$(MKDIR_P) $(DESTDIR)$(man1dir)
+ $(INSTALL_DATA) *.1 $(DESTDIR)$(man1dir)
+ @$(MKDIR_P) $(DESTDIR)$(man3dir)
+ $(INSTALL_DATA) *.3 $(DESTDIR)$(man3dir)
+
+install-info-local: cygwin-ug-net.info cygwin-api.info
+ @$(MKDIR_P) $(DESTDIR)$(infodir)
+ $(INSTALL_DATA) *.info* $(DESTDIR)$(infodir)
+
+install-etc:
+ @$(MKDIR_P) $(DESTDIR)$(sysconfdir)/postinstall
+ $(INSTALL_SCRIPT) $(srcdir)/etc.postinstall.cygwin-doc.sh $(DESTDIR)$(sysconfdir)/postinstall/cygwin-doc.sh
+ @$(MKDIR_P) $(DESTDIR)$(sysconfdir)/preremove
+ $(INSTALL_SCRIPT) $(srcdir)/etc.preremove.cygwin-doc.sh $(DESTDIR)$(sysconfdir)/preremove/cygwin-doc.sh
+
+install-data-hook: install-extra-man install-html-local install-info-local install-etc
+
+uninstall-extra-man:
+ for i in *.1 ; do \
+    rm -f $(DESTDIR)$(man1dir)/$$i ; \
+ done
+ for i in *.3 ; do \
+    rm -f $(DESTDIR)$(man3dir)/$$i ; \
+ done
+
+uninstall-html:
+ for i in cygwin-ug-net/*.html ; do \
+    rm -f $(DESTDIR)$(htmldir)/$$i ; \
+ done ;
+ rm -f $(DESTDIR)$(htmldir)/cygwin-ug-net/index.html
+ rm -f $(DESTDIR)$(htmldir)/cygwin-ug-net/docbook.css
+ for i in cygwin-api/*.html ; do \
+    rm -f $(DESTDIR)$(htmldir)/$$i ; \
+ done ;
+ rm -f $(DESTDIR)$(htmldir)/cygwin-api/index.html
+ rm -f $(DESTDIR)$(htmldir)/cygwin-api/docbook.css
+
+uninstall-info:
+ for i in *.info* ; do \
+    rm -f $(DESTDIR)$(infodir)/$$i ; \
+ done ;
+
+uninstall-etc:
+ rm -f $(DESTDIR)$(sysconfdir)/postinstall/cygwin-doc.sh
+ rm -f $(DESTDIR)$(sysconfdir)/preremove/cygwin-doc.sh
+
+uninstall-hook: uninstall-extra-man uninstall-html uninstall-info uninstall-etc
+
+# nochunks ug html is not installed, but will be deployed to website
+cygwin-ug-net/cygwin-ug-net-nochunks.html.gz: $(cygwin-ug-net_SOURCES) html.xsl
+ $(XMLTO) html-nochunks -m $(srcdir)/html.xsl $<
+ @$(MKDIR_P) cygwin-ug-net
+ cp cygwin-ug-net.html cygwin-ug-net/cygwin-ug-net-nochunks.html
+ rm -f cygwin-ug-net/cygwin-ug-net-nochunks.html.gz
+ gzip cygwin-ug-net/cygwin-ug-net-nochunks.html
+
+cygwin-ug-net/cygwin-ug-net.html: $(cygwin-ug-net_SOURCES) html.xsl
+ $(XMLTO) html -o cygwin-ug-net/ -m $(srcdir)/html.xsl $<
+
+cygwin-ug-net/cygwin-ug-net.pdf: $(cygwin-ug-net_SOURCES) fo.xsl
+ $(XMLTO) pdf -o cygwin-ug-net/ -m $(srcdir)/fo.xsl $<
+
+utils2man.stamp: $(cygwin-ug-net_SOURCES) man.xsl
+ $(XMLTO) man -m $(srcdir)/man.xsl $<
+ @touch $@
+
+cygwin-ug-net.info: $(cygwin-ug-net_SOURCES) charmap
+ $(DOCBOOK2XTEXI) $(srcdir)/cygwin-ug-net.xml --string-param output-file=cygwin-ug-net
+
+cygwin-api/cygwin-api.html: $(cygwin-api_SOURCES) html.xsl
+ $(XMLTO) html -o cygwin-api/ -m $(srcdir)/html.xsl $<
+
+cygwin-api/cygwin-api.pdf: $(cygwin-api_SOURCES) fo.xsl
+ $(XMLTO) pdf -o cygwin-api/ -m $(srcdir)/fo.xsl $<
+
+api2man.stamp: $(cygwin-api_SOURCES) man.xsl
+ $(XMLTO) man -m $(srcdir)/man.xsl $<
+ @touch $@
+
+cygwin-api.info: $(cygwin-api_SOURCES) charmap
+ $(DOCBOOK2XTEXI) $(srcdir)/cygwin-api.xml --string-param output-file=cygwin-api
+
+# this generates a custom charmap for docbook2x-texi which has a mapping for &reg;
+charmap:
+ cp /usr/share/docbook2X/charmaps/texi.charmap charmap
+ echo "ae (R)" >>charmap
+
+intro2man.stamp: intro.xml man.xsl
+ $(XMLTO) man -m $(srcdir)/man.xsl $<
+ @echo ".so intro.1" >cygwin.1
+ @touch $@
+
+faq/faq.html: $(faq_SOURCES) html.xsl
+ $(XMLTO) html -o faq -m $(srcdir)/html.xsl $(srcdir)/faq.xml
+ sed -i 's;<a name="id[mp][0-9]*"></a>;;g' faq/faq.html
+
+# faq body is not installed, but is intended to be deployed to website, where it
+# can be SSI included in a framing page
+faq/faq.body: faq/faq.html
+ $(srcdir)/bodysnatcher.pl $<
+
+Makefile.dep: cygwin-ug-net.xml cygwin-api.xml faq.xml intro.xml
+ cd $(srcdir) && ./xidepend $^ > "$(CURDIR)/$@"
diff --git a/winsup/testsuite/Makefile.am b/winsup/testsuite/Makefile.am
new file mode 100644
index 000000000..4b8c7dbb7
--- /dev/null
+++ b/winsup/testsuite/Makefile.am
@@ -0,0 +1,64 @@
+# Makefile.am for Cygwin's testsuite.
+#
+# This file is part of Cygwin.
+#
+# This software is a copyrighted work licensed under the terms of the
+# Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
+# details.
+
+# This makefile requires GNU make.
+
+noinst_LIBRARIES = libltp.a
+
+libltp_a_CPPFLAGS=-I$(srcdir)/libltp/include
+
+libltp_a_SOURCES = \
+ libltp/lib/dataascii.c \
+ libltp/lib/databin.c \
+ libltp/lib/datapid.c \
+ libltp/lib/forker.c \
+ libltp/lib/get_high_address.c \
+ libltp/lib/libtestsuite.c \
+ libltp/lib/open_flags.c \
+ libltp/lib/parse_opts.c \
+ libltp/lib/pattern.c \
+ libltp/lib/rmobj.c \
+ libltp/lib/search_path.c \
+ libltp/lib/str_to_bytes.c \
+ libltp/lib/string_to_tokens.c \
+ libltp/lib/tst_res.c \
+ libltp/lib/tst_sig.c \
+ libltp/lib/tst_tmpdir.c \
+ libltp/lib/write_log.c
+
+DEJATOOL = winsup
+
+# Add '-v' to RUNTESTFLAGS if V=1
+RUNTESTFLAGS_1 = -v
+RUNTESTFLAGS = $(RUNTESTFLAGS_$(V))
+
+# a temporary directory, to be used for files created by tests
+tmpdir = $(abspath $(objdir)/testsuite/tmp/)
+# the same temporary directory, as an absolute, /cygdrive path (so it can be
+# understood by the test DLL, which will have a different mount table)
+testdll_tmpdir = $(shell cygpath -ma $(tmpdir) | sed -e 's#^\([A-Z]\):#/cygdrive/\L\1#')
+
+site-extra.exp: ../config.status Makefile
+ @rm -f ./tmp0
+ @echo "set runtime_root \"`pwd`/../cygwin\"" >> ./tmp0
+ @echo "set CC \"$(CC)\"" >> ./tmp0
+ @echo "set CFLAGS \"\"" >> ./tmp0
+ @echo "set MINGW_CXX \"$(MINGW_CXX)\"" >> ./tmp0
+ @echo "set tmpdir $(tmpdir)" >> ./tmp0
+ @echo "set testdll_tmpdir $(testdll_tmpdir)" >> ./tmp0
+ @echo "set ltp_includes \"$(srcdir)/libltp/include\"" >> ./tmp0
+ @echo "set ltp_libs \"`pwd`/libltp.a\"" >> ./tmp0
+ @echo "set cygrun \"`pwd`/cygrun/cygrun\"" >> ./tmp0
+ @mv ./tmp0 site-extra.exp
+
+EXTRA_DEJAGNU_SITE_CONFIG = site-extra.exp
+
+clean-local:
+ rm -f *.log *.exe *.exp *.bak *.stackdump winsup.sum
+
+SUBDIRS = cygrun
diff --git a/winsup/testsuite/config/default.exp b/winsup/testsuite/config/default.exp
index 8033ea627..7ef16ee6a 100644
--- a/winsup/testsuite/config/default.exp
+++ b/winsup/testsuite/config/default.exp
@@ -1,7 +1,7 @@
 proc winsup_version {} {
     global env
-    global rootme
-    clone_output "\n[exec grep -a ^%%% $rootme/../cygwin/cygwin0.dll]\n"
+    global runtime_root
+    clone_output "\n[exec grep -a ^%%% $runtime_root/cygwin0.dll]\n"
     if { [info exists env(CYGWIN)] } {
         clone_output "CYGWIN=$env(CYGWIN)\n"
     } else {
diff --git a/winsup/testsuite/cygrun/Makefile.am b/winsup/testsuite/cygrun/Makefile.am
new file mode 100644
index 000000000..eb3b41224
--- /dev/null
+++ b/winsup/testsuite/cygrun/Makefile.am
@@ -0,0 +1,21 @@
+# Makefile.am for Cygwin the testsuite wrapper cygrun.
+#
+# This file is part of Cygwin.
+#
+# This software is a copyrighted work licensed under the terms of the
+# Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
+# details.
+
+# This makefile requires GNU make.
+
+# This is built with the MinGW compiler, so is in a separate Makefile here
+# because it's tricky with Automake to use different compilers for the same
+# language in the same Makefile.
+
+override CC = @MINGW_CC@
+INCLUDES =
+
+noinst_PROGRAMS = cygrun
+
+cygrun_SOURCES = \
+ ../cygrun.c
diff --git a/winsup/testsuite/winsup.api/winsup.exp b/winsup/testsuite/winsup.api/winsup.exp
index 4978136a1..584aa5755 100644
--- a/winsup/testsuite/winsup.api/winsup.exp
+++ b/winsup/testsuite/winsup.api/winsup.exp
@@ -9,13 +9,15 @@ if { ! [isnative] } {
 set rv ""
 
 set ltp_includes "-I$ltp_includes"
-set ltp_libs "$rootme/libltp.a"
+set ltp_libs "$ltp_libs"
 
 set add_includes $ltp_includes
 set add_libs $ltp_libs
 
 set test_filter ""
 
+set env(PATH) "$runtime_root:$env(PATH)"
+
 if { [info exists env(CYGWIN_TESTSUITE_TESTS)] } {
     set test_filter "$env(CYGWIN_TESTSUITE_TESTS)"
 }
@@ -69,7 +71,7 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c $srcdir/$subdir/*/*.{cc
        set redirect_output /dev/null
     }
     file mkdir $tmpdir/$base
-    ws_spawn "$rootme/cygrun ./$base.exe $testdll_tmpdir/$base > $redirect_output"
+    ws_spawn "$cygrun ./$base.exe $testdll_tmpdir/$base > $redirect_output"
     file delete -force $tmpdir/$base
     if { $rv } {
  fail "$testcase (execute)"
diff --git a/winsup/utils/Makefile.am b/winsup/utils/Makefile.am
new file mode 100644
index 000000000..9e5fc8cc0
--- /dev/null
+++ b/winsup/utils/Makefile.am
@@ -0,0 +1,81 @@
+# Makefile for Cygwin utilities
+
+# This file is part of Cygwin.
+
+# This software is a copyrighted work licensed under the terms of the
+# Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
+# details.
+
+include $(top_srcdir)/Makefile.am.common
+
+CFLAGS_COMMON=-Wimplicit-fallthrough=4 -Werror
+AM_CFLAGS=$(cflags_common) $(CFLAGS_COMMON)
+AM_CXXFLAGS=$(cxxflags_common) $(CFLAGS_COMMON)
+
+bin_PROGRAMS = \
+ chattr \
+ cygpath \
+ gencat \
+ getconf \
+ getfacl \
+ kill \
+ ldd \
+ locale \
+ lsattr \
+ minidumper \
+ mkgroup \
+ mkpasswd \
+ mount \
+ passwd \
+ pldd \
+ ps \
+ regtool \
+ setfacl \
+ setmetamode \
+ ssp \
+ tzset \
+ umount
+
+# dumper is only built if libbfd.a available
+if BUILD_DUMPER
+bin_PROGRAMS += dumper
+endif
+
+# If prog_SOURCES is not specified, automake defaults to the single file prog.c
+cygpath_SOURCES = cygpath.cc
+dumper_SOURCES = dumper.cc module_info.cc
+kill_SOURCES = kill.cc
+ldd_SOURCES = ldd.cc
+locale_SOURCES = locale.cc
+minidumper_SOURCES = minidumper.cc
+mount_SOURCES = mount.cc path.cc
+ps_SOURCES = ps.cc
+regtool_SOURCES = regtool.cc
+umount_SOURCES = umount.cc
+
+# rules to create/update tzmap.h from an online resource
+.PHONY: tzmap
+tzmap:
+ $(srcdir)/tzmap-from-unicode.org > $(srcdir)/$@.h
+
+tzmap.h:
+ $(srcdir)/tzmap-from-unicode.org > $(srcdir)/$@
+
+BUILT_SOURCES = tzmap.h
+
+AM_LDFLAGS = -static -Wl,--enable-auto-import
+LDADD = -lnetapi32
+
+cygpath_CXXFLAGS = -fno-threadsafe-statics $(AM_CXXFLAGS)
+cygpath_LDADD = $(LDADD) -luserenv -lntdll
+dumper_CXXFLAGS = -I$(top_srcdir)/../include $(AM_CXXFLAGS)
+dumper_LDADD = $(LDADD) -lpsapi -lbfd -lintl -liconv -liberty -lz -lntdll
+ldd_LDADD = $(LDADD) -lpsapi -lntdll
+mount_CXXFLAGS = -DFSTAB_ONLY $(AM_CXXFLAGS)
+minidumper_LDADD = $(LDADD) -ldbghelp
+pldd_LDADD = $(LDADD) -lpsapi
+ps_LDADD = $(LDADD) -lpsapi -lntdll
+
+if CROSS_BOOTSTRAP
+SUBDIRS = mingw
+endif
diff --git a/winsup/utils/mingw/Makefile.am b/winsup/utils/mingw/Makefile.am
new file mode 100644
index 000000000..dca7f09dc
--- /dev/null
+++ b/winsup/utils/mingw/Makefile.am
@@ -0,0 +1,50 @@
+# Makefile for Cygwin utilities
+
+# This file is part of Cygwin.
+
+# This software is a copyrighted work licensed under the terms of the
+# Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
+# details.
+
+# We put utilities built with a MinGW compiler in a separate Makefile here
+# because it's tricky with Automake to use different compilers for the same
+# language in the same Makefile.
+
+override CXX = @MINGW_CXX@
+INCLUDES =
+
+include $(top_srcdir)/Makefile.am.common
+
+CFLAGS_COMMON=-Wimplicit-fallthrough=4 -Werror
+AM_CXXFLAGS=-fno-exceptions -fno-rtti -fno-use-cxa-atexit $(flags_common) $(CFLAGS_COMMON)
+
+bin_PROGRAMS = \
+ cygcheck \
+ cygwin-console-helper \
+ ldh \
+ strace
+
+cygcheck_SOURCES = \
+ ../bloda.cc \
+ ../cygcheck.cc \
+ ../dump_setup.cc \
+ ../path.cc
+cygcheck_LDADD = -lz -lwininet -lpsapi -lntdll
+
+cygwin_console_helper_SOURCES = ../cygwin-console-helper.cc
+
+ldh_SOURCES = ../ldh.cc
+
+strace_SOURCES = \
+ ../path.cc \
+ ../strace.cc
+strace_LDADD = -lntdll
+
+noinst_PROGRAMS = path-testsuite
+
+path_testsuite_SOURCES = \
+ ../path.cc \
+ ../testsuite.cc
+path_testsuite_CXXFLAGS = -DTESTSUITE -Wno-error=write-strings
+
+TESTS = path-testsuite
--
2.29.2

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Use automake (v2)

Corinna Vinschen-2
Hi Jon,

Do I have to run autogen.sh for testing?


Corinna


On Nov 20 15:59, Jon Turney wrote:

> v2:
> * Include tzmap.h in BUILT_SOURCES
> * Make per-file flags appear after user-supplied CXXFLAGS, so they can
> override optimization level.
> * Correct .o files used to define symbols exported by libm.a
> * Drop gcrt0.o mistakenly incuded in libgmon.a
> * Add missing line continuations in GMON_FILES value
> ---
>  winsup/Makefile.am                     |  19 +
>  winsup/Makefile.am.common              |  15 +
>  winsup/Makefile.common                 |  51 --
>  winsup/autogen.sh                      |   1 +
>  winsup/configure.ac                    |  21 +-
>  winsup/cygserver/Makefile.am           |  58 ++
>  winsup/cygwin/Makefile.am              | 768 +++++++++++++++++++++++++
>  winsup/cygwin/config.h.in              |   2 +-
>  winsup/doc/Makefile.am                 | 155 +++++
>  winsup/testsuite/Makefile.am           |  64 +++
>  winsup/testsuite/config/default.exp    |   4 +-
>  winsup/testsuite/cygrun/Makefile.am    |  21 +
>  winsup/testsuite/winsup.api/winsup.exp |   6 +-
>  winsup/utils/Makefile.am               |  81 +++
>  winsup/utils/mingw/Makefile.am         |  50 ++
>  15 files changed, 1257 insertions(+), 59 deletions(-)
>  create mode 100644 winsup/Makefile.am
>  create mode 100644 winsup/Makefile.am.common
>  delete mode 100644 winsup/Makefile.common
>  create mode 100644 winsup/cygserver/Makefile.am
>  create mode 100644 winsup/cygwin/Makefile.am
>  create mode 100644 winsup/doc/Makefile.am
>  create mode 100644 winsup/testsuite/Makefile.am
>  create mode 100644 winsup/testsuite/cygrun/Makefile.am
>  create mode 100644 winsup/utils/Makefile.am
>  create mode 100644 winsup/utils/mingw/Makefile.am
>
> diff --git a/winsup/Makefile.am b/winsup/Makefile.am
> new file mode 100644
> index 000000000..067f74688
> --- /dev/null
> +++ b/winsup/Makefile.am
> @@ -0,0 +1,19 @@
> +# Makefile.am for winsup stuff
> +#
> +# This file is part of Cygwin.
> +#
> +# This software is a copyrighted work licensed under the terms of the
> +# Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
> +# details.
> +
> +# This makefile requires GNU make.
> +
> +cygdocdir = $(datarootdir)/doc/Cygwin
> +
> +cygdoc_DATA = \
> + CYGWIN_LICENSE \
> + COPYING
> +
> +SUBDIRS = cygwin cygserver doc utils testsuite
> +
> +cygserver utils testsuite: cygwin
> diff --git a/winsup/Makefile.am.common b/winsup/Makefile.am.common
> new file mode 100644
> index 000000000..884194df2
> --- /dev/null
> +++ b/winsup/Makefile.am.common
> @@ -0,0 +1,15 @@
> +# Makefile.am.common - common definitions for the winsup directory
> +#
> +# This file is part of Cygwin.
> +#
> +# This software is a copyrighted work licensed under the terms of the
> +# Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
> +# details.
> +
> +flags_common=-Wall -Wstrict-aliasing -Wwrite-strings -fno-common -pipe -fbuiltin -fmessage-length=0
> +
> +# compiler flags commonly used (but not for MinGW compilation, because they
> +# include the Cygwin header paths via @INCLUDES@)
> +
> +cxxflags_common=$(INCLUDES) -fno-rtti -fno-exceptions -fno-use-cxa-atexit $(flags_common)
> +cflags_common=$(INCLUDES) $(flags_common)
> diff --git a/winsup/Makefile.common b/winsup/Makefile.common
> deleted file mode 100644
> index 3141bd111..000000000
> --- a/winsup/Makefile.common
> +++ /dev/null
> @@ -1,51 +0,0 @@
> -# Makefile.common - common definitions for the winsup directory
> -#
> -# This file is part of Cygwin.
> -#
> -# This software is a copyrighted work licensed under the terms of the
> -# Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
> -# details.
> -
> -define justdir
> -$(patsubst %/,%,$(dir $1))
> -endef
> -
> -define libname
> -$(realpath $(shell ${CC} --print-file-name=$1 $2))
> -endef
> -
> -export PATH:=${winsup_srcdir}:${PATH}
> -
> -# Allow CFLAGS=-O,-g to control CXXFLAGS too
> -opt=$(filter -O%,${CFLAGS}) $(filter -g%,${CFLAGS})
> -override CXXFLAGS:=${filter-out -g%,$(filter-out -O%,${CXXFLAGS})} ${opt}
> -
> -cflags_common:=-Wall -Wstrict-aliasing -Wwrite-strings -fno-common -pipe -fbuiltin -fmessage-length=0
> -COMPILE.cc=${CXX} ${INCLUDES} ${CXXFLAGS} -fno-rtti -fno-exceptions -fno-use-cxa-atexit ${cflags_common}
> -COMPILE.c=${CC} ${INCLUDES} ${CFLAGS} ${cflags_common}
> -
> -top_srcdir:=$(call justdir,${winsup_srcdir})
> -top_builddir:=$(call justdir,${target_builddir})
> -
> -cygwin_build:=${target_builddir}/winsup/cygwin
> -newlib_build:=${target_builddir}/newlib
> -
> -VPATH:=${srcdir}
> -
> -.SUFFIXES:
> -.SUFFIXES: .c .cc .def .S .a .o .d .s .E
> -
> -%.o: %.cc
> - $(strip ${COMPILE.cc} -c -o $@ $<)
> -
> -%.o: %.c
> - $(strip ${COMPILE.c} -c -o $@ $<)
> -
> -%.E: %.cc
> - $(strip ${COMPILE.cc} -E -dD -o $@ $<)
> -
> -%.E: %.c
> - $(strip ${COMPILE.c} -E -dD -o $@ $<)
> -
> -%.o: %.S
> - $(strip ${COMPILE.S} -c -o $@ $<)
> diff --git a/winsup/autogen.sh b/winsup/autogen.sh
> index 4a60ef39f..1db91add9 100755
> --- a/winsup/autogen.sh
> +++ b/winsup/autogen.sh
> @@ -1,3 +1,4 @@
>  /usr/bin/aclocal --force
>  /usr/bin/autoconf -f
> +/usr/bin/automake -ac
>  /bin/rm -rf autom4te.cache
> diff --git a/winsup/configure.ac b/winsup/configure.ac
> index 438e629e7..9a11411ab 100644
> --- a/winsup/configure.ac
> +++ b/winsup/configure.ac
> @@ -10,8 +10,10 @@ dnl Process this file with autoconf to produce a configure script.
>  
>  AC_PREREQ([2.59])
>  AC_INIT([Cygwin],[0],[[hidden email]],[cygwin],[https://cygwin.com])
> -AC_CONFIG_SRCDIR(Makefile.in)
>  AC_CONFIG_AUX_DIR(..)
> +AC_CANONICAL_TARGET
> +AM_INIT_AUTOMAKE([dejagnu foreign no-define no-dist subdir-objects -Wall -Wno-portability -Wno-extra-portability])
> +AM_SILENT_RULES([yes])
>  
>  realdirpath() {
>      test -z "$1" && return 1
> @@ -26,13 +28,15 @@ realdirpath() {
>  winsup_srcdir="$(realdirpath $srcdir)"
>  target_builddir="$(realdirpath ..)"
>  
> -AC_PROG_INSTALL
>  AC_NO_EXECUTABLES
> -AC_CANONICAL_TARGET
>  
> +AC_PROG_INSTALL
> +AC_PROG_MKDIR_P
>  AC_PROG_CC
>  AC_PROG_CXX
>  AC_PROG_CPP
> +AM_PROG_AS
> +
>  AC_LANG(C)
>  AC_LANG(C++)
>  
> @@ -82,6 +86,8 @@ AC_SUBST(DEF_DLL_ENTRY)
>  AC_SUBST(DIN_FILE)
>  AC_SUBST(TLSOFFSETS_H)
>  
> +AM_CONDITIONAL(TARGET_X86_64, [test $target_cpu = "x86_64"])
> +
>  AC_CHECK_PROGS([DOCBOOK2XTEXI], [docbook2x-texi db2x_docbook2texi], [true])
>  
>  if test "x$with_cross_bootstrap" != "xyes"; then
> @@ -90,15 +96,24 @@ if test "x$with_cross_bootstrap" != "xyes"; then
>      AC_CHECK_PROGS(MINGW_CC, ${target_cpu}-w64-mingw32-gcc)
>      test -n "$MINGW_CC" || AC_MSG_ERROR([no acceptable MinGW gcc found in \$PATH])
>  fi
> +AM_CONDITIONAL(CROSS_BOOTSTRAP, [test "x$with_cross_bootstrap" != "xyes"])
> +
>  AC_EXEEXT
>  
> +AC_CHECK_LIB([bfd], [bfd_init], [true],
> +     AC_MSG_WARN([Not building dumper.exe since some required libraries or headers are missing]))
> +
> +AM_CONDITIONAL(BUILD_DUMPER, [test "x$ac_cv_lib_bfd_bfd_init" = "xyes"])
> +
>  AC_CONFIG_FILES([
>      Makefile
>      cygwin/Makefile
>      cygserver/Makefile
>      doc/Makefile
>      utils/Makefile
> +    utils/mingw/Makefile
>      testsuite/Makefile
> +    testsuite/cygrun/Makefile
>  ])
>  
>  AC_OUTPUT
> diff --git a/winsup/cygserver/Makefile.am b/winsup/cygserver/Makefile.am
> new file mode 100644
> index 000000000..d52f93ce0
> --- /dev/null
> +++ b/winsup/cygserver/Makefile.am
> @@ -0,0 +1,58 @@
> +# Makefile for Cygwin server
> +
> +# This file is part of Cygwin.
> +
> +# This software is a copyrighted work licensed under the terms of the
> +# Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
> +# details.
> +
> +include $(top_srcdir)/Makefile.am.common
> +
> +cygserver_flags=$(cxxflags_common) -Wimplicit-fallthrough=5 -Werror -DSYSCONFDIR="\"$(sysconfdir)\""
> +
> +noinst_LIBRARIES = libcygserver.a
> +sbin_PROGRAMS = cygserver
> +bin_SCRIPTS = cygserver-config
> +
> +cygserver_SOURCES = \
> + bsd_helper.cc \
> + bsd_log.cc \
> + bsd_mutex.cc \
> + client.cc \
> + cygserver.cc \
> + msg.cc \
> + process.cc \
> + pwdgrp.cc \
> + sem.cc \
> + setpwd.cc \
> + shm.cc \
> + sysv_msg.cc \
> + sysv_sem.cc \
> + sysv_shm.cc \
> + threaded_queue.cc \
> + transport.cc \
> + transport_pipes.cc
> +
> +cygserver_CXXFLAGS = $(cygserver_flags) -D__OUTSIDE_CYGWIN__
> +cygserver_LDADD = -lntdll
> +cygserver_LDFLAGS = -static -static-libgcc
> +
> +# Note: the objects in libcygserver are built without -D__OUTSIDE_CYGWIN__,
> +# unlike cygserver.exe
> +
> +libcygserver_a_SOURCES = \
> + $(cygserver_SOURCES)
> +
> +libcygserver_a_CXXFLAGS = $(cygserver_flags)
> +
> +cygdocdir = $(datarootdir)/doc/Cygwin
> +
> +install-data-local:
> + @$(MKDIR_P) $(DESTDIR)$(cygdocdir)
> + $(INSTALL_DATA) $(srcdir)/README $(DESTDIR)$(cygdocdir)/cygserver.README
> + @$(MKDIR_P) $(DESTDIR)$(sysconfdir)/defaults/etc
> + $(INSTALL_DATA) $(srcdir)/cygserver.conf $(DESTDIR)$(sysconfdir)/defaults/etc/cygserver.conf
> +
> +uninstall-local:
> + rm -f $(DESTDIR)$(cygdocdir)/cygserver.README
> + rm -f $(DESTDIR)$(sysconfdir)/defaults/etc/cygserver.conf
> diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am
> new file mode 100644
> index 000000000..04b071de6
> --- /dev/null
> +++ b/winsup/cygwin/Makefile.am
> @@ -0,0 +1,768 @@
> +# Makefile.am for Cygwin.
> +#
> +# This file is part of Cygwin.
> +#
> +# This software is a copyrighted work licensed under the terms of the
> +# Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
> +# details.
> +
> +# This makefile requires GNU make.
> +
> +include $(top_srcdir)/Makefile.am.common
> +
> +COMMON_CFLAGS=-Wimplicit-fallthrough=5 -Werror -fmerge-constants -ftracer
> +if TARGET_X86_64
> +COMMON_CFLAGS+=-mcmodel=small
> +endif
> +
> +AM_CFLAGS=$(cflags_common) $(COMMON_CFLAGS)
> +AM_CXXFLAGS=$(cxxflags_common) $(COMMON_CFLAGS)
> +
> +if TARGET_X86_64
> +# Needed by mcountFunc.S to choose the right code path and symbol names
> +AM_CCASFLAGS=-D_WIN64
> +endif
> +
> +target_builddir=@target_builddir@
> +newlib_build=$(target_builddir)/newlib
> +
> +#
> +# Specialize libdir and includedir to use tooldir prefixed paths (containing
> +# target_alias) as used by newlib, because we overwrite library and header files
> +# installed there by newlib.
> +#
> +
> +toollibdir=$(prefix)/$(target_alias)/lib
> +toolincludedir=$(prefix)/$(target_alias)/include
> +
> +# Parameters used in building the cygwin.dll.
> +
> +DLL_NAME=cygwin1.dll
> +TEST_DLL_NAME=cygwin0.dll
> +DIN_FILE=@DIN_FILE@
> +DEF_FILE=cygwin.def
> +TLSOFFSETS_H=@TLSOFFSETS_H@
> +LIB_NAME=libcygwin.a
> +TEST_LIB_NAME=libcygwin0.a
> +
> +#
> +# sources
> +#
> +
> +# These objects are included directly into the import library
> +LIB_FILES= \
> + lib/_cygwin_crt0_common.cc \
> + lib/atexit.c \
> + lib/cygwin_attach_dll.c \
> + lib/cygwin_crt0.c \
> + lib/dll_entry.c \
> + lib/dll_main.cc \
> + lib/dso_handle.c \
> + lib/libcmain.c \
> + lib/premain0.c \
> + lib/premain1.c \
> + lib/premain2.c \
> + lib/premain3.c \
> + lib/pseudo-reloc-dummy.c
> +
> +LIBC_FILES= \
> + libc/arc4random_stir.c \
> + libc/base64.c \
> + libc/bsdlib.cc \
> + libc/call_once.c \
> + libc/cnd.c \
> + libc/fnmatch.c \
> + libc/fts.c \
> + libc/ftw.c \
> + libc/getentropy.cc \
> + libc/getopt.c \
> + libc/inet_addr.c \
> + libc/inet_network.c \
> + libc/minires-os-if.c \
> + libc/minires.c \
> + libc/msgcat.c \
> + libc/mtx.c \
> + libc/nftw.c \
> + libc/rcmd.cc \
> + libc/rexec.cc \
> + libc/strfmon.c \
> + libc/strptime.cc \
> + libc/thrd.c \
> + libc/tss.c \
> + libc/xsique.cc
> +
> +MATH_FILES= \
> + math/acoshl.c \
> + math/acosl.c \
> + math/asinhl.c \
> + math/asinl.c \
> + math/atan2l.c \
> + math/atanhl.c \
> + math/atanl.c \
> + math/cabsl.c \
> + math/cacosl.c \
> + math/cargl.c \
> + math/casinl.c \
> + math/catanl.c \
> + math/cbrtl.c \
> + math/ccosl.c \
> + math/ceill.S \
> + math/cephes_emath.c \
> + math/cexpl.c \
> + math/cimagl.c \
> + math/clog10l.c \
> + math/clogl.c \
> + math/conjl.c \
> + math/copysignl.S \
> + math/coshl.c \
> + math/cosl.c \
> + math/cosl_internal.S \
> + math/cossin.c \
> + math/cpowl.c \
> + math/cprojl.c \
> + math/creall.c \
> + math/csinl.c \
> + math/csqrtl.c \
> + math/ctanl.c \
> + math/erfl.c \
> + math/exp10l.c \
> + math/exp2l.S \
> + math/expl.c \
> + math/expm1l.c \
> + math/fabsl.c \
> + math/fdiml.c \
> + math/finite.c \
> + math/floorl.S \
> + math/fmal.c \
> + math/fmaxl.c \
> + math/fminl.c \
> + math/fmodl.c \
> + math/frexpl.S \
> + math/ilogbl.S \
> + math/internal_logl.S \
> + math/isinf.c \
> + math/isnan.c \
> + math/ldexpl.c \
> + math/lgammal.c \
> + math/llrint.c \
> + math/llrintf.c \
> + math/llrintl.c \
> + math/llroundl.c \
> + math/log10l.S \
> + math/log1pl.S \
> + math/log2l.S \
> + math/logbl.c \
> + math/logl.c \
> + math/lrint.c \
> + math/lrintf.c \
> + math/lrintl.c \
> + math/lroundl.c \
> + math/modfl.c \
> + math/nearbyint.S \
> + math/nearbyintf.S \
> + math/nearbyintl.S \
> + math/nextafterl.c \
> + math/nexttoward.c \
> + math/nexttowardf.c \
> + math/pow10l.c \
> + math/powil.c \
> + math/powl.c \
> + math/remainder.S \
> + math/remainderf.S \
> + math/remainderl.S \
> + math/remquol.S \
> + math/rint.c \
> + math/rintf.c \
> + math/rintl.c \
> + math/roundl.c \
> + math/scalbl.S \
> + math/scalbnl.S \
> + math/sinhl.c \
> + math/sinl.c \
> + math/sinl_internal.S \
> + math/sqrtl.c \
> + math/tanhl.c \
> + math/tanl.S \
> + math/tgammal.c \
> + math/truncl.c
> +
> +REGEX_FILES = \
> + regex/regcomp.c \
> + regex/regerror.c \
> + regex/regexec.c \
> + regex/regfree.c
> +
> +TZCODE_FILES= \
> + tzcode/localtime_wrapper.c
> +
> +DLL_FILES= \
> + advapi32.cc \
> + aio.cc \
> + assert.cc \
> + autoload.cc \
> + clock.cc \
> + ctype.cc \
> + cxx.cc \
> + cygheap.cc \
> + cygthread.cc \
> + cygtls.cc \
> + cygwait.cc \
> + cygxdr.cc \
> + dcrt0.cc \
> + debug.cc \
> + devices.cc \
> + dir.cc \
> + dlfcn.cc \
> + dll_init.cc \
> + dtable.cc \
> + environ.cc \
> + errno.cc \
> + exceptions.cc \
> + exec.cc \
> + external.cc \
> + fcntl.cc \
> + fenv.cc \
> + fhandler.cc \
> + fhandler_clipboard.cc \
> + fhandler_console.cc \
> + fhandler_cygdrive.cc \
> + fhandler_dev.cc \
> + fhandler_disk_file.cc \
> + fhandler_dsp.cc \
> + fhandler_fifo.cc \
> + fhandler_floppy.cc \
> + fhandler_netdrive.cc \
> + fhandler_nodevice.cc \
> + fhandler_pipe.cc \
> + fhandler_proc.cc \
> + fhandler_process.cc \
> + fhandler_process_fd.cc \
> + fhandler_procnet.cc \
> + fhandler_procsys.cc \
> + fhandler_procsysvipc.cc \
> + fhandler_random.cc \
> + fhandler_raw.cc \
> + fhandler_registry.cc \
> + fhandler_serial.cc \
> + fhandler_signalfd.cc \
> + fhandler_socket.cc \
> + fhandler_socket_inet.cc \
> + fhandler_socket_local.cc \
> + fhandler_socket_unix.cc \
> + fhandler_tape.cc \
> + fhandler_termios.cc \
> + fhandler_timerfd.cc \
> + fhandler_tty.cc \
> + fhandler_virtual.cc \
> + fhandler_windows.cc \
> + fhandler_zero.cc \
> + flock.cc \
> + fork.cc \
> + forkable.cc \
> + glob.cc \
> + glob_pattern_p.cc \
> + globals.cc \
> + grp.cc \
> + heap.cc \
> + hookapi.cc \
> + init.cc \
> + ioctl.cc \
> + ipc.cc \
> + kernel32.cc \
> + ldap.cc \
> + libstdcxx_wrapper.cc \
> + loadavg.cc \
> + lsearch.cc \
> + malloc_wrapper.cc \
> + miscfuncs.cc \
> + mktemp.cc \
> + mmap.cc \
> + mmap_alloc.cc \
> + msg.cc \
> + mount.cc \
> + net.cc \
> + netdb.cc \
> + nfs.cc \
> + nlsfuncs.cc \
> + ntea.cc \
> + passwd.cc \
> + path.cc \
> + pinfo.cc \
> + poll.cc \
> + posix_ipc.cc \
> + posix_timer.cc \
> + pseudo-reloc.cc \
> + pthread.cc \
> + quotactl.cc \
> + random.cc \
> + registry.cc \
> + resource.cc \
> + scandir.cc \
> + sched.cc \
> + sec_acl.cc \
> + sec_auth.cc \
> + sec_helper.cc \
> + sec_posixacl.cc \
> + security.cc \
> + select.cc \
> + sem.cc \
> + setlsapwd.cc \
> + shared.cc \
> + shm.cc \
> + signal.cc \
> + sigproc.cc \
> + smallprint.cc \
> + spawn.cc \
> + strace.cc \
> + strfuncs.cc \
> + strsep.cc \
> + strsig.cc \
> + sync.cc \
> + syscalls.cc \
> + sysconf.cc \
> + syslog.cc \
> + termios.cc \
> + thread.cc \
> + timerfd.cc \
> + times.cc \
> + tls_pbuf.cc \
> + tty.cc \
> + uinfo.cc \
> + uname.cc \
> + wait.cc \
> + wincap.cc \
> + window.cc \
> + winf.cc
> +
> +MALLOC_FILES= \
> + malloc.cc
> +
> +GMON_FILES= \
> + gmon.c \
> + mcount.c \
> + profil.c \
> + mcountFunc.S
> +
> +GENERATED_FILES= \
> + sigfe.s
> +
> +liblib_a_SOURCES= \
> + $(LIB_FILES)
> +
> +libdll_a_SOURCES= \
> + $(DLL_FILES) \
> + $(REGEX_FILES) \
> + $(MALLOC_FILES) \
> + $(LIBC_FILES) \
> + $(MATH_FILES) \
> + $(TZCODE_FILES) \
> + $(GENERATED_FILES)
> +
> +#
> +# generated sources
> +#
> +
> +shared_info_magic.h: cygmagic shared_info.h
> + $(srcdir)/cygmagic $@ "$(CC) $(INCLUDES) $(CPPFLAGS) -E -x c++" $(word 2,$^) SHARED_MAGIC 'class shared_info' USER_MAGIC 'class user_info'
> +
> +child_info_magic.h: cygmagic child_info.h
> + $(srcdir)/cygmagic $@ "$(CC) $(INCLUDES) $(CPPFLAGS) -E -x c++" $(word 2,$^) CHILD_INFO_MAGIC 'class child_info'
> +
> +globals.h: mkglobals_h globals.cc
> + $^ > $@
> +
> +localtime.patched.c: tzcode/localtime.c tzcode/localtime.c.patch
> + patch -u -o localtime.patched.c \
> +    $(srcdir)/tzcode/localtime.c \
> +    $(srcdir)/tzcode/localtime.c.patch
> +
> +$(srcdir)/devices.cc: gendevices devices.in devices.h
> + $(wordlist 1,2,$^) $@
> +
> +$(srcdir)/$(TLSOFFSETS_H): gentls_offsets cygtls.h
> + $^ $@ $(target_cpu) $(CC) $(AM_CFLAGS) -c || rm $@
> +
> +BUILT_SOURCES = \
> + child_info_magic.h \
> + shared_info_magic.h \
> + globals.h \
> + localtime.patched.c
> +
> +# Every time we touch a source file, the version info has to be rebuilt
> +# to maintain a correct build date, especially in uname release output
> +dirs = $(srcdir) $(srcdir)/regex $(srcdir)/lib $(srcdir)/libc $(srcdir)/math $(srcdir)/tzcode
> +find_src_files = $(wildcard $(dir)/*.[chS]) $(wildcard $(dir)/*.cc)
> +src_files := $(foreach dir,$(dirs),$(find_src_files))
> +
> +# mkvers.sh creates version.cc in the first place, winver.o always
> +# second, so version.cc is always older than winver.o
> +version.cc: mkvers.sh include/cygwin/version.h winver.rc $(src_files)
> + @echo "Making version.cc and winver.o";\
> + export CC="$(CC)";\
> + /bin/sh $(word 1,$^) $(word 2,$^) $(word 3,$^) $(WINDRES) $(CFLAGS)
> +
> +winver.o: version.cc
> +
> +VERSION_OFILES = version.o winver.o
> +
> +#
> +# export renames for mkimport
> +#
> +
> +NEW_FUNCTIONS=$(addprefix --replace=,\
> + atexit= \
> + timezone= \
> + uname=uname_x \
> + __xdrrec_getrec= \
> + __xdrrec_setnonblock= \
> + xdr_array= \
> + xdr_bool= \
> + xdr_bytes= \
> + xdr_char= \
> + xdr_double= \
> + xdr_enum= \
> + xdr_float= \
> + xdr_free= \
> + xdr_hyper= \
> + xdr_int= \
> + xdr_int16_t= \
> + xdr_int32_t= \
> + xdr_int64_t= \
> + xdr_int8_t= \
> + xdr_long= \
> + xdr_longlong_t= \
> + xdr_netobj= \
> + xdr_opaque= \
> + xdr_pointer= \
> + xdr_reference= \
> + xdr_short= \
> + xdr_sizeof= \
> + xdr_string= \
> + xdr_u_char= \
> + xdr_u_hyper= \
> + xdr_u_int= \
> + xdr_u_int16_t= \
> + xdr_u_int32_t= \
> + xdr_u_int64_t= \
> + xdr_u_int8_t= \
> + xdr_u_long= \
> + xdr_u_longlong_t= \
> + xdr_u_short= \
> + xdr_uint16_t= \
> + xdr_uint32_t= \
> + xdr_uint64_t= \
> + xdr_uint8_t= \
> + xdr_union= \
> + xdr_vector= \
> + xdr_void= \
> + xdr_wrapstring= \
> + xdrmem_create= \
> + xdrrec_create= \
> + xdrrec_endofrecord= \
> + xdrrec_eof= \
> + xdrrec_skiprecord= \
> + xdrstdio_create= \
> +)
> +
> +if !TARGET_X86_64
> +NEW_FUNCTIONS+=$(addprefix --replace=,\
> + acl=_acl32 \
> + aclcheck=_aclcheck32 \
> + aclfrommode=_aclfrommode32 \
> + aclfrompbits=_aclfrompbits32 \
> + aclfromtext=_aclfromtext32 \
> + aclsort=_aclsort32 \
> + acltomode=_acltomode32 \
> + acltopbits=_acltopbits32 \
> + acltotext=_acltotext32 \
> + chown=_chown32 \
> + facl=_facl32 \
> + fchown=_fchown32 \
> + fcntl=_fcntl64 \
> + fdopen=_fdopen64 \
> + fgetpos=_fgetpos64 \
> + fopen=_fopen64 \
> + freopen=_freopen64 \
> + fseeko=_fseeko64 \
> + fsetpos=_fsetpos64 \
> + fstat=_fstat64 \
> + ftello=_ftello64 \
> + ftruncate=_ftruncate64 \
> + getegid=_getegid32 \
> + geteuid=_geteuid32 \
> + getgid=_getgid32 \
> + getgrent=_getgrent32 \
> + getgrgid=_getgrgid32 \
> + getgrnam=_getgrnam32 \
> + getgroups=_getgroups32 \
> + getpwuid=_getpwuid32 \
> + getpwuid_r=_getpwuid_r32 \
> + getuid=_getuid32 \
> + initgroups=_initgroups32 \
> + lchown=_lchown32 \
> + lseek=_lseek64 \
> + lstat=_lstat64 \
> + mknod=_mknod32 \
> + mmap=_mmap64 \
> + open=_open64 \
> + setegid=_setegid32 \
> + seteuid=_seteuid32 \
> + setgid=_setgid32 \
> + setgroups=_setgroups32 \
> + setregid=_setregid32 \
> + setreuid=_setreuid32 \
> + setuid=_setuid32 \
> + stat=_stat64 \
> + tmpfile=_tmpfile64 \
> + truncate=_truncate64 \
> +)
> +endif
> +
> +#
> +# per-file compilation flags
> +#
> +# (these come after, and thus override, the user-supplied CXXFLAGS, as they need
> +# to be able to fiddle with the optimization level)
> +#
> +
> +CXXFLAGS += $($(*F)_CFLAGS)
> +
> +localtime_wrapper_CFLAGS=-I$(srcdir)/tzcode -fwrapv
> +
> +# required since gcc 9.x
> +exec_CFLAGS=-fno-builtin-execve
> +
> +fhandler_proc_CFLAGS=-DUSERNAME="\"$(USER)\"" -DHOSTNAME="\"$(HOSTNAME)\"" \
> +     -DGCC_VERSION="\"`$(CC) -v 2>&1 | tail -n 1`\""
> +
> +if !TARGET_X86_64
> +# on x86, exceptions.cc must be compiled with a frame-pointer as it uses RtlCaptureContext()
> +exceptions_CFLAGS=-fno-omit-frame-pointer
> +endif
> +
> +dtable_CFLAGS=-fcheck-new
> +
> +# If an optimization level is explicitly set in CXXFLAGS, set -O3 for these files
> +# XXX: this seems to assume it's not -O0?
> +#
> +# (the indentation here prevents automake trying to process this as an automake
> +# conditional)
> + ifneq "${filter -O%,$(CXXFLAGS)}" ""
> +  malloc_CFLAGS=-O3
> +  sync_CFLAGS=-O3
> + endif
> +
> +#
> +# libraries and installed objects
> +#
> +# (Don't ever try to use automake's shared library support via libtool to build
> +# Cygwin. Instead we have explicit rules to build it.)
> +#
> +
> +SUBLIBS = \
> + libpthread.a \
> + libutil.a \
> + libm.a \
> + libc.a \
> + libdl.a \
> + libresolv.a \
> + librt.a \
> + libacl.a \
> + libssp.a
> +
> +EXTRALIBS = \
> + libautomode.a \
> + libbinmode.a \
> + libtextmode.a \
> + libtextreadmode.a
> +
> +noinst_LIBRARIES = \
> + libdll.a \
> + liblib.a
> +
> +toollib_LIBRARIES = \
> + libgmon.a \
> + $(EXTRALIBS)
> +
> +CYGWIN_START=crt0.o
> +GMON_START=gcrt0.o
> +INSTOBJS=automode.o binmode.o textmode.o textreadmode.o
> +
> +toollib_DATA = \
> + $(CYGWIN_START) \
> + $(GMON_START) \
> + $(INSTOBJS) \
> + $(LIB_NAME) \
> + $(SUBLIBS)
> +
> +libgmon_a_SOURCES = $(GMON_FILES)
> +libgmon_a_LIBADD =
> +
> +libautomode_a_SOURCES =
> +libautomode_a_LIBADD = automode.o
> +
> +libbinmode_a_SOURCES =
> +libbinmode_a_LIBADD = binmode.o
> +
> +libtextmode_a_SOURCES =
> +libtextmode_a_LIBADD = textmode.o
> +
> +libtextreadmode_a_SOURCES =
> +libtextreadmode_a_LIBADD = textreadmode.o
> +
> +# cygserver library
> +cygserver_blddir = ${target_builddir}/winsup/cygserver
> +LIBSERVER = $(cygserver_blddir)/libcygserver.a
> +
> +$(LIBSERVER):
> + $(MAKE) -C $(cygserver_blddir) libcygserver.a
> +
> +# We build as cygwin0.dll and rename at install time to overcome native
> +# rebuilding issues (we don't want the build tools to see a partially built
> +# cygwin.dll and attempt to use it instead of the old one).
> +
> +# linker script
> +LDSCRIPT=cygwin.sc
> +$(LDSCRIPT): $(LDSCRIPT).in
> + $(CC) -E - -P < $^ -o $@
> +
> +# cygwin dll
> +$(TEST_DLL_NAME): $(LDSCRIPT) dllfixdbg libdll.a $(VERSION_OFILES) $(LIBSERVER)
> + $(CXX) $(CXXFLAGS) \
> + -mno-use-libstdc-wrappers \
> + -Wl,--gc-sections -nostdlib -Wl,-T$(LDSCRIPT) -static \
> + -Wl,--heap=0 -Wl,--out-implib,cygdll.a -shared -o $@ \
> + -e @DLL_ENTRY@ $(DEF_FILE) \
> + -Wl,-whole-archive libdll.a -Wl,-no-whole-archive \
> + $(VERSION_OFILES) \
> + $(LIBSERVER) \
> + $(newlib_build)/libm/libm.a \
> + $(newlib_build)/libc/libc.a \
> + -lgcc -lkernel32 -lntdll -Wl,-Map,cygwin.map
> + $(srcdir)/dllfixdbg $(OBJDUMP) $(OBJCOPY) $@ cygwin1.dbg
> + @ln -f $@ new-cygwin1.dll
> +
> +# cygwin import library
> +toolopts=--cpu=@target_cpu@ --ar=@AR@ --as=@AS@ --nm=@NM@ --objcopy=@OBJCOPY@
> +
> +$(DEF_FILE): gendef $(srcdir)/$(TLSOFFSETS_H) $(DIN_FILE) common.din
> + $(srcdir)/gendef --cpu=@target_cpu@ --output-def=$(DEF_FILE) --tlsoffsets=$(srcdir)/$(TLSOFFSETS_H) $(srcdir)/$(DIN_FILE) $(srcdir)/common.din
> +
> +sigfe.s: $(DEF_FILE)
> + @[ -s $@ ] || \
> + { rm -f $(DEF_FILE); $(MAKE) -s -j1 $(DEF_FILE); }; \
> + [ -s $@ ] && touch $@
> +
> +LIBCOS=$(addsuffix .o,$(basename $(LIB_FILES)))
> +$(LIB_NAME): $(DEF_FILE) $(LIBCOS) | $(TEST_DLL_NAME)
> + $(srcdir)/mkimport $(toolopts) $(NEW_FUNCTIONS) $@ cygdll.a $(wordlist 2,99,$^)
> +
> +# cygwin import library used by testsuite
> +$(TEST_LIB_NAME): $(LIB_NAME)
> + perl -p -e 'BEGIN{binmode(STDIN); binmode(STDOUT);}; s/cygwin1/cygwin0/g' < $? > $@
> +
> +# sublibs
> +# import libraries for some subset of symbols indicated by given objects
> +speclib=\
> + $(srcdir)/speclib $(toolopts) \
> + --exclude='cygwin' \
> + --exclude='(?i:dll)' \
> + --exclude='reloc' \
> + --exclude='^main$$' \
> + --exclude='^_main$$'
> +
> +libc.a: $(LIB_NAME) libm.a libpthread.a libutil.a
> + $(speclib) $^ -v $(@F)
> +
> +libm.a: $(LIB_NAME) $(newlib_build)/libm/libm.a $(addsuffix .o,$(basename $(MATH_FILES)))
> + $(speclib) $^ $(@F)
> +
> +libpthread.a: $(LIB_NAME) pthread.o thread.o libc/call_once.o libc/cnd.o \
> +      libc/mtx.o libc/thrd.o libc/tss.o
> + $(speclib) $^ $(@F)
> +
> +libutil.a: $(LIB_NAME) libc/bsdlib.o
> + $(speclib) $^ $(@F)
> +
> +libdl.a: $(LIB_NAME) dlfcn.o
> + $(speclib) $^ $(@F)
> +
> +libresolv.a: $(LIB_NAME) libc/minires.o
> + $(speclib) $^ $(@F)
> +
> +librt.a: $(LIB_NAME) posix_ipc.o
> + $(speclib) $^ $(@F)
> +
> +libacl.a: $(LIB_NAME) sec_posixacl.o
> + $(speclib) $^ $(@F)
> +
> +libssp.a: $(LIB_NAME) $(newlib_build)/libc/ssp/lib.a
> + $(speclib) $^ $(@F)
> +
> +#
> +# all
> +#
> +
> +all-local: $(LIB_NAME) $(TEST_LIB_NAME) $(SUBLIBS)
> +
> +#
> +# clean
> +#
> +
> +clean-local:
> + -rm -f $(BUILT_SOURCES)
> + -rm -f $(DEF_FILE) sigfe.s
> + -rm -f cygwin.sc cygdll.a cygwin.map $(TEST_DLL_NAME) cygwin1.dbg new-cygwin1.dll
> + -rm -f $(LIB_NAME) $(TEST_LIB_NAME) $(SUBLIBS)
> + -rm -f version.cc
> +
> +maintainer-clean-local:
> + -rm -f $(srcdir)/$(TLSOFFSETS_H) $(srcdir)/devices.cc
> +
> +#
> +# install
> +#
> +
> +man_MANS = regex/regex.3 regex/regex.7
> +
> +install-exec-hook: install-libs
> +install-data-local: install-headers install-ldif
> +
> +install-libs:
> + @$(MKDIR_P) $(DESTDIR)$(bindir)
> + $(INSTALL_PROGRAM) $(TEST_DLL_NAME) $(DESTDIR)$(bindir)/$(DLL_NAME)
> + (cd $(DESTDIR)$(toollibdir) && ln -sf $(LIB_NAME) libg.a)
> +
> +install-headers:
> + cd $(srcdir)/include; \
> + for sub in `find . -type d -print | sort`; do \
> +    $(MKDIR_P) $(DESTDIR)$(toolincludedir)/$$sub; \
> +    for i in $$sub/*.h ; do \
> +      $(INSTALL_DATA) $$i $(DESTDIR)$(toolincludedir)/$$sub/`basename $$i` ; \
> +    done ; \
> + done ;
> +
> +install-ldif:
> + @$(MKDIR_P) $(DESTDIR)$(datarootdir)/cygwin
> + $(INSTALL_DATA) $(srcdir)/cygwin.ldif $(DESTDIR)$(datarootdir)/cygwin
> +
> +#
> +# uninstall
> +#
> +
> +uninstall-hook: uninstall-headers uninstall-ldif uninstall-libs
> +
> +uninstall-libs:
> + rm -f $(DESTDIR)$(bindir)/cygwin1.dll
> + rm -f $(DESTDIR)$(toollibdir)/libg.a
> +
> +uninstall-headers:
> + cd $(srcdir)/include; \
> + for sub in `find . -type d -print | sort`; do \
> +    for i in $$sub/*.h ; do \
> +      rm -f $(DESTDIR)$(toolincludedir)/$$sub/`basename $$i` ; \
> +    done ; \
> + done ;
> +
> +uninstall-ldif:
> + rm -f $(DESTDIR)$(datarootdir)/cygwin/cygwin.ldif
> diff --git a/winsup/cygwin/config.h.in b/winsup/cygwin/config.h.in
> index 5ddff249f..1c4940951 100644
> --- a/winsup/cygwin/config.h.in
> +++ b/winsup/cygwin/config.h.in
> @@ -1,4 +1,4 @@
> -/* config.h.in.  Generated from configure.ac by autoheader.  */
> +/* cygwin/config.h.in.  Generated from configure.ac by autoheader.  */
>  
>  /* Define if DEBUGGING support is requested. */
>  #undef DEBUGGING
> diff --git a/winsup/doc/Makefile.am b/winsup/doc/Makefile.am
> new file mode 100644
> index 000000000..72b803c49
> --- /dev/null
> +++ b/winsup/doc/Makefile.am
> @@ -0,0 +1,155 @@
> +# -*- Makefile -*- for winsup/doc
> +#
> +# This file is part of Cygwin.
> +#
> +# This software is a copyrighted work licensed under the terms of the
> +# Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
> +# details.
> +
> +man1_MANS =
> +man3_MANS =
> +
> +doc_DATA = \
> + cygwin-ug-net/cygwin-ug-net.pdf \
> + cygwin-api/cygwin-api.pdf
> +
> +htmldir = $(datarootdir)/doc
> +
> +XMLTO=xmlto --skip-validation --with-dblatex
> +DOCBOOK2XTEXI=@DOCBOOK2XTEXI@ --xinclude --info --utf8trans-map=charmap
> +
> +-include Makefile.dep
> +
> +.PHONY: install-extra-man install-etc
> +
> +all-local: Makefile.dep \
> + cygwin-api/cygwin-api.html \
> + cygwin-ug-net/cygwin-ug-net.html \
> + faq/faq.html faq/faq.body \
> + cygwin-ug-net/cygwin-ug-net-nochunks.html.gz \
> + api2man.stamp intro2man.stamp utils2man.stamp \
> + cygwin-api.info cygwin-ug-net.info
> +
> +clean-local:
> + rm -f Makefile.dep
> + rm -f *.html *.html.gz
> + rm -Rf cygwin-api cygwin-ug-net faq
> + rm -f api2man.stamp intro2man.stamp utils2man.stamp
> + rm -f *.1
> + rm -f *.3
> + rm -f *.info* charmap
> +
> +install-html-local: cygwin-ug-net/cygwin-ug-net.html cygwin-api/cygwin-api.html
> + @$(MKDIR_P) $(DESTDIR)$(htmldir)/cygwin-ug-net
> + $(INSTALL_DATA) cygwin-ug-net/*.html $(DESTDIR)$(htmldir)/cygwin-ug-net
> + (cd $(DESTDIR)$(htmldir)/cygwin-ug-net && ln -f cygwin-ug-net.html index.html)
> + $(INSTALL_DATA) $(srcdir)/docbook.css $(DESTDIR)$(htmldir)/cygwin-ug-net
> + @$(MKDIR_P) $(DESTDIR)$(htmldir)/cygwin-api
> + $(INSTALL_DATA) cygwin-api/*.html $(DESTDIR)$(htmldir)/cygwin-api
> + (cd $(DESTDIR)$(htmldir)/cygwin-api && ln -f cygwin-api.html index.html)
> + $(INSTALL_DATA) $(srcdir)/docbook.css $(DESTDIR)$(htmldir)/cygwin-api
> +
> +install-extra-man: api2man.stamp intro2man.stamp utils2man.stamp
> + @$(MKDIR_P) $(DESTDIR)$(man1dir)
> + $(INSTALL_DATA) *.1 $(DESTDIR)$(man1dir)
> + @$(MKDIR_P) $(DESTDIR)$(man3dir)
> + $(INSTALL_DATA) *.3 $(DESTDIR)$(man3dir)
> +
> +install-info-local: cygwin-ug-net.info cygwin-api.info
> + @$(MKDIR_P) $(DESTDIR)$(infodir)
> + $(INSTALL_DATA) *.info* $(DESTDIR)$(infodir)
> +
> +install-etc:
> + @$(MKDIR_P) $(DESTDIR)$(sysconfdir)/postinstall
> + $(INSTALL_SCRIPT) $(srcdir)/etc.postinstall.cygwin-doc.sh $(DESTDIR)$(sysconfdir)/postinstall/cygwin-doc.sh
> + @$(MKDIR_P) $(DESTDIR)$(sysconfdir)/preremove
> + $(INSTALL_SCRIPT) $(srcdir)/etc.preremove.cygwin-doc.sh $(DESTDIR)$(sysconfdir)/preremove/cygwin-doc.sh
> +
> +install-data-hook: install-extra-man install-html-local install-info-local install-etc
> +
> +uninstall-extra-man:
> + for i in *.1 ; do \
> +    rm -f $(DESTDIR)$(man1dir)/$$i ; \
> + done
> + for i in *.3 ; do \
> +    rm -f $(DESTDIR)$(man3dir)/$$i ; \
> + done
> +
> +uninstall-html:
> + for i in cygwin-ug-net/*.html ; do \
> +    rm -f $(DESTDIR)$(htmldir)/$$i ; \
> + done ;
> + rm -f $(DESTDIR)$(htmldir)/cygwin-ug-net/index.html
> + rm -f $(DESTDIR)$(htmldir)/cygwin-ug-net/docbook.css
> + for i in cygwin-api/*.html ; do \
> +    rm -f $(DESTDIR)$(htmldir)/$$i ; \
> + done ;
> + rm -f $(DESTDIR)$(htmldir)/cygwin-api/index.html
> + rm -f $(DESTDIR)$(htmldir)/cygwin-api/docbook.css
> +
> +uninstall-info:
> + for i in *.info* ; do \
> +    rm -f $(DESTDIR)$(infodir)/$$i ; \
> + done ;
> +
> +uninstall-etc:
> + rm -f $(DESTDIR)$(sysconfdir)/postinstall/cygwin-doc.sh
> + rm -f $(DESTDIR)$(sysconfdir)/preremove/cygwin-doc.sh
> +
> +uninstall-hook: uninstall-extra-man uninstall-html uninstall-info uninstall-etc
> +
> +# nochunks ug html is not installed, but will be deployed to website
> +cygwin-ug-net/cygwin-ug-net-nochunks.html.gz: $(cygwin-ug-net_SOURCES) html.xsl
> + $(XMLTO) html-nochunks -m $(srcdir)/html.xsl $<
> + @$(MKDIR_P) cygwin-ug-net
> + cp cygwin-ug-net.html cygwin-ug-net/cygwin-ug-net-nochunks.html
> + rm -f cygwin-ug-net/cygwin-ug-net-nochunks.html.gz
> + gzip cygwin-ug-net/cygwin-ug-net-nochunks.html
> +
> +cygwin-ug-net/cygwin-ug-net.html: $(cygwin-ug-net_SOURCES) html.xsl
> + $(XMLTO) html -o cygwin-ug-net/ -m $(srcdir)/html.xsl $<
> +
> +cygwin-ug-net/cygwin-ug-net.pdf: $(cygwin-ug-net_SOURCES) fo.xsl
> + $(XMLTO) pdf -o cygwin-ug-net/ -m $(srcdir)/fo.xsl $<
> +
> +utils2man.stamp: $(cygwin-ug-net_SOURCES) man.xsl
> + $(XMLTO) man -m $(srcdir)/man.xsl $<
> + @touch $@
> +
> +cygwin-ug-net.info: $(cygwin-ug-net_SOURCES) charmap
> + $(DOCBOOK2XTEXI) $(srcdir)/cygwin-ug-net.xml --string-param output-file=cygwin-ug-net
> +
> +cygwin-api/cygwin-api.html: $(cygwin-api_SOURCES) html.xsl
> + $(XMLTO) html -o cygwin-api/ -m $(srcdir)/html.xsl $<
> +
> +cygwin-api/cygwin-api.pdf: $(cygwin-api_SOURCES) fo.xsl
> + $(XMLTO) pdf -o cygwin-api/ -m $(srcdir)/fo.xsl $<
> +
> +api2man.stamp: $(cygwin-api_SOURCES) man.xsl
> + $(XMLTO) man -m $(srcdir)/man.xsl $<
> + @touch $@
> +
> +cygwin-api.info: $(cygwin-api_SOURCES) charmap
> + $(DOCBOOK2XTEXI) $(srcdir)/cygwin-api.xml --string-param output-file=cygwin-api
> +
> +# this generates a custom charmap for docbook2x-texi which has a mapping for &reg;
> +charmap:
> + cp /usr/share/docbook2X/charmaps/texi.charmap charmap
> + echo "ae (R)" >>charmap
> +
> +intro2man.stamp: intro.xml man.xsl
> + $(XMLTO) man -m $(srcdir)/man.xsl $<
> + @echo ".so intro.1" >cygwin.1
> + @touch $@
> +
> +faq/faq.html: $(faq_SOURCES) html.xsl
> + $(XMLTO) html -o faq -m $(srcdir)/html.xsl $(srcdir)/faq.xml
> + sed -i 's;<a name="id[mp][0-9]*"></a>;;g' faq/faq.html
> +
> +# faq body is not installed, but is intended to be deployed to website, where it
> +# can be SSI included in a framing page
> +faq/faq.body: faq/faq.html
> + $(srcdir)/bodysnatcher.pl $<
> +
> +Makefile.dep: cygwin-ug-net.xml cygwin-api.xml faq.xml intro.xml
> + cd $(srcdir) && ./xidepend $^ > "$(CURDIR)/$@"
> diff --git a/winsup/testsuite/Makefile.am b/winsup/testsuite/Makefile.am
> new file mode 100644
> index 000000000..4b8c7dbb7
> --- /dev/null
> +++ b/winsup/testsuite/Makefile.am
> @@ -0,0 +1,64 @@
> +# Makefile.am for Cygwin's testsuite.
> +#
> +# This file is part of Cygwin.
> +#
> +# This software is a copyrighted work licensed under the terms of the
> +# Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
> +# details.
> +
> +# This makefile requires GNU make.
> +
> +noinst_LIBRARIES = libltp.a
> +
> +libltp_a_CPPFLAGS=-I$(srcdir)/libltp/include
> +
> +libltp_a_SOURCES = \
> + libltp/lib/dataascii.c \
> + libltp/lib/databin.c \
> + libltp/lib/datapid.c \
> + libltp/lib/forker.c \
> + libltp/lib/get_high_address.c \
> + libltp/lib/libtestsuite.c \
> + libltp/lib/open_flags.c \
> + libltp/lib/parse_opts.c \
> + libltp/lib/pattern.c \
> + libltp/lib/rmobj.c \
> + libltp/lib/search_path.c \
> + libltp/lib/str_to_bytes.c \
> + libltp/lib/string_to_tokens.c \
> + libltp/lib/tst_res.c \
> + libltp/lib/tst_sig.c \
> + libltp/lib/tst_tmpdir.c \
> + libltp/lib/write_log.c
> +
> +DEJATOOL = winsup
> +
> +# Add '-v' to RUNTESTFLAGS if V=1
> +RUNTESTFLAGS_1 = -v
> +RUNTESTFLAGS = $(RUNTESTFLAGS_$(V))
> +
> +# a temporary directory, to be used for files created by tests
> +tmpdir = $(abspath $(objdir)/testsuite/tmp/)
> +# the same temporary directory, as an absolute, /cygdrive path (so it can be
> +# understood by the test DLL, which will have a different mount table)
> +testdll_tmpdir = $(shell cygpath -ma $(tmpdir) | sed -e 's#^\([A-Z]\):#/cygdrive/\L\1#')
> +
> +site-extra.exp: ../config.status Makefile
> + @rm -f ./tmp0
> + @echo "set runtime_root \"`pwd`/../cygwin\"" >> ./tmp0
> + @echo "set CC \"$(CC)\"" >> ./tmp0
> + @echo "set CFLAGS \"\"" >> ./tmp0
> + @echo "set MINGW_CXX \"$(MINGW_CXX)\"" >> ./tmp0
> + @echo "set tmpdir $(tmpdir)" >> ./tmp0
> + @echo "set testdll_tmpdir $(testdll_tmpdir)" >> ./tmp0
> + @echo "set ltp_includes \"$(srcdir)/libltp/include\"" >> ./tmp0
> + @echo "set ltp_libs \"`pwd`/libltp.a\"" >> ./tmp0
> + @echo "set cygrun \"`pwd`/cygrun/cygrun\"" >> ./tmp0
> + @mv ./tmp0 site-extra.exp
> +
> +EXTRA_DEJAGNU_SITE_CONFIG = site-extra.exp
> +
> +clean-local:
> + rm -f *.log *.exe *.exp *.bak *.stackdump winsup.sum
> +
> +SUBDIRS = cygrun
> diff --git a/winsup/testsuite/config/default.exp b/winsup/testsuite/config/default.exp
> index 8033ea627..7ef16ee6a 100644
> --- a/winsup/testsuite/config/default.exp
> +++ b/winsup/testsuite/config/default.exp
> @@ -1,7 +1,7 @@
>  proc winsup_version {} {
>      global env
> -    global rootme
> -    clone_output "\n[exec grep -a ^%%% $rootme/../cygwin/cygwin0.dll]\n"
> +    global runtime_root
> +    clone_output "\n[exec grep -a ^%%% $runtime_root/cygwin0.dll]\n"
>      if { [info exists env(CYGWIN)] } {
>          clone_output "CYGWIN=$env(CYGWIN)\n"
>      } else {
> diff --git a/winsup/testsuite/cygrun/Makefile.am b/winsup/testsuite/cygrun/Makefile.am
> new file mode 100644
> index 000000000..eb3b41224
> --- /dev/null
> +++ b/winsup/testsuite/cygrun/Makefile.am
> @@ -0,0 +1,21 @@
> +# Makefile.am for Cygwin the testsuite wrapper cygrun.
> +#
> +# This file is part of Cygwin.
> +#
> +# This software is a copyrighted work licensed under the terms of the
> +# Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
> +# details.
> +
> +# This makefile requires GNU make.
> +
> +# This is built with the MinGW compiler, so is in a separate Makefile here
> +# because it's tricky with Automake to use different compilers for the same
> +# language in the same Makefile.
> +
> +override CC = @MINGW_CC@
> +INCLUDES =
> +
> +noinst_PROGRAMS = cygrun
> +
> +cygrun_SOURCES = \
> + ../cygrun.c
> diff --git a/winsup/testsuite/winsup.api/winsup.exp b/winsup/testsuite/winsup.api/winsup.exp
> index 4978136a1..584aa5755 100644
> --- a/winsup/testsuite/winsup.api/winsup.exp
> +++ b/winsup/testsuite/winsup.api/winsup.exp
> @@ -9,13 +9,15 @@ if { ! [isnative] } {
>  set rv ""
>  
>  set ltp_includes "-I$ltp_includes"
> -set ltp_libs "$rootme/libltp.a"
> +set ltp_libs "$ltp_libs"
>  
>  set add_includes $ltp_includes
>  set add_libs $ltp_libs
>  
>  set test_filter ""
>  
> +set env(PATH) "$runtime_root:$env(PATH)"
> +
>  if { [info exists env(CYGWIN_TESTSUITE_TESTS)] } {
>      set test_filter "$env(CYGWIN_TESTSUITE_TESTS)"
>  }
> @@ -69,7 +71,7 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c $srcdir/$subdir/*/*.{cc
>         set redirect_output /dev/null
>      }
>      file mkdir $tmpdir/$base
> -    ws_spawn "$rootme/cygrun ./$base.exe $testdll_tmpdir/$base > $redirect_output"
> +    ws_spawn "$cygrun ./$base.exe $testdll_tmpdir/$base > $redirect_output"
>      file delete -force $tmpdir/$base
>      if { $rv } {
>   fail "$testcase (execute)"
> diff --git a/winsup/utils/Makefile.am b/winsup/utils/Makefile.am
> new file mode 100644
> index 000000000..9e5fc8cc0
> --- /dev/null
> +++ b/winsup/utils/Makefile.am
> @@ -0,0 +1,81 @@
> +# Makefile for Cygwin utilities
> +
> +# This file is part of Cygwin.
> +
> +# This software is a copyrighted work licensed under the terms of the
> +# Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
> +# details.
> +
> +include $(top_srcdir)/Makefile.am.common
> +
> +CFLAGS_COMMON=-Wimplicit-fallthrough=4 -Werror
> +AM_CFLAGS=$(cflags_common) $(CFLAGS_COMMON)
> +AM_CXXFLAGS=$(cxxflags_common) $(CFLAGS_COMMON)
> +
> +bin_PROGRAMS = \
> + chattr \
> + cygpath \
> + gencat \
> + getconf \
> + getfacl \
> + kill \
> + ldd \
> + locale \
> + lsattr \
> + minidumper \
> + mkgroup \
> + mkpasswd \
> + mount \
> + passwd \
> + pldd \
> + ps \
> + regtool \
> + setfacl \
> + setmetamode \
> + ssp \
> + tzset \
> + umount
> +
> +# dumper is only built if libbfd.a available
> +if BUILD_DUMPER
> +bin_PROGRAMS += dumper
> +endif
> +
> +# If prog_SOURCES is not specified, automake defaults to the single file prog.c
> +cygpath_SOURCES = cygpath.cc
> +dumper_SOURCES = dumper.cc module_info.cc
> +kill_SOURCES = kill.cc
> +ldd_SOURCES = ldd.cc
> +locale_SOURCES = locale.cc
> +minidumper_SOURCES = minidumper.cc
> +mount_SOURCES = mount.cc path.cc
> +ps_SOURCES = ps.cc
> +regtool_SOURCES = regtool.cc
> +umount_SOURCES = umount.cc
> +
> +# rules to create/update tzmap.h from an online resource
> +.PHONY: tzmap
> +tzmap:
> + $(srcdir)/tzmap-from-unicode.org > $(srcdir)/$@.h
> +
> +tzmap.h:
> + $(srcdir)/tzmap-from-unicode.org > $(srcdir)/$@
> +
> +BUILT_SOURCES = tzmap.h
> +
> +AM_LDFLAGS = -static -Wl,--enable-auto-import
> +LDADD = -lnetapi32
> +
> +cygpath_CXXFLAGS = -fno-threadsafe-statics $(AM_CXXFLAGS)
> +cygpath_LDADD = $(LDADD) -luserenv -lntdll
> +dumper_CXXFLAGS = -I$(top_srcdir)/../include $(AM_CXXFLAGS)
> +dumper_LDADD = $(LDADD) -lpsapi -lbfd -lintl -liconv -liberty -lz -lntdll
> +ldd_LDADD = $(LDADD) -lpsapi -lntdll
> +mount_CXXFLAGS = -DFSTAB_ONLY $(AM_CXXFLAGS)
> +minidumper_LDADD = $(LDADD) -ldbghelp
> +pldd_LDADD = $(LDADD) -lpsapi
> +ps_LDADD = $(LDADD) -lpsapi -lntdll
> +
> +if CROSS_BOOTSTRAP
> +SUBDIRS = mingw
> +endif
> diff --git a/winsup/utils/mingw/Makefile.am b/winsup/utils/mingw/Makefile.am
> new file mode 100644
> index 000000000..dca7f09dc
> --- /dev/null
> +++ b/winsup/utils/mingw/Makefile.am
> @@ -0,0 +1,50 @@
> +# Makefile for Cygwin utilities
> +
> +# This file is part of Cygwin.
> +
> +# This software is a copyrighted work licensed under the terms of the
> +# Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
> +# details.
> +
> +# We put utilities built with a MinGW compiler in a separate Makefile here
> +# because it's tricky with Automake to use different compilers for the same
> +# language in the same Makefile.
> +
> +override CXX = @MINGW_CXX@
> +INCLUDES =
> +
> +include $(top_srcdir)/Makefile.am.common
> +
> +CFLAGS_COMMON=-Wimplicit-fallthrough=4 -Werror
> +AM_CXXFLAGS=-fno-exceptions -fno-rtti -fno-use-cxa-atexit $(flags_common) $(CFLAGS_COMMON)
> +
> +bin_PROGRAMS = \
> + cygcheck \
> + cygwin-console-helper \
> + ldh \
> + strace
> +
> +cygcheck_SOURCES = \
> + ../bloda.cc \
> + ../cygcheck.cc \
> + ../dump_setup.cc \
> + ../path.cc
> +cygcheck_LDADD = -lz -lwininet -lpsapi -lntdll
> +
> +cygwin_console_helper_SOURCES = ../cygwin-console-helper.cc
> +
> +ldh_SOURCES = ../ldh.cc
> +
> +strace_SOURCES = \
> + ../path.cc \
> + ../strace.cc
> +strace_LDADD = -lntdll
> +
> +noinst_PROGRAMS = path-testsuite
> +
> +path_testsuite_SOURCES = \
> + ../path.cc \
> + ../testsuite.cc
> +path_testsuite_CXXFLAGS = -DTESTSUITE -Wno-error=write-strings
> +
> +TESTS = path-testsuite
> --
> 2.29.2