On Fri, 2012-10-19 at 11:33 -0500, Yaakov (Cygwin/X) wrote: > I'll include those changes and post a new patch then.
Revised patches for toplevel, winsup, winsup/cygwin, winsup/lsaauth, and winsup/utils attached. Tested on Cygwin and F17 with mingw32-headers from rawhide. Yaakov
2012-10-21 Yaakov Selkowitz <yselkowitz@...> * Makefile.in (DLL_IMPORTS): Use system import libraries for kernel32 and ntdll instead of from in-tree w32api. (cygwin0.dll): Remove rule dependency on DLL_IMPORTS, as they are no longer built in-tree. Index: Makefile.in =================================================================== RCS file: /cvs/src/src/winsup/cygwin/Makefile.in,v retrieving revision 1.257 diff -u -p -r1.257 Makefile.in --- Makefile.in 1 Aug 2012 08:46:49 -0000 1.257 +++ Makefile.in 21 Oct 2012 20:39:05 -0000 @@ -130,7 +130,7 @@ EXTRA_OFILES:= MALLOC_OFILES:=@MALLOC_OFILES@ -DLL_IMPORTS:=$(w32api_lib)/libkernel32.a $(w32api_lib)/libntdll.a +DLL_IMPORTS:=`$(CC) -print-file-name=w32api/libkernel32.a` `$(CC) -print-file-name=w32api/libntdll.a` MT_SAFE_OBJECTS:= # @@ -395,7 +395,7 @@ maintainer-clean realclean: clean # Rule to build cygwin.dll -$(TEST_DLL_NAME): $(LDSCRIPT) dllfixdbg $(DLL_OFILES) $(DLL_IMPORTS) $(LIBSERVER) $(LIBC) $(LIBM) $(API_VER) Makefile winver_stamp +$(TEST_DLL_NAME): $(LDSCRIPT) dllfixdbg $(DLL_OFILES) $(LIBSERVER) $(LIBC) $(LIBM) $(API_VER) Makefile winver_stamp $(CXX) $(CXXFLAGS) -Wl,--gc-sections $(nostdlib) -Wl,-T$(firstword $^) -static \ -Wl,--heap=0 -Wl,--out-implib,cygdll.a -shared -o $@ \ -e $(DLL_ENTRY) $(DEF_FILE) $(DLL_OFILES) version.o winver.o \
2012-10-21 Kai Tietz <ktietz70@...> Yaakov Selkowitz <yselkowitz@...> * configure.in: Check for MINGW32_CC and MINGW64_CC. * configure: Regenerated. * Makefile.in: Use MINGW32_CC and MINGW64_CC to build 32-bit and 64-bit DLLs. Remove references to mingw and w32api directories. * cyglsa64.dll: Remove from version control. * make-64bit-version-with-mingw-w64.sh: Remove. Index: configure.in =================================================================== RCS file: /cvs/src/src/winsup/lsaauth/configure.in,v retrieving revision 1.2 diff -u -p -r1.2 configure.in --- configure.in 12 Oct 2008 23:53:26 -0000 1.2 +++ configure.in 21 Oct 2012 21:31:09 -0000 @@ -24,21 +24,13 @@ AC_CANONICAL_SYSTEM LIB_AC_PROG_CC -NO_CYGWIN="$(cd ${srcdir}/../utils; pwd)/mingw" +AC_CHECK_PROGS(MINGW32_CC, i686-w64-mingw32-gcc) +AC_CHECK_PROGS(MINGW64_CC, x86_64-w64-mingw32-gcc) -AC_SUBST(NO_CYGWIN) -AC_ARG_PROGRAM +test -z "$MINGW32_CC" && AC_MSG_ERROR([no acceptable mingw32 cc found in \$PATH]) +test -z "$MINGW64_CC" && AC_MSG_ERROR([no acceptable mingw64 cc found in \$PATH]) -if test "x$cross_compiling" = "xyes"; then - if test "x$program_transform_name" = "xs,x,x,"; then - program_transform_name="" - fi - if test "x$program_transform_name" = "x"; then - program_transform_name="s,^,$host-," - else - program_transform_name="$program_transform_name -e s,^,$host-," - fi -fi +AC_ARG_PROGRAM AC_PROG_INSTALL Index: Makefile.in =================================================================== RCS file: /cvs/src/src/winsup/lsaauth/Makefile.in,v retrieving revision 1.6 diff -u -p -r1.6 Makefile.in --- Makefile.in 29 May 2012 12:46:01 -0000 1.6 +++ Makefile.in 21 Oct 2012 21:31:09 -0000 @@ -29,17 +29,16 @@ INSTALL_DATA := @INSTALL_DATA@ CC := @CC@ CC_FOR_TARGET := $(CC) +MINGW32_CC := @MINGW32_CC@ +MINGW64_CC := @MINGW64_CC@ + CFLAGS := @CFLAGS@ include $(srcdir)/../Makefile.common -WIN32_INCLUDES := -I. -I$(srcdir) $(w32api_include) $(w32api_include)/ddk -WIN32_CFLAGS := $(CFLAGS) $(WIN32_COMMON) $(WIN32_INCLUDES) -WIN32_LDFLAGS := $(CFLAGS) $(WIN32_COMMON) -nostdlib -Wl,-shared - -ifdef MINGW_CC -override CC:=${MINGW_CC} -endif +WIN32_INCLUDES := -I. -I$(srcdir) +WIN32_CFLAGS := $(CFLAGS) $(WIN32_INCLUDES) +WIN32_LDFLAGS := $(CFLAGS) -nostdlib -Wl,-shared # Never again try to remove advapi32. It does not matter if the DLL calls # advapi32 functions or the equivalent ntdll functions. @@ -47,21 +46,33 @@ endif # not recognized by LSA. LIBS := -ladvapi32 -lkernel32 -lntdll -DLL := cyglsa.dll -DEF_FILE:= cyglsa.def - -OBJ = cyglsa.o +DLL32 := cyglsa.dll +DEF32 := cyglsa.def +OBJ32 := cyglsa.o + +DLL64 := cyglsa64.dll +DEF64 := cyglsa64.def +OBJ64 := cyglsa64.o .SUFFIXES: .NOEXPORT: -all: Makefile $(DLL) +all: Makefile $(DLL32) $(DLL64) -$(DEF_FILE): cyglsa.din config.status +$(DEF32): cyglsa.din config.status $(SHELL) config.status -$(DLL): $(OBJ) $(DEF_FILE) - $(CC) -s $(WIN32_LDFLAGS) -o $@ $^ $(LIBS) +$(DLL32): $(OBJ32) $(DEF32) + $(MINGW32_CC) -s $(WIN32_LDFLAGS) -o $@ $^ $(LIBS) + +$(OBJ32): cyglsa.c + $(MINGW32_CC) $(WIN32_CFLAGS) -c -o $@ $< + +$(DLL64): $(OBJ64) $(DEF64) + $(MINGW64_CC) -s $(WIN32_LDFLAGS) -o $@ $^ $(LIBS) + +$(OBJ64): cyglsa.c + $(MINGW64_CC) $(WIN32_CFLAGS) -c -o $@ $< .PHONY: all install clean realclean @@ -73,9 +84,6 @@ clean: install: all $(SHELL) $(updir1)/mkinstalldirs $(DESTDIR)$(bindir) - $(INSTALL_PROGRAM) $(DLL) $(DESTDIR)$(bindir)/$(DLL) - $(INSTALL_PROGRAM) $(srcdir)/cyglsa64.dll $(DESTDIR)$(bindir)/cyglsa64.dll + $(INSTALL_PROGRAM) $(DLL32) $(DESTDIR)$(bindir)/$(DLL32) + $(INSTALL_PROGRAM) $(DLL64) $(DESTDIR)$(bindir)/$(DLL64) $(INSTALL_PROGRAM) $(srcdir)/cyglsa-config $(DESTDIR)$(bindir)/cyglsa-config - -%.o: %.c - $(CC) $(WIN32_CFLAGS) -c -o $@ $<
2012-10-21 Yaakov Selkowitz <yselkowitz@...> * configure.ac [cygwin*] (FLAGS_FOR_TARGET): Remove references to w32api and obsolete directories. * configure: Regenerate. Index: configure.ac =================================================================== RCS file: /cvs/src/src/configure.ac,v retrieving revision 1.174 diff -u -p -r1.174 configure.ac --- configure.ac 29 Sep 2012 15:35:53 -0000 1.174 +++ configure.ac 21 Oct 2012 20:53:19 -0000 @@ -2801,7 +2801,7 @@ case " $target_configdirs " in *" --with-newlib "*) case "$target" in *-cygwin*) - FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(TARGET_SUBDIR)/winsup -L$$r/$(TARGET_SUBDIR)/winsup/cygwin -L$$r/$(TARGET_SUBDIR)/winsup/w32api/lib -isystem $$s/winsup/include -isystem $$s/winsup/cygwin/include -isystem $$s/winsup/w32api/include' + FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(TARGET_SUBDIR)/winsup/cygwin -isystem $$s/winsup/cygwin/include' ;; esac Index: configure =================================================================== RCS file: /cvs/src/src/configure,v retrieving revision 1.430 diff -u -p -r1.430 configure --- configure 29 Sep 2012 15:35:52 -0000 1.430 +++ configure 21 Oct 2012 20:53:21 -0000 @@ -7207,7 +7207,7 @@ case " $target_configdirs " in *" --with-newlib "*) case "$target" in *-cygwin*) - FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(TARGET_SUBDIR)/winsup -L$$r/$(TARGET_SUBDIR)/winsup/cygwin -L$$r/$(TARGET_SUBDIR)/winsup/w32api/lib -isystem $$s/winsup/include -isystem $$s/winsup/cygwin/include -isystem $$s/winsup/w32api/include' + FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(TARGET_SUBDIR)/winsup/cygwin -isystem $$s/winsup/cygwin/include' ;; esac
2012-10-21 Kai Tietz <ktietz70@...> Yaakov Selkowitz <yselkowitz@...> * configure.in: Add check for MINGW_CXX. * configure: Regenerate. * Makefile.in: Remove references to mingw and w32api directories. Use MINGW_CXX instead of mingw script to build MINGW_BINS. * cygcheck.cc: Use relative include paths for Cygwin headers. * path.cc: Ditto. * strace.cc: Ditto * mingw: Remove. Index: Makefile.in =================================================================== RCS file: /cvs/src/src/winsup/utils/Makefile.in,v retrieving revision 1.101 diff -u -p -r1.101 Makefile.in --- Makefile.in 19 Oct 2012 11:58:48 -0000 1.101 +++ Makefile.in 21 Oct 2012 19:50:10 -0000 @@ -40,15 +40,11 @@ include $(srcdir)/../Makefile.common .NOEXPORT: .PHONY: all install clean realclean warn_dumper warn_cygcheck_zlib -ALL_LDLIBS := -lnetapi32 -ladvapi32 -ALL_LDFLAGS := -static-libgcc -Wl,--enable-auto-import -B$(newlib_build)/libc -B$(w32api_lib) $(LDFLAGS) $(ALL_LDLIBS) -ALL_DEP_LDLIBS := $(cygwin_build)/libcygwin.a ${patsubst -l%,\ - $(w32api_lib)/lib%.a,$(ALL_LDLIBS) -lkernel32 -luser32} - -MINGW_LIB := $(mingw_build)/libmingw32.a -MINGW_LDLIBS := $(ALL_LDLIBS) $(MINGW_LIB) -MINGW_DEP_LDLIBS := $(ALL_DEP_LDLIBS) $(MINGW_LIB) -MINGW_CXX := ${srcdir}/mingw ${CXX} -I${updir} +ALL_LDLIBS := -lnetapi32 -ladvapi32 -lkernel32 -luser32 +ALL_LDFLAGS := -static-libgcc -Wl,--enable-auto-import -B$(newlib_build)/libc $(LDFLAGS) $(ALL_LDLIBS) +ALL_DEP_LDLIBS := $(cygwin_build)/libcygwin.a + +MINGW_CXX := @MINGW_CXX@ # List all binaries to be linked in Cygwin mode. Each binary on this list # must have a corresponding .o of the same name. @@ -74,7 +70,8 @@ path-mount.o: path.cc mount.exe: path-mount.o # Provide any necessary per-target variable overrides. -cygcheck.exe: MINGW_LDFLAGS += -B{w32api_lib} -lpsapi -lntdll -lmsvcrt +cygcheck.exe: MINGW_CXXFLAGS += -idirafter $(cygwin_source)/include -idirafter $(newlib_source)/libc/include +cygcheck.exe: MINGW_LDFLAGS += -lpsapi -lntdll cygpath.exe: ALL_LDFLAGS += -lcygwin -luserenv -lntdll cygpath.exe: CXXFLAGS += -fno-threadsafe-statics ps.exe: ALL_LDFLAGS += -lcygwin -lpsapi -lntdll @@ -83,7 +80,6 @@ strace.exe: MINGW_LDFLAGS += -lntdll ldd.exe: ALL_LDFLAGS += -lpsapi pldd.exe: ALL_LDFLAGS += -lpsapi -ldh.exe: MINGW_LDLIBS := ldh.exe: MINGW_LDFLAGS := -nostdlib -lkernel32 # Check for dumper's requirements and enable it if found. @@ -105,7 +101,7 @@ endif # Check for availability of a MinGW libz and enable for cygcheck. libz:=${shell x=$$(${MINGW_CXX} --print-file-name=libz.a); cd $$(dirname $$x); dir=$$(pwd); case "$$dir" in *mingw*) echo $$dir/libz.a ;; esac} ifdef libz -zlib_h := -include ${patsubst %/lib/mingw/libz.a,%/include/zlib.h,${patsubst %/lib/libz.a,%/include/zlib.h,$(libz)}} +zlib_h := -include ${patsubst %/lib/libz.a,%/include/zlib.h,$(libz)} zconf_h := ${patsubst %/zlib.h,%/zconf.h,$(zlib_h)} dump_setup.o: MINGW_CXXFLAGS += $(zconf_h) $(zlib_h) cygcheck.exe: MINGW_LDFLAGS += $(libz) @@ -160,7 +156,7 @@ endif # note: how to compile a Cygwin object is covered by the pattern rule in Makefile.common # these dependencies ensure that the required in-tree libs are built first -$(MINGW_BINS): $(MINGW_DEP_LDLIBS) +$(MINGW_BINS): $(ALL_DEP_LDLIBS) $(CYGWIN_BINS): $(ALL_DEP_LDLIBS) clean: @@ -179,9 +175,6 @@ install: all $(cygwin_build)/libcygwin.a: $(cygwin_build)/Makefile @$(MAKE) -C $(@D) $(@F) -$(MINGW_LIB): $(mingw_build)/Makefile - @$(MAKE) -C $(@D) $(@F) - warn_dumper: @echo '*** Not building dumper.exe since some required libraries or' @echo '*** or headers are missing. Potential candidates are:' Index: configure.in =================================================================== RCS file: /cvs/src/src/winsup/utils/configure.in,v retrieving revision 1.9 diff -u -p -r1.9 configure.in --- configure.in 25 Jul 2008 15:03:25 -0000 1.9 +++ configure.in 21 Oct 2012 19:50:11 -0000 @@ -27,5 +27,8 @@ INSTALL="/bin/sh "`cd $srcdir/../..; ech AC_PROG_INSTALL +AC_CHECK_PROGS(MINGW_CXX, ${target_cpu}-w64-mingw32-g++) +test -z "$MINGW_CXX" && AC_MSG_ERROR([no acceptable mingw g++ found in \$PATH]) + AC_EXEEXT AC_OUTPUT(Makefile) Index: cygcheck.cc =================================================================== RCS file: /cvs/src/src/winsup/utils/cygcheck.cc,v retrieving revision 1.135 diff -u -p -r1.135 cygcheck.cc --- cygcheck.cc 9 Oct 2012 12:47:40 -0000 1.135 +++ cygcheck.cc 21 Oct 2012 19:50:11 -0000 @@ -22,11 +22,10 @@ #include "path.h" #include "wide_path.h" #include <getopt.h> -#include "cygwin/include/cygwin/version.h" -#include "cygwin/include/sys/cygwin.h" -#include "cygwin/include/mntent.h" -#include "cygwin/cygprops.h" -#include "cygwin/version.h" +#include "../cygwin/include/cygwin/version.h" +#include "../cygwin/include/sys/cygwin.h" +#include "../cygwin/include/mntent.h" +#include "../cygwin/cygprops.h" #undef cygwin_internal #include "loadlib.h" Index: path.cc =================================================================== RCS file: /cvs/src/src/winsup/utils/path.cc,v retrieving revision 1.31 diff -u -p -r1.31 path.cc --- path.cc 17 Dec 2011 23:39:47 -0000 1.31 +++ path.cc 21 Oct 2012 19:50:11 -0000 @@ -23,9 +23,9 @@ details. */ #include <malloc.h> #include <wchar.h> #include "path.h" -#include "cygwin/include/cygwin/version.h" -#include "cygwin/include/sys/mount.h" -#include "cygwin/include/mntent.h" +#include "../cygwin/include/cygwin/version.h" +#include "../cygwin/include/sys/mount.h" +#include "../cygwin/include/mntent.h" #include "testsuite.h" #ifdef FSTAB_ONLY #include <sys/cygwin.h> Index: strace.cc =================================================================== RCS file: /cvs/src/src/winsup/utils/strace.cc,v retrieving revision 1.64 diff -u -p -r1.64 strace.cc --- strace.cc 11 Jul 2012 16:41:51 -0000 1.64 +++ strace.cc 21 Oct 2012 19:50:11 -0000 @@ -27,9 +27,9 @@ details. */ #include <time.h> #include <signal.h> #include <errno.h> -#include "cygwin/include/sys/strace.h" -#include "cygwin/include/sys/cygwin.h" -#include "cygwin/include/cygwin/version.h" +#include "../cygwin/include/sys/strace.h" +#include "../cygwin/include/sys/cygwin.h" +#include "../cygwin/include/cygwin/version.h" #include "path.h" #undef cygwin_internal #include "loadlib.h"
2012-10-21 Kai Tietz <ktietz70@...> Yaakov Selkowitz <yselkowitz@...> Corinna Vinschen <corinna@...> * configure.in [cygwin*]: Always build cygserver, lsaauth, utils, and doc. Do not build mingw or w32api. [mingw*]: Build w32api if present. * configure: Regenerate. * Makefile.common: Remove references to mingw and w32api directories. (MINGW_LDFLAGS): Redefine as -static to force static linking with libgcc and libstdc++. * Makefile.in: Remove references to mingw and w32api directories from Cygwin targets. Index: configure.in =================================================================== RCS file: /cvs/src/src/winsup/configure.in,v retrieving revision 1.33 diff -u -p -r1.33 configure.in --- configure.in 29 Jan 2011 06:41:28 -0000 1.33 +++ configure.in 21 Oct 2012 20:45:07 -0000 @@ -32,33 +32,17 @@ case "$target" in if ! test -d $srcdir/cygwin; then AC_MSG_ERROR("No cygwin dir. Can't build Cygwin. Exiting...") fi - AC_CONFIG_SUBDIRS(cygwin) + AC_CONFIG_SUBDIRS(cygwin cygserver lsaauth utils doc) INSTALL_LICENSE="install-license" ;; *mingw*) if ! test -d $srcdir/mingw; then AC_MSG_ERROR("No mingw dir. Can't build Mingw. Exiting...") fi - ;; -esac - -if test -d $srcdir/mingw; then - AC_CONFIG_SUBDIRS(mingw) -fi -AC_CONFIG_SUBDIRS(w32api cygserver) - -case "$with_cross_host" in - ""|*cygwin*) - # if test -d $srcdir/bz2lib; then - # AC_CONFIG_SUBDIRS(bz2lib) - # fi - # if test -d $srcdir/zlib; then - # AC_CONFIG_SUBDIRS(zlib) - # fi - if test -d $srcdir/lsaauth; then - AC_CONFIG_SUBDIRS(lsaauth) + AC_CONFIG_SUBDIRS(mingw) + if test -d $srcdir/w32api; then + AC_CONFIG_SUBDIRS(w32api) fi - AC_CONFIG_SUBDIRS(utils doc) ;; esac Index: Makefile.common =================================================================== RCS file: /cvs/src/src/winsup/Makefile.common,v retrieving revision 1.59 diff -u -p -r1.59 Makefile.common --- Makefile.common 30 Jul 2012 04:43:21 -0000 1.59 +++ Makefile.common 21 Oct 2012 20:45:07 -0000 @@ -72,38 +72,22 @@ ifeq (,${findstring $(cygwin_source)/inc cygwin_include:=-I$(cygwin_source)/include endif -# Try to determine what directories are available in winsup. -# Attempt to properly detect missing mingw or w32api and adjust command -# line parameters appropriately - -# nostdinc:=${shell [ -d "$(updir)/w32api" ] && echo "-nostdinc"} -# ifneq (,$(nostdinc)) nostdincxx:=-nostdinc++ -# ifeq (,${findstring $(w32api_source),$(CFLAGS) $(CXXFLAGS) $(CXX) $(CC)}) -w32api_include:=-I$(w32api_source)/include -# endif -# endif -mingw_include:=${shell [ -d "$(mingw_source)/include" ] && echo "-I$(mingw_source)/include"} -ifneq (,$(mingw_include)) nostdlib:=-nostdlib -else -nostdlib:= -endif ifeq (,${nostdlib}) nostdinc:= endif -INCLUDES:=-I. $(cygwin_include) -I$(cygwin_source) $(newlib_include) $(w32api_include) +INCLUDES:=-I. $(cygwin_include) -I$(cygwin_source) $(newlib_include) ifdef CONFIG_DIR INCLUDES+=-I$(CONFIG_DIR) endif -MINGW_INCLUDES:=${mingw_include} $(w32api_include) -MINGW_CFLAGS:=-mno-cygwin $(MINGW_INCLUDES) -MINGW_CXXFLAGS:=${filter-out $(newlib_source)/%,$(CXXFLAGS)} -mno-cygwin $(MINGW_INCLUDES) -MINGW_LDFLAGS:=-L${mingw_build} -L${mingw_build}/mingwex +MINGW_LDFLAGS:=-static +MINGW_CFLAGS:= +MINGW_CXXFLAGS:= GCC_DEFAULT_OPTIONS:=$(CFLAGS_COMMON) $(CFLAGS_CONFIG) $(INCLUDES) @@ -134,7 +118,7 @@ COMPILE_CXX=$(CXX) $c $(if $($(*F)_STDIN $(ALL_CXXFLAGS) $(GCC_INCLUDE) -fno-rtti -fno-exceptions COMPILE_CC=$(CC) $c $(if $($(*F)_STDINCFLAGS),,$(nostdinc)) $(ALL_CFLAGS) $(GCC_INCLUDE) -vpath %.a $(cygwin_build):$(w32api_lib):$(newlib_build)/libc:$(newlib_build)/libm +vpath %.a $(cygwin_build):$(newlib_build)/libc:$(newlib_build)/libm MAKEOVERRIDES_WORKAROUND=${wordlist 2,1,a b c} Index: Makefile.in =================================================================== RCS file: /cvs/src/src/winsup/Makefile.in,v retrieving revision 1.33 diff -u -p -r1.33 Makefile.in --- Makefile.in 24 Feb 2009 02:11:13 -0000 1.33 +++ Makefile.in 21 Oct 2012 20:45:07 -0000 @@ -121,20 +121,20 @@ check: cygwin fi; \ $(MAKE) check -utils: cygwin mingw +utils: cygwin mingw: w32api -cygwin: w32api +cygwin: cygserver: cygwin -install_utils: cygwin mingw +install_utils: cygwin install_mingw: w32api -install_cygwin: w32api +install_cygwin: install_cygserver: cygwin -lsaauth: mingw cygwin +lsaauth: cygwin