X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/bf3126f629060f80c1a8a05f17b44af77d733a52..3dee6fdb964e334b1e65766abee639105e724a7f:/configure.in diff --git a/configure.in b/configure.in index c768e33e00..34358a2cea 100644 --- a/configure.in +++ b/configure.in @@ -186,6 +186,12 @@ if test "X${with_pkg_config_prog}" != X; then fi fi +CRT_DIR= +AC_ARG_WITH([crt-dir],dnl +[AS_HELP_STRING([--with-crt-dir=DIR],[directory containing crtn.o etc. +The default is /usr/lib, or /usr/lib64 on some platforms.])]) +CRT_DIR="${with_crt_dir}" + AC_ARG_WITH([gnustep-conf],dnl [AS_HELP_STRING([--with-gnustep-conf=PATH],[path to GNUstep.conf; default $GNUSTEP_CONFIG_FILE, or /etc/GNUstep/GNUstep.conf])]) test "X${with_gnustep_conf}" != X && test "${with_gnustep_conf}" != yes && \ @@ -755,6 +761,20 @@ AC_PROG_INSTALL if test "x$RANLIB" = x; then AC_PROG_RANLIB fi + +## Although we're running on an amd64 kernel, we're actually compiling for +## the x86 architecture. The user should probably have provided an +## explicit --build to `configure', but if everything else than the kernel +## is running in i386 mode, we can help them out. +if test "$machine" = "amdx86-64"; then + AC_CHECK_DECL([i386]) + if test "$ac_cv_have_decl_i386" = "yes"; then + canonical=`echo "$canonical" | sed -e 's/^amd64/i386/' -e 's/^x86_64/i386/'` + machine=intel386 + machfile="m/${machine}.h" + fi +fi + AC_PATH_PROG(INSTALL_INFO, install-info) AC_PATH_PROG(INSTALL_INFO, install-info,, /usr/sbin) AC_PATH_PROG(INSTALL_INFO, install-info,:, /sbin) @@ -822,6 +842,20 @@ AC_LINK_IFELSE([main(){return 0;}], LDFLAGS=$late_LDFLAGS [AC_MSG_RESULT(no)]) +LIB_MATH=-lm + +case $opsys in + cygwin ) + LIB_MATH= + ;; + darwin ) + ## Adding -lm confuses the dynamic linker, so omit it. + LIB_MATH= + ;; +esac + +AC_SUBST(LIB_MATH) + #### Extract some information from the operating system and machine files. AC_CHECKING([the machine- and system-dependent files to find out @@ -846,9 +880,6 @@ tempcname="conftest.c" echo ' #include "'${srcdir}'/src/'${opsysfile}'" #include "'${srcdir}'/src/'${machfile}'" -#ifndef LIBS_MACHINE -#define LIBS_MACHINE -#endif #ifndef LIBS_SYSTEM #define LIBS_SYSTEM #endif @@ -858,21 +889,13 @@ echo ' #ifndef C_SWITCH_MACHINE #define C_SWITCH_MACHINE #endif -configure___ libsrc_libs=LIBS_MACHINE LIBS_SYSTEM +configure___ libsrc_libs=LIBS_SYSTEM configure___ c_switch_system=C_SWITCH_SYSTEM configure___ c_switch_machine=C_SWITCH_MACHINE -#ifndef LIB_X11_LIB -#define LIB_X11_LIB -lX11 -#endif - -configure___ LIBX=LIB_X11_LIB +configure___ LIBX=-lX11 -#ifdef UNEXEC configure___ unexec=UNEXEC -#else -configure___ unexec=unexec.o -#endif #ifdef SYSTEM_MALLOC configure___ system_malloc=yes @@ -898,10 +921,6 @@ configure___ use_mmap_for_buffers=no #define C_WARNINGS_SWITCH ${C_WARNINGS_SWITCH} #endif -#ifndef LD_SWITCH_MACHINE -#define LD_SWITCH_MACHINE -#endif - #ifndef LD_SWITCH_SYSTEM #define LD_SWITCH_SYSTEM #endif @@ -911,13 +930,12 @@ configure___ use_mmap_for_buffers=no #endif configure___ ld_switch_system=LD_SWITCH_SYSTEM -configure___ ld_switch_machine=LD_SWITCH_MACHINE #ifdef THIS_IS_CONFIGURE /* Get the CFLAGS for tests in configure. */ #ifdef __GNUC__ -configure___ CFLAGS=C_OPTIMIZE_SWITCH '${SPECIFIED_CFLAGS}' +configure___ CFLAGS=-g C_OPTIMIZE_SWITCH '${SPECIFIED_CFLAGS}' #else configure___ CFLAGS='${SPECIFIED_CFLAGS}' #endif @@ -926,7 +944,7 @@ configure___ CFLAGS='${SPECIFIED_CFLAGS}' /* Get the CFLAGS for real compilation. */ #ifdef __GNUC__ -configure___ REAL_CFLAGS=C_OPTIMIZE_SWITCH C_WARNINGS_SWITCH ${PROFILING_CFLAGS} '${SPECIFIED_CFLAGS}' +configure___ REAL_CFLAGS=-g C_OPTIMIZE_SWITCH C_WARNINGS_SWITCH ${PROFILING_CFLAGS} '${SPECIFIED_CFLAGS}' #else configure___ REAL_CFLAGS='${SPECIFIED_CFLAGS}' #endif @@ -949,7 +967,7 @@ else fi] rm ${tempcname} -ac_link="$ac_link $ld_switch_machine $ld_switch_system" +ac_link="$ac_link $ld_switch_system" ### Make sure subsequent tests use flags consistent with the build flags. @@ -966,17 +984,42 @@ dnl Do this early because it can frob feature test macros for Unix-98 &c. AC_SYS_LARGEFILE -### The standard library on x86-64 and s390x GNU/Linux distributions can -### be located in either /usr/lib64 or /usr/lib. -### In some rare cases, /usr/lib64 exists but does not contain the -### relevant files (bug#1287). Hence test for crtn.o. -case "${canonical}" in - x86_64-*-linux-gnu* | s390x-*-linux-gnu* ) - if test -e /usr/lib64/crtn.o; then - AC_DEFINE(HAVE_LIB64_DIR, 1, - [Define to 1 if the directory /usr/lib64 exists.]) +## If user specified a crt-dir, use that unconditionally. +if test "X$CRT_DIR" = "X"; then + + case "$canonical" in + x86_64-*-linux-gnu* | s390x-*-linux-gnu*) + ## On x86-64 and s390x GNU/Linux distributions, the standard library + ## can be in a variety of places. We only try /usr/lib64 and /usr/lib. + ## For anything else (eg /usr/lib32), it is up the user to specify + ## the location (bug#5655). + ## Test for crtn.o, not just the directory, because sometimes the + ## directory exists but does not have the relevant files (bug#1287). + ## FIXME better to test for binary compatibility somehow. + test -e /usr/lib64/crtn.o && CRT_DIR=/usr/lib64 + ;; + + powerpc64-*-linux-gnu* | sparc64-*-linux-gnu*) CRT_DIR=/usr/lib64 ;; + esac + + case "$opsys" in + hpux10-20) CRT_DIR=/lib ;; + esac + + ## Default is /usr/lib. + test "X$CRT_DIR" = "X" && CRT_DIR=/usr/lib + +else + + ## Some platforms don't use any of these files, so it is not + ## appropriate to put this test outside the if block. + test -e $CRT_DIR/crtn.o || test -e $CRT_DIR/crt0.o || \ + AC_MSG_ERROR([crt*.o not found in specified location.]) + fi -esac + +AC_SUBST(CRT_DIR) + dnl This function defintion taken from Gnome 2.0 dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not) @@ -1356,6 +1399,9 @@ if test "${with_ns}" != no; then NS_HAVE_NSINTEGER=no fi fi + +NS_OBJ= +NS_SUPPORT= if test "${HAVE_NS}" = yes; then window_system=nextstep with_xft=no @@ -1365,9 +1411,13 @@ if test "${HAVE_NS}" = yes; then if test "${EN_NS_SELF_CONTAINED}" = yes; then prefix=${ns_appresdir} fi + NS_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o fontset.o fringe.o image.o" + NS_SUPPORT="\${lispsource}emacs-lisp/easymenu.elc \${lispsource}term/ns-win.elc" fi CFLAGS="$tmp_CFLAGS" CPPFLAGS="$tmp_CPPFLAGS" +AC_SUBST(NS_OBJ) +AC_SUBST(NS_SUPPORT) case "${window_system}" in x11 ) @@ -1753,6 +1803,7 @@ AC_SUBST(LIBSELINUX_LIBS) dnl Do not put whitespace before the #include statements below. dnl Older compilers (eg sunos4 cc) choke on it. HAVE_XAW3D=no +LUCID_LIBW= if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then if test "$with_xaw3d" != no; then AC_MSG_CHECKING(for xaw3d) @@ -1770,6 +1821,7 @@ if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then AC_MSG_RESULT([yes; using Lucid toolkit]) USE_X_TOOLKIT=LUCID HAVE_XAW3D=yes + LUCID_LIBW=-lXaw3d AC_DEFINE(HAVE_XAW3D, 1, [Define to 1 if you have the Xaw3d library (-lXaw3d).]) else @@ -1785,6 +1837,7 @@ if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then if test $emacs_cv_xaw = yes; then AC_MSG_RESULT([yes; using Lucid toolkit]) USE_X_TOOLKIT=LUCID + LUCID_LIBW=-lXaw elif test x"${USE_X_TOOLKIT}" = xLUCID; then AC_MSG_ERROR([Lucid toolkit requires X11/Xaw include files]) else @@ -1796,6 +1849,7 @@ fi X_TOOLKIT_TYPE=$USE_X_TOOLKIT +LIBXTR6= if test "${USE_X_TOOLKIT}" != "none"; then AC_MSG_CHECKING(X11 toolkit version) AC_CACHE_VAL(emacs_cv_x11_toolkit_version_6, @@ -1809,6 +1863,11 @@ fail; AC_MSG_RESULT(6 or newer) AC_DEFINE(HAVE_X11XTR6, 1, [Define to 1 if you have the X11R6 or newer version of Xt.]) + LIBXTR6="-lSM -lICE" + case "$opsys" in + ## Use libw.a along with X11R6 Xt. + unixware) LIBXTR6="$LIBXTR6 -lw" ;; + esac else AC_MSG_RESULT(before 6) fi @@ -1824,6 +1883,18 @@ dnl tranle@intellicorp.com says libXmu.a can need XtMalloc in libXt.a to link. AC_CHECK_LIB(Xmu, XmuConvertStandardSelection) test $ac_cv_lib_Xmu_XmuConvertStandardSelection = no && LIBS="$OLDLIBS" fi +AC_SUBST(LIBXTR6) + +dnl FIXME the logic here seems weird, but this is what cpp was doing. +dnl Why not just test for libxmu in the normal way? +LIBXMU=-lXmu +case "$machine" in + ## These machines don't supply Xmu. + hpux* | aix4-2 ) + test "X$ac_cv_lib_Xmu_XmuConvertStandardSelection" != "Xyes" && LIBXMU= + ;; +esac +AC_SUBST(LIBXMU) # On Irix 6.5, at least, we need XShapeQueryExtension from -lXext for Xaw3D. if test "${HAVE_X11}" = "yes"; then @@ -1832,6 +1903,7 @@ if test "${HAVE_X11}" = "yes"; then fi fi +LIBXP= if test "${USE_X_TOOLKIT}" = "MOTIF"; then AC_CACHE_CHECK(for Motif version 2.1, emacs_cv_motif_version_2_1, [AC_TRY_COMPILE([#include ], @@ -1841,16 +1913,8 @@ int x = 5; Motif version prior to 2.1. #endif], emacs_cv_motif_version_2_1=yes, emacs_cv_motif_version_2_1=no)]) - HAVE_MOTIF_2_1=$emacs_cv_motif_version_2_1 if test $emacs_cv_motif_version_2_1 = yes; then - HAVE_LIBXP=no - AC_DEFINE(HAVE_MOTIF_2_1, 1, - [Define to 1 if you have Motif 2.1 or newer.]) - AC_CHECK_LIB(Xp, XpCreateContext, HAVE_LIBXP=yes) - if test ${HAVE_LIBXP} = yes; then - AC_DEFINE(HAVE_LIBXP, 1, - [Define to 1 if you have the Xp library (-lXp).]) - fi + AC_CHECK_LIB(Xp, XpCreateContext, LIBXP=-lXp) else AC_CACHE_CHECK(for LessTif where some systems put it, emacs_cv_lesstif, # We put this in CFLAGS temporarily to precede other -I options @@ -2052,6 +2116,15 @@ else HAVE_LIBOTF=no HAVE_M17N_FLT=no fi + +FONT_OBJ=xfont.o +if test "$HAVE_XFT" = "yes"; then + FONT_OBJ="$FONT_OBJ ftfont.o xftfont.o ftxfont.o" +elif test "$HAVE_FREETYPE" = "yes"; then + FONT_OBJ="$FONT_OBJ ftfont.o ftxfont.o" +fi +AC_SUBST(FONT_OBJ) + ### End of font-backend (under X11) section. AC_SUBST(FREETYPE_CFLAGS) @@ -2213,6 +2286,7 @@ fi ### Use -lgpm if available, unless `--with-gpm=no'. HAVE_GPM=no LIBGPM= +GPM_MOUSE_SUPPORT= if test "${with_gpm}" != "no"; then AC_CHECK_HEADER(gpm.h, [AC_CHECK_LIB(gpm, Gpm_Open, HAVE_GPM=yes)]) @@ -2220,13 +2294,16 @@ if test "${with_gpm}" != "no"; then if test "${HAVE_GPM}" = "yes"; then AC_DEFINE(HAVE_GPM, 1, [Define to 1 if you have the gpm library (-lgpm).]) LIBGPM=-lgpm + GPM_MOUSE_SUPPORT="\${lispsource}mouse.elc" fi fi AC_SUBST(LIBGPM) +AC_SUBST(GPM_MOUSE_SUPPORT) dnl Check for malloc/malloc.h on darwin AC_CHECK_HEADER(malloc/malloc.h, [AC_DEFINE(HAVE_MALLOC_MALLOC_H, 1, [Define to 1 if you have the header file.])]) +C_SWITCH_X_SYSTEM= ### Use NeXTstep API to implement GUI. if test "${HAVE_NS}" = "yes"; then AC_DEFINE(HAVE_NS, 1, [Define to 1 if you are using the NeXTstep API, either GNUstep or Cocoa on Mac OS X.]) @@ -2236,6 +2313,9 @@ if test "${HAVE_NS}" = "yes"; then fi if test "${NS_IMPL_GNUSTEP}" = "yes"; then AC_DEFINE(NS_IMPL_GNUSTEP, 1, [Define to 1 if you are using NS windowing under GNUstep.]) + # See also .m.o rule in Makefile.in */ + # FIXME: are all these flags really needed? Document here why. */ + C_SWITCH_X_SYSTEM="-D_REENTRANT -fPIC -fno-strict-aliasing" GNU_OBJC_CFLAGS="-fgnu-runtime -Wno-import -fconstant-string-class=NSConstantString -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGSWARN -DGSDIAGNOSE" fi if test "${NS_HAVE_NSINTEGER}" = "yes"; then @@ -2726,10 +2806,13 @@ AC_SUBST(gamedir) AC_SUBST(gameuser) AC_SUBST(c_switch_system) AC_SUBST(c_switch_machine) +AC_SUBST(unexec) AC_SUBST(LD_SWITCH_X_SITE) AC_SUBST(LD_SWITCH_X_SITE_AUX) AC_SUBST(C_SWITCH_X_SITE) +AC_SUBST(C_SWITCH_X_SYSTEM) AC_SUBST(CFLAGS) +## Used in lwlib/Makefile.in. AC_SUBST(X_TOOLKIT_TYPE) AC_SUBST(machfile) AC_SUBST(opsysfile) @@ -2768,8 +2851,6 @@ AC_DEFINE_UNQUOTED(C_SWITCH_X_SITE, ${C_SWITCH_X_SITE}, HAVE_X_WINDOWS above and your X include files aren't in a place that your compiler can find on its own, you might want to add "-I/..." or something similar.]) -AC_DEFINE_UNQUOTED(UNEXEC_SRC, ${UNEXEC_SRC}, - [Define to the unexec source file name.]) XMENU_OBJ= XOBJ= @@ -2782,19 +2863,83 @@ fi AC_SUBST(XMENU_OBJ) AC_SUBST(XOBJ) +WIDGET_OBJ= +MOTIF_LIBW= if test "${USE_X_TOOLKIT}" != "none" ; then + WIDGET_OBJ=widget.o AC_DEFINE(USE_X_TOOLKIT, 1, [Define to 1 if using an X toolkit.]) if test "${USE_X_TOOLKIT}" = "LUCID"; then AC_DEFINE(USE_LUCID, 1, [Define to 1 if using the Lucid X toolkit.]) elif test "${USE_X_TOOLKIT}" = "MOTIF"; then AC_DEFINE(USE_MOTIF, 1, [Define to 1 if using the Motif X toolkit.]) + MOTIF_LIBW=-lXm + case "$opsys" in + gnu-linux) + ## Paul Abrahams says this is needed. + MOTIF_LIBW="$MOTIF_LIBW -lXpm" + ;; + + unixware) + ## Richard Anthony Ryan + ## says -lXimp is needed in UNIX_SV ... 4.2 1.1.2. + MOTIF_LIBW="MOTIF_LIBW -lXimp" + ;; + + aix4-2) + ## olson@mcs.anl.gov says -li18n is needed by -lXm. + MOTIF_LIBW="$MOTIF_LIBW -li18n" + ;; + esac + MOTIF_LIBW="$MOTIF_LIBW $LIBXP" fi fi +AC_SUBST(WIDGET_OBJ) + +TOOLKIT_LIBW= +case "$USE_X_TOOLKIT" in + MOTIF) TOOLKIT_LIBW="$MOTIF_LIBW" ;; + LUCID) TOOLKIT_LIBW="$LUCID_LIBW" ;; + none) test "x$HAVE_GTK" = "xyes" && TOOLKIT_LIBW="$GTK_LIBS" ;; +esac +AC_SUBST(TOOLKIT_LIBW) + +if test "$USE_X_TOOLKIT" = "none"; then + LIBXT_OTHER="\$(LIBXSM)" +else + LIBXT_OTHER="\$(LIBXMU) -lXt \$(LIBXTR6) -lXext" +fi +AC_SUBST(LIBXT_OTHER) + +## The X Menu stuff is present in the X10 distribution, but missing +## from X11. If we have X10, just use the installed library; +## otherwise, use our own copy. if test "${HAVE_X11}" = "yes" ; then AC_DEFINE(HAVE_X11, 1, [Define to 1 if you want to use version 11 of X windows. Otherwise, Emacs expects to use version 10.]) + + if test "$USE_X_TOOLKIT" = "none"; then + OLDXMENU="\${oldXMenudir}libXMenu11.a" + else + OLDXMENU="\${lwlibdir}liblw.a" + fi + LIBXMENU="\$(OLDXMENU)" + LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)" +else + OLDXMENU= + LIBXMENU="-lXMenu" + LIBX_OTHER= fi + +if test "$HAVE_GTK" = "yes"; then + OLDXMENU= + LIBXMENU= +fi + +AC_SUBST(OLDXMENU) +AC_SUBST(LIBXMENU) +AC_SUBST(LIBX_OTHER) + if test "${HAVE_MENUS}" = "yes" ; then AC_DEFINE(HAVE_MENUS, 1, [Define to 1 if you have mouse menus. @@ -2812,6 +2957,20 @@ if test "${REL_ALLOC}" = "yes" ; then fi +if test "$opsys" = "cygwin"; then + CYGWIN_OBJ="sheap.o" + ## Cygwin differs because of its unexec(). + PRE_ALLOC_OBJ= + POST_ALLOC_OBJ="lastfile.o vm-limit.o" +else + CYGWIN_OBJ= + PRE_ALLOC_OBJ=lastfile.o + POST_ALLOC_OBJ="\$(vmlimitobj)" +fi +AC_SUBST(CYGWIN_OBJ) +AC_SUBST(PRE_ALLOC_OBJ) +AC_SUBST(POST_ALLOC_OBJ) + AH_TOP([/* GNU Emacs site configuration template file. Copyright (C) 1988, 1993, 1994, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. @@ -2898,9 +3057,6 @@ AH_BOTTOM([ parallel this exactly since GNUstep is multi-OS. */ #ifdef HAVE_NS # ifdef NS_IMPL_GNUSTEP -/* See also .m.o rule in Makefile.in */ -/* FIXME: are all these flags really needed? Document here why. */ -# define C_SWITCH_X_SYSTEM -D_REENTRANT -fPIC -fno-strict-aliasing /* GNUstep needs a bit more pure memory. Of the existing knobs, SYSTEM_PURESIZE_EXTRA seems like the least likely to cause problems. */ # define SYSTEM_PURESIZE_EXTRA 30000 @@ -3162,7 +3318,7 @@ test "${exec_prefix}" != NONE && # the C preprocessor to some helpful value like 1, or maybe the empty # string. Needless to say consequent macro substitutions are less # than conducive to the makefile finding the correct directory. -[cpp_undefs="`echo $srcdir $configuration $canonical | +[cpp_undefs="`echo $srcdir $configuration $canonical unix | sed -e 's/[^a-zA-Z0-9_]/ /g' -e 's/^/ /' -e 's/ *$//' \ -e 's/ */ -U/g' -e 's/-U[0-9][^ ]*//g'`"]