Subject: bug#507: compilation problem under Solaris

From: Glenn Morris <[email-masked]>
Date: Mon, 30 Jun 2008 16:30:29 -0400

"Langella Raphael" wrote:

> I'm compiling Emacs 22.2 under Sparc/Solaris 9. I've got librairies
> under non-standard directories, so I've set LDFLAGS and CPPFLAGS with -I
> and -L options to include these directories. The path to those
> directories has the string "sparc" within. In src/Makefile, "sparc" has
> been replaced by "1 " on the lines defining ALL_CFLAGS and LIBW. I've
> corrected it manually and it compiles fine.

Please try this patch to Emacs 22's configure, followed by
re-configuring.

*** configure.ORIG	2008-06-30 13:26:14.000000000 -0700
--- configure	2008-06-30 13:27:33.000000000 -0700
***************
*** 23173,23178 ****
--- 23173,23188 ----
  test "${exec_prefix}" != NONE &&
    exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`
  
+ # Now get this: Some word that is part of the ${srcdir} directory name
+ # or the ${configuration} value might, just might, happen to be an
+ # identifier like `sun4' or `i386' or something, and be predefined by
+ # 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 |
+   sed -e 's/[^a-zA-Z0-9_]/ /g' -e 's/^/ /' -e 's/  *$//' \
+   -e 's/  */ -U/g' -e 's/-U[0-9][^ ]*//g'`"
+ 
  ## Check if the C preprocessor will convert `..' to `. .'.  If so, set
  ## CPP_NEED_TRADITIONAL to `yes' so that the code to generate Makefile
  ## from Makefile.c can correctly provide the arg `-traditional' to the
***************
*** 23751,23757 ****
  #
  # INIT-COMMANDS
  #
! GCC="$GCC" NON_GNU_CPP="$NON_GNU_CPP" CPP="$CPP" CPP_NEED_TRADITIONAL="$CPP_NEED_TRADITIONAL" CPPFLAGS="$CPPFLAGS"
  
  _ACEOF
  
--- 23761,23767 ----
  #
  # INIT-COMMANDS
  #
! GCC="$GCC" NON_GNU_CPP="$NON_GNU_CPP" CPP="$CPP" CPP_NEED_TRADITIONAL="$CPP_NEED_TRADITIONAL" CPPFLAGS="$CPPFLAGS" cpp_undefs="$cpp_undefs"
  
  _ACEOF
  
***************
*** 24397,24412 ****
  # and lib-src/Makefile from ${srcdir}/lib-src/Makefile.c
  # This must be done after src/config.h is built, since we rely on that file.
  
- # Now get this: Some word that is part of the ${srcdir} directory name
- # or the ${configuration} value might, just might, happen to be an
- # identifier like `sun4' or `i386' or something, and be predefined by
- # 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.
- undefs="`echo $top_srcdir $configuration $canonical |
- sed -e 's/[^a-zA-Z0-9_]/ /g' -e 's/^/ /' -e 's/  *$//' \
-     -e 's/  */ -U/g' -e 's/-U[0-9][^ ]*//g' \
- `"
  
  echo creating src/epaths.h
  ${MAKE-make} epaths-force
--- 24407,24412 ----
***************
*** 24426,24432 ****
    sed -e '1,/start of cpp stuff/d'\
        -e 's,/\*\*/#\(.*\)$,/* \1 */,' \
        < Makefile.c > junk.c
!   $CPP $undefs -I. -I$srcdir/src $CPPFLAGS junk.c | \
        sed -e 's/^ /	/' -e '/^#/d' -e '/^[ 	]*$/d' > junk2.c
    cat junk1.c junk2.c > Makefile.new
    rm -f junk.c junk1.c junk2.c
--- 24426,24432 ----
    sed -e '1,/start of cpp stuff/d'\
        -e 's,/\*\*/#\(.*\)$,/* \1 */,' \
        < Makefile.c > junk.c
!   $CPP $cpp_undefs -I. -I$srcdir/src $CPPFLAGS junk.c | \
        sed -e 's/^ /	/' -e '/^#/d' -e '/^[ 	]*$/d' > junk2.c
    cat junk1.c junk2.c > Makefile.new
    rm -f junk.c junk1.c junk2.c
***************
*** 24442,24448 ****
    sed -e '1,/start of cpp stuff/d'\
        -e 's,/\*\*/#\(.*\)$,/* \1 */,' \
        < Makefile.c > junk.c
!   $CPP $undefs -I. -I$srcdir/src $CPPFLAGS junk.c | \
        sed -e 's/^ /	/' -e '/^#/d' -e '/^[ 	]*$/d' > junk2.c
    cat junk1.c junk2.c > Makefile.new
    rm -f junk.c junk1.c junk2.c
--- 24442,24448 ----
    sed -e '1,/start of cpp stuff/d'\
        -e 's,/\*\*/#\(.*\)$,/* \1 */,' \
        < Makefile.c > junk.c
!   $CPP $cpp_undefs -I. -I$srcdir/src $CPPFLAGS junk.c | \
        sed -e 's/^ /	/' -e '/^#/d' -e '/^[ 	]*$/d' > junk2.c
    cat junk1.c junk2.c > Makefile.new
    rm -f junk.c junk1.c junk2.c