Mailing-List: contact cygwin-developers-help AT sourceware DOT cygnus DOT com; run by ezmlm Sender: cygwin-developers-owner AT sourceware DOT cygnus DOT com Delivered-To: mailing list cygwin-developers AT sourceware DOT cygnus DOT com Message-Id: <199904291714.MAA14527@modi.xraylith.wisc.edu> X-Authentication-Warning: modi.xraylith.wisc.edu: localhost.xraylith.wisc.edu [127.0.0.1] didn't use HELO protocol To: cygwin-developers AT sourceware DOT cygnus DOT com Subject: repost of "tiny winsup config patch" Date: Thu, 29 Apr 1999 12:14:20 -0500 From: Mumit Khan Cygwin developers, I've re-posting this patch because it fixes some annoying problems when you try to build winsup snapshots with incompatible version of newlib installed. Please consider it for inclusion. It solves two problems when building the utils: - makes sure that the INCLUDES point to the current tree before looking at the installed copy which may be incompatible. - never use LDFLAGS in a sub-Makefile. Winsup checks for newlib in the build tree, and if it's there, it always adds the -B arg to EXE_LDFLAGS. My opinion however is unchanged from the last time we discussed this -- winsup should never be built without corresponding newlib in the same source tree and we should take measures to prevent it. That is, configure should balk if it can't find newlib in the build tree instead of just warning you. Patch against ss-1999-04-27. Patches to auto-generated configure not added. Thu Apr 29 11:06:37 1999 Mumit Khan * configure.in (EXE_LDFLAGS): Always add newlib if part of the build tree. * utils/Makefile.in (INCLUDES): Add newlib include directories. (LDFLAGS): Replace this with (ALL_LDFLAGS): this to avoid being overridden from higher level Makefiles. --- configure.in.~1 Thu Apr 29 10:50:58 1999 +++ configure.in Thu Apr 29 10:55:44 1999 @@ -140,26 +140,36 @@ dnl program_transform_name="$program dnl fi dnl fi -dnl If CC can't create a .exe, which can happen when building from scratch -dnl because crt0.o hasn't been installed yet, set up EXE_LDFLAGS to find -dnl newlib. Newlib is ../newlib when configure runs, but is ../../newlib -dnl from the perspective of subdirectory makes. +dnl +dnl If newlib is part of build tree, always set EXE_LDFLAGS to point to +dnl it; this is important in cases where the installed newlib is perhaps +dnl not compatible. Check and warn for installed newlib only if it's not +dnl part of the build tree. +dnl + +AC_MSG_CHECKING([if newlib is part of the build tree]) -AC_MSG_CHECKING([if newlib needed]) EXE_LDFLAGS= -AC_TRY_LINK(, - [/* main already defined */] - , - AC_MSG_RESULT(no) - , - AC_MSG_RESULT(yes) - if test -d ../newlib - then - EXE_LDFLAGS="-B../../newlib/ -L.." - else - AC_MSG_WARN(newlib not found - utility .exe's may not link) - fi -) +if test -d ../newlib +then + AC_MSG_RESULT(yes) + EXE_LDFLAGS="-B../../newlib/ -B../" +else + AC_MSG_RESULT(no) +fi + AC_SUBST(EXE_LDFLAGS) + +if test x"$EXE_LDFLAGS" = x +then + AC_MSG_CHECKING([if installed newlib needed]) + AC_TRY_LINK(, + [/* main already defined */] + , + AC_MSG_RESULT(no) + , + AC_MSG_RESULT(yes) + AC_MSG_WARN(newlib not found - utility .exe's may not link)) +fi AC_SUBST(EXE_LDFLAGS) case "$target_cpu" in --- utils/Makefile.in.~1 Fri Jan 22 10:48:29 1999 +++ utils/Makefile.in Thu Apr 29 10:57:27 1999 @@ -30,13 +30,15 @@ CC = @CC@ CFLAGS = @CFLAGS@ CXXFLAGS = @CXXFLAGS@ -INCLUDES = -I$(srcdir)/.. -I$(srcdir)/../include +INCLUDES = -I$(srcdir)/.. -I$(srcdir)/../include \ + -I$(srcdir)/../../newlib/libc/sys/cygwin \ + -I$(srcdir)/../../newlib/libc/include ALL_CFLAGS = $(CFLAGS) $(INCLUDES) ALL_CXXFLAGS = $(CXXFLAGS) $(INCLUDES) # Passed in from ../Makefile. -LDFLAGS:=$(EXE_LDFLAGS) ../libcygwin.a +ALL_LDFLAGS = $(EXE_LDFLAGS) $(LDFLAGS) ../libcygwin.a PROGS = mount$(EXEEXT) umount$(EXEEXT) ps$(EXEEXT) kill$(EXEEXT) \ mkpasswd$(EXEEXT) mkgroup$(EXEEXT) cygpath$(EXEEXT) cygcheck$(EXEEXT) \ @@ -48,34 +50,34 @@ WINSUP_DEPS = $(srcdir)/../winsup.h all: $(PROGS) mount$(EXEEXT): mount.cc $(WINSUP_DEPS) - $(CC) -o $@ $(srcdir)/mount.cc $(ALL_CXXFLAGS) $(LDFLAGS) + $(CC) -o $@ $(srcdir)/mount.cc $(ALL_CXXFLAGS) $(ALL_LDFLAGS) umount$(EXEEXT): umount.cc $(WINSUP_DEPS) - $(CC) -o $@ $(srcdir)/umount.cc $(ALL_CXXFLAGS) $(LDFLAGS) + $(CC) -o $@ $(srcdir)/umount.cc $(ALL_CXXFLAGS) $(ALL_LDFLAGS) ps$(EXEEXT): ps.cc $(WINSUP_DEPS) - $(CC) -o $@ $(srcdir)/ps.cc $(ALL_CXXFLAGS) $(LDFLAGS) + $(CC) -o $@ $(srcdir)/ps.cc $(ALL_CXXFLAGS) $(ALL_LDFLAGS) kill$(EXEEXT): kill.cc $(WINSUP_DEPS) - $(CC) -o $@ $(srcdir)/kill.cc $(ALL_CXXFLAGS) $(LDFLAGS) + $(CC) -o $@ $(srcdir)/kill.cc $(ALL_CXXFLAGS) $(ALL_LDFLAGS) cygwin$(EXEEXT): cygwin.cc $(WINSUP_DEPS) - $(CC) -o $@ $(srcdir)/cygwin.cc $(ALL_CXXFLAGS) $(LDFLAGS) + $(CC) -o $@ $(srcdir)/cygwin.cc $(ALL_CXXFLAGS) $(ALL_LDFLAGS) mkpasswd$(EXEEXT): mkpasswd.c $(WINSUP_DEPS) - $(CC) -o $@ $(srcdir)/mkpasswd.c $(ALL_CXXFLAGS) $(LDFLAGS) -lnetapi32 -ladvapi32 + $(CC) -o $@ $(srcdir)/mkpasswd.c $(ALL_CXXFLAGS) $(ALL_LDFLAGS) -lnetapi32 -ladvapi32 mkgroup$(EXEEXT): mkgroup.c $(WINSUP_DEPS) - $(CC) -o $@ $(srcdir)/mkgroup.c $(ALL_CXXFLAGS) $(LDFLAGS) -lnetapi32 -ladvapi32 + $(CC) -o $@ $(srcdir)/mkgroup.c $(ALL_CXXFLAGS) $(ALL_LDFLAGS) -lnetapi32 -ladvapi32 cygpath$(EXEEXT): cygpath.cc $(WINSUP_DEFS) - $(CC) -o $@ $(srcdir)/cygpath.cc $(ALL_CXXFLAGS) $(LDFLAGS) + $(CC) -o $@ $(srcdir)/cygpath.cc $(ALL_CXXFLAGS) $(ALL_LDFLAGS) cygcheck$(EXEEXT): cygcheck.cc $(WINSUP_DEPS) - $(CC) -o $@ $(srcdir)/cygcheck.cc $(ALL_CXXFLAGS) $(LDFLAGS) + $(CC) -o $@ $(srcdir)/cygcheck.cc $(ALL_CXXFLAGS) $(ALL_LDFLAGS) passwd$(EXEEXT): passwd.c $(WINSUP_DEPS) - $(CC) -o $@ $(srcdir)/passwd.c $(ALL_CXXFLAGS) $(LDFLAGS) -lnetapi32 + $(CC) -o $@ $(srcdir)/passwd.c $(ALL_CXXFLAGS) $(ALL_LDFLAGS) -lnetapi32 clean: rm -f *.o $(PROGS) Regards, Mumit