-## This exists because src/Makefile.in did some extra fiddling around
-## with LD_SWITCH_SYSTEM. The cpp logic was:
-## #ifndef LD_SWITCH_SYSTEM
-## #if !defined (__GNUC__) && ((defined (BSD_SYSTEM) && !defined (COFF)))
-## Since all the *bsds define LD_SWITCH_SYSTEM, this simplifies to:
-## not using gcc, darwin system not on an alpha (ie darwin, since
-## darwin + alpha does not occur).
-## Note that unlike L_S_S, this is not used in ac_link.
-if test "x$LD_SWITCH_SYSTEM" = "x" && test "x$GCC" != "xyes" && \
- test "$opsys" = "darwin"; then
- LD_SWITCH_SYSTEM_EXTRA="-X"
-else
- LD_SWITCH_SYSTEM_EXTRA=
+LINKER=
+ORDINARY_LINK=
+case "$opsys" in
+ ## gnu: GNU needs its own crt0.
+ aix4-2|cygwin|darwin|gnu|irix6-5|sol2*|unixware) ORDINARY_LINK=yes ;;
+
+ ## On post 1.3 releases of NetBSD, gcc -nostdlib also clears the
+ ## library search parth, i.e. it won't search /usr/lib for libc and
+ ## friends. Using -nostartfiles instead avoids this problem, and
+ ## will also work on earlier NetBSD releases.
+ netbsd|openbsd) LINKER="\$(CC) -nostartfiles" ;;
+
+ ## macpcc: NAKAJI Hiroyuki <nakaji@tutrp.tut.ac.jp> says
+ ## MkLinux/LinuxPPC needs this.
+ ## ibms390x only supports opsys = gnu-linux so it can be added here.
+ gnu-*)
+ case "$machine" in
+ macppc|ibms390x) LINKER="\$(CC) -nostdlib" ;;
+ esac
+ ;;
+esac
+
+
+if test "x$ORDINARY_LINK" = "xyes"; then
+
+ LINKER="\$(CC)"
+ AC_DEFINE(ORDINARY_LINK, 1, [Define if the C compiler is the linker.])
+
+## The system files defining neither ORDINARY_LINK nor LINKER are:
+## (bsd-common), freebsd, gnu-* not on macppc|ibms390x, hpux*.
+elif test "x$GCC" = "xyes" && test "x$LINKER" = "x"; then
+
+ ## Versions of GCC >= 2.0 put their library, libgcc.a, in obscure
+ ## places that are difficult to figure out at make time. Fortunately,
+ ## these same versions allow you to pass arbitrary flags on to the
+ ## linker, so there is no reason not to use it as a linker.
+ ##
+ ## Well, it is not quite perfect. The "-nostdlib" keeps GCC from
+ ## searching for libraries in its internal directories, so we have to
+ ## ask GCC explicitly where to find libgcc.a (LIB_GCC below).
+ LINKER="\$(CC) -nostdlib"
+fi
+
+test "x$LINKER" = "x" && LINKER=ld
+## FIXME? What setting of EDIT_LDFLAGS should this have?
+test "$NS_IMPL_GNUSTEP" = "yes" && LINKER="\$(CC) -rdynamic"
+
+AC_SUBST(LINKER)
+
+
+## FIXME? The logic here is not precisely the same as that above.
+## There is no check here for a pre-defined LINKER.
+## Should we only be setting LIB_GCC if LD ~ -nostdlib?
+LIB_GCC=
+if test "x$GCC" = "xyes" && test "x$ORDINARY_LINK" != "xyes"; then
+
+ case "$opsys" in
+ freebsd|netbsd|openbsd) LIB_GCC= ;;
+
+ gnu-*)
+ ## armin76@gentoo.org reported that the lgcc_s flag is necessary to
+ ## build on ARM EABI under GNU/Linux. (Bug#5518)
+ ## Note that m/arm.h never bothered to undefine LIB_GCC first.
+ if test "$machine" = "arm"; then
+ LIB_GCC="-lgcc_s"
+ else
+ ## FIXME? s/gnu-linux.h used to define LIB_GCC as below, then
+ ## immediately undefine it again and redefine it to empty.
+ ## Was the C_SWITCH_X_SITE part really necessary?
+## LIB_GCC=`$CC $C_SWITCH_X_SITE -print-libgcc-file-name`
+ LIB_GCC=
+ fi
+ ;;
+
+ ## Ask GCC where to find libgcc.a.
+ *) LIB_GCC=`$CC -print-libgcc-file-name 2> /dev/null` ;;
+ esac
+fi dnl if $GCC
+AC_SUBST(LIB_GCC)
+
+
+TOOLTIP_SUPPORT=
+WINDOW_SUPPORT=
+## If we're using X11/GNUstep, define some consequences.
+if test "$HAVE_X_WINDOWS" = "yes" || test "$HAVE_NS" = "yes"; then
+ AC_DEFINE(HAVE_WINDOW_SYSTEM, 1, [Define if you have a window system.])
+ AC_DEFINE(HAVE_MOUSE, 1, [Define if you have mouse support.])
+ MOUSE_SUPPORT="\$(REAL_MOUSE_SUPPORT)"
+ TOOLTIP_SUPPORT="\${lispsource}mouse.elc"
+
+ WINDOW_SUPPORT="\$(BASE_WINDOW_SUPPORT)"
+ test "$HAVE_X_WINDOWS" = "yes" && \
+ WINDOW_SUPPORT="$WINDOW_SUPPORT \$(X_WINDOW_SUPPORT)"
+