ports/63695: Patch to make editors/emacs21 work on amd64

Andrew Heybey ath at niksun.com
Wed Mar 3 13:50:28 UTC 2004


>Number:         63695
>Category:       ports
>Synopsis:       Patch to make editors/emacs21 work on amd64
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Wed Mar 03 05:50:27 PST 2004
>Closed-Date:
>Last-Modified:
>Originator:     Andrew Heybey
>Release:        FreeBSD 5.2-CURRENT amd64
>Organization:
NIKSUN, Inc.
>Environment:
System: FreeBSD sledge.lab.niksun.com 5.2-CURRENT FreeBSD 5.2-CURRENT #0: Mon Mar 1 20:02:43 EST 2004 jkim at sledge.lab.niksun.com:/usr/src/sys/amd64/compile/SLEDGE amd64

editors/emacs21 port version 21.3_2

>Description:

Make emacs21 port compile and run on amd64.

>How-To-Repeat:

cd /usr/ports/editors/emacs21; make

>Fix:

Place attached files in /usr/ports/editors/emacs21/files.  These may
not be the absolute Right Thing, but they work for me.
pathch-src:m:amd64.h is a new file, patch-configure.in has been
modified from the current version in the port.  I would like to credit
the source of this amd64.h, but I can no longer remember which google
result it came from...

--- patch-src:m:amd64.h begins here ---
--- /dev/null	Wed Feb 25 21:55:00 2004
+++ src/m/amd64.h	Wed Feb 25 21:53:32 2004
@@ -0,0 +1,135 @@
+/* machine description file for AMD x86-64.
+   Copyright (C) 2002 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 2, 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="linux"  */
+
+#define BITS_PER_LONG           64
+#define BITS_PER_EMACS_INT      64
+#ifndef _LP64
+#define _LP64			/* Done on Alpha -- not sure if it
+				   should be here.  -- fx */
+#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
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts.  */
+
+/* #define WORD_MACHINE  */
+
+/* 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 */
+/* __x86_64 defined automatically.  */
+
+/* Use type 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.  */
+
+#define 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 CANNOT_DUMP on machines where unexec does not work.
+   Then the function dump-emacs will not be defined
+   and temacs will do (load "loadup") automatically unless told otherwise.  */
+
+/* #define CANNOT_DUMP */
+
+/* Define VIRT_ADDR_VARIES if the virtual addresses of
+   pure and impure space as loaded can vary, and even their
+   relative order cannot be relied on.
+
+   Otherwise Emacs assumes that text space precedes data space,
+   numerically.  */
+
+#define VIRT_ADDR_VARIES  /* XXX */
+
+/* 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 C_ALLOCA */      /* XXX */
+#define HAVE_ALLOCA
+
+/* Define NO_REMAP if memory segmentation makes it not work well
+   to change the boundary between the text section and data section
+   when Emacs is dumped.  If you define this, the preloaded Lisp
+   code will not be sharable; but that's better than failing completely.  */
+
+#define NO_REMAP  /* XXX */
+
+#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)
+
+/* #undef START_FILES */ /* XXX */
+/* #define START_FILES pre-crt0.o /usr/lib64/crt1.o /usr/lib64/crti.o */ /* XXX */
+
+/* #undef LIB_STANDARD */                                    /* XXX */
+/* #define LIB_STANDARD -lgcc -lc -lgcc /usr/lib64/crtn.o */ /* XXX */
--- patch-src:m:amd64.h ends here ---

--- patch-configure.in begins here ---
--- configure.in.orig	Sun Mar 16 17:06:05 2003
+++ configure.in	Wed Feb 25 21:56:37 2004
@@ -179,6 +179,18 @@
 machine='' opsys='' unported=no
 case "${canonical}" in
 
+  ## FreeBSD ports
+  *-*-freebsd* )
+    opsys=freebsd
+    case "${canonical}" in
+      alpha*-*-freebsd*)       machine=alpha ;;
+      ia64-*-freebsd*)         machine=ia64 ;;
+      i[3456]86-*-freebsd*)    machine=intel386 ;;
+      sparc64-*-freebsd*)      machine=sparc ;;
+      amd64-*-freebsd*)        machine=amd64 ;;
+    esac
+  ;;
+
   ## NetBSD ports
   *-*-netbsd* )
     opsys=netbsd
@@ -1032,7 +1044,6 @@
 				;;
       *-sysv4.2uw* )	  	opsys=unixware; NON_GNU_CPP=/lib/cpp ;;
       *-386bsd* )	        opsys=386bsd ;;
-      *-freebsd* )	        opsys=freebsd ;;
       *-nextstep* )             opsys=nextstep ;;
       ## Otherwise, we'll fall through to the generic opsys code at the bottom.
     esac
@@ -2050,6 +2061,7 @@
 # Solaris requires -lintl if you want strerror (which calls dgettext)
 # to return localized messages.
 AC_CHECK_LIB(intl, dgettext)
+AC_CHECK_LIB(xpg4, _xpg4_setrunelocale)
 
 AC_MSG_CHECKING(whether localtime caches TZ)
 AC_CACHE_VAL(emacs_cv_localtime_cache,
--- patch-configure.in ends here ---


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



More information about the freebsd-ports-bugs mailing list