Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 Mar 2004 22:08:00 -0800 (PST)
From:      Alex Varju <varju@webct.com>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   ports/64084: Fix amd64 build of editors/emacs21 port
Message-ID:  <200403110608.i2B680Bi044431@alex.madd.tnmc.ca>
Resent-Message-ID: <200403110610.i2B6ABRc036953@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         64084
>Category:       ports
>Synopsis:       Fix amd64 build of editors/emacs21 port
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Wed Mar 10 22:10:11 PST 2004
>Closed-Date:
>Last-Modified:
>Originator:     Alex Varju
>Release:        FreeBSD 5.2.1-RELEASE amd64
>Organization:
WebCT
>Environment:
System: FreeBSD alex.madd.tnmc.ca 5.2.1-RELEASE FreeBSD 5.2.1-RELEASE #0: Tue Feb 24 23:14:55 GMT 2004 root@quynh.NUXI.org:/usr/obj/usr/src/sys/GENERIC amd64
>Description:
This patch allows the editors/emacs21 port to build on amd64 machines.
This is based on patches sent to the freebsd-amd64 lists by James Van
Artsdalen in December.

>How-To-Repeat:

>Fix:

Index: ports/editors/emacs21/files/patch-configure.in
===================================================================
RCS file: /home/freebsd/cvsroot/ports/editors/emacs21/files/patch-configure.in,v
retrieving revision 1.3
diff -u -r1.3 patch-configure.in
--- ports/editors/emacs21/files/patch-configure.in	26 Nov 2003 15:05:08 -0000	1.3
+++ ports/editors/emacs21/files/patch-configure.in	11 Mar 2004 05:31:06 -0000
@@ -1,6 +1,6 @@
 --- configure.in.orig	Sun Mar 16 14:06:05 2003
-+++ configure.in	Thu Nov 20 13:54:06 2003
-@@ -179,6 +179,17 @@
++++ configure.in	Wed Mar 10 21:30:53 2004
+@@ -179,6 +179,18 @@
  machine='' opsys='' unported=no
  case "${canonical}" in
  
@@ -9,6 +9,7 @@
 +    opsys=freebsd
 +    case "${canonical}" in
 +      alpha*-*-freebsd*)       machine=alpha ;;
++      amd64-*-freebsd*)        machine=amd64 ;;
 +      ia64-*-freebsd*)         machine=ia64 ;;
 +      i[3456]86-*-freebsd*)    machine=intel386 ;;
 +      sparc64-*-freebsd*)      machine=sparc ;;
@@ -18,7 +19,7 @@
    ## NetBSD ports
    *-*-netbsd* )
      opsys=netbsd
-@@ -1032,7 +1043,6 @@
+@@ -1032,7 +1044,6 @@
  				;;
        *-sysv4.2uw* )	  	opsys=unixware; NON_GNU_CPP=/lib/cpp ;;
        *-386bsd* )	        opsys=386bsd ;;
@@ -26,7 +27,7 @@
        *-nextstep* )             opsys=nextstep ;;
        ## Otherwise, we'll fall through to the generic opsys code at the bottom.
      esac
-@@ -2050,6 +2060,7 @@
+@@ -2050,6 +2061,7 @@
  # Solaris requires -lintl if you want strerror (which calls dgettext)
  # to return localized messages.
  AC_CHECK_LIB(intl, dgettext)
Index: ports/editors/emacs21/files/patch-src:m:amd64.h
===================================================================
--- /dev/null	Wed Mar 10 21:55:00 2004
+++ ports/editors/emacs21/files/patch-src:m:amd64.h	Wed Mar 10 21:31:52 2004
@@ -0,0 +1,195 @@
+--- src/m/amd64.h.orig	Wed Dec 31 18:00:00 1969
++++ src/m/amd64.h	Thu Dec 18 00:21:51 2003
+@@ -0,0 +1,181 @@
++/* machine description file For the amd64 chip.
++   Copyright (C) 1994, 1997, 1999 Free Software Foundation, Inc.
++
++This file is part of GNU Emacs.
++
++GNU Emacs is free software; you can redistribute it and/or modify
++it under the terms of the GNU General Public License as published by
++the Free Software Foundation; either version 1, or (at your option)
++any later version.
++
++GNU Emacs is distributed in the hope that it will be useful,
++but WITHOUT ANY WARRANTY; without even the implied warranty of
++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++GNU General Public License for more details.
++
++You should have received a copy of the GNU General Public License
++along with GNU Emacs; see the file COPYING.  If not, write to
++the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++Boston, MA 02111-1307, USA.  */
++
++
++/* The following line tells the configuration script what sort of 
++   operating system this machine is likely to run.
++   USUAL-OPSYS="note"
++
++NOTE-START
++Use -opsystem=freebsd
++NOTE-END
++
++*/
++
++#define BITS_PER_LONG 64
++#define BITS_PER_EMACS_INT 64
++#ifndef _LP64
++#define _LP64
++#endif
++
++/* Define WORDS_BIG_ENDIAN iff lowest-numbered byte in a word
++   is the most significant byte.  */
++
++#undef WORDS_BIG_ENDIAN
++
++/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
++ * group of arguments and treat it as an array of the arguments.  */
++
++#define NO_ARG_ARRAY
++
++/* Now define a symbol for the cpu type, if your compiler
++   does not define it automatically:
++   Ones defined so far include vax, m68000, ns16000, pyramid,
++   orion, tahoe, APOLLO and many others */
++
++/* __amd64__ defined automatically */
++
++
++/* Use type EMACS_INT rather than a union, to represent Lisp_Object */
++/* This is desirable for most machines.  */
++
++#define NO_UNION_TYPE
++
++/* Define the type to use.  */
++#define EMACS_INT long
++#define EMACS_UINT unsigned long
++#define SPECIAL_EMACS_INT
++
++/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
++   the 24-bit bit field into an int.  In other words, if bit fields
++   are always unsigned.
++
++   If you use NO_UNION_TYPE, this flag does not matter.  */
++
++#undef EXPLICIT_SIGN_EXTEND
++
++/* Data type of load average, as read out of kmem.  */
++
++#define LOAD_AVE_TYPE long
++
++/* Convert that into an integer that is 100 for a load average of 1.0  */
++
++#define LOAD_AVE_CVT(x) (int) (((double) (x)) * 100.0 / FSCALE)
++
++/* Define C_ALLOCA if this machine does not support a true alloca
++   and the one written in C should be used instead.
++   Define HAVE_ALLOCA to say that the system provides a properly
++   working alloca function and it should be used.
++   Define neither one if an assembler-language alloca
++   in the file alloca.s should be used.  */
++
++#define HAVE_ALLOCA
++
++/* GNU malloc and the relocating allocator do not work together
++   with X.   [Who wrote that?]  */
++
++/* May 1995: reportedly [Rainer Schoepf <schoepf@uni-mainz.de>] both the
++   system and the gnu malloc system work with "alpha-dec-osf3.0" and
++   "alpha-dec-osf3.2".  */
++
++/* May 1995: it seems to me [Morten Welinder <terra@diku.dk>] that both
++   mallocs work with "alpha-dec-osf2.0", but I daren't break anything
++   right now.  Feel free to play if you want.  */
++
++/* #define SYSTEM_MALLOC */
++
++#ifdef __ELF__
++/* With ELF, make sure that all common symbols get allocated to in the
++   data section.  Otherwise, the dump of temacs may miss variables in
++   the shared library that have been initialized.  For example, with
++   GNU libc, __malloc_initialized would normally be resolved to the
++   shared library's .bss section, which is fatal.  */
++# ifdef __GNUC__
++#  define C_SWITCH_MACHINE	-fno-common
++# else
++#  error What gives?  Fix me if DEC Unix supports ELF now.
++# endif
++#endif
++
++#if defined(__OpenBSD__)
++#define ORDINARY_LINK
++#endif
++
++#ifdef __ELF__
++#undef UNEXEC
++#define UNEXEC unexelf.o
++#endif
++
++#if defined (LINUX) && __GNU_LIBRARY__ - 0 < 6
++/* This controls a conditional in main.  */
++#define LINUX_SBRK_BUG
++#endif
++
++
++#define PNTR_COMPARISON_TYPE unsigned long
++
++/* On the 64 bit architecture, we can use 60 bits for addresses */
++
++#define VALBITS         60
++
++
++/* This definition of MARKBIT is necessary because of the comparison of
++   ARRAY_MARK_FLAG and MARKBIT in an #if in lisp.h, which cpp doesn't like. */
++
++/* #define MARKBIT         0x8000000000000000L */
++
++
++/* Define XINT and XUINT so that they can take arguments of type int */
++
++#define XINT(a)  (((long) (a) << (BITS_PER_LONG - VALBITS)) >> (BITS_PER_LONG - VALBITS))
++#define XUINT(a) ((long) (a) & VALMASK)
++
++/* Define XPNTR to avoid or'ing with DATA_SEG_BITS */
++
++#define XPNTR(a) XUINT (a)
++
++#ifndef NOT_C_CODE
++/* We need these because pointers are larger than the default ints.  */
++#if !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__FreeBSD__)
++#include <alloca.h>
++#endif
++#endif /* not NOT_C_CODE */
++
++/* On the Alpha it's best to avoid including TERMIO since struct
++   termio and struct termios are mutually incompatible.  */
++/* #define NO_TERMIO */
++
++#if defined (LINUX) || defined (__NetBSD__) || defined (__OpenBSD__)
++# define TEXT_END ({ extern int _etext; &_etext; })
++# ifndef __ELF__
++#  define COFF
++#  define DATA_END ({ extern int _EDATA; &_EDATA; })
++# endif /* notdef __ELF__ */
++#endif
++
++#if (defined (__NetBSD__) || defined (__OpenBSD__)) && defined (__ELF__)
++#define HAVE_TEXT_START
++#endif
++
++/* Many Alpha implementations (e.g. gas 2.8) can't handle DBL_MIN:
++   they generate code that uses a signaling NaN instead of DBL_MIN.
++   Define DBL_MIN_REPLACEMENT to be the next value larger than DBL_MIN:
++   this avoids the assembler bug.  */
++/* #define DBL_MIN_REPLACEMENT 2.2250738585072019e-308 */
+--- src/mem-limits.h.~1~	Wed Mar  8 12:49:46 2000
++++ src/mem-limits.h	Wed Dec 17 03:15:24 2003
+@@ -98,7 +98,7 @@
+ static POINTER data_space_start;
+ 
+ /* Number of bytes of writable memory we can expect to be able to get */
+-static unsigned long lim_data;
++static rlim_t lim_data;
+ 
+ #ifdef NO_LIM_DATA
+ static void

>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200403110608.i2B680Bi044431>