Commit 4537179d authored by Adrian Robert's avatar Adrian Robert

make more parallel to other platforms

parent 2a7973b6
2008-07-17 Adrian Robert <Adrian.B.Robert@gmail.com>
* README.txt
* compile: Remove.
* README
* INSTALL: New files.
* FOR_RELEASE: Updated.
2008-07-15 Adrian Robert <Adrian.B.Robert@gmail.com>
* Cocoa/Contents/Resources/Credits.html: Change URL from sf.net to
GNU.org.
......
......@@ -3,7 +3,8 @@
* BUGS
* NON-SPECIFIC
** Find out why char_quoted() in syntax.c gets called with Fix char_quoted's workaround.
** Find out why char_quoted() in syntax.c gets called with charpos < 2 ||
bytepos < 2 only under NS port.
** Remove Feval calls relating to insert working text in isearch mode.
......@@ -13,6 +14,9 @@
** config improvements (Dan C.)
** numeric keysetting bug
* Mac-related:
** open file:/// URLs
......@@ -30,8 +34,9 @@
* Cursor:
** ns_cursor_blink_rate: when set in preferences, somehow save the option (but
calling custom-save-all from this causes error)
** ns_cursor_blink_rate: change to use generic code; also, when set in
preferences, somehow save the option (but calling custom-save-all
from this causes error)
** cursor nonerase on certain Leopard and Tiger installations
......@@ -41,17 +46,6 @@
** cursor-over bugs w/some scripts (move around in HELLO to see)
Keyboard:
On a German (PowerBook?) keyboard alt-` produces the correct ˚, without alt modifier only the message “<S-268632064> is undefined” is produced. Peter Maurer’s Key codes shows:
* Modifier Change: ⇧ 131330/0x20102
* Key Down/Up event: ⇧ 24/0x18
[note, this is += key on German KB setting on US keyboard]
[unable to reproduce w/German KB setting -- need German laptop?]
** numeric keysetting bug
* Other:
** better recog of unicode scripts / Greek / composition
......
Copyright (C) 2008 Free Software Foundation, Inc.
See the end of the file for license conditions.
Compilation
-----------
In the top-level directory, use:
./configure --with-ns
make -j2
Make the -j higher on multi-core systems, usually one higher than number of
cores is best.
This will compile all the files, but emacs will not be able to be run except
in -nw (terminal) mode.
In order to run Emacs.app, you must run:
make install
This will assemble the app in nextstep/Emacs.app.
If you pass the --disable-ns-self-contained option to configure, the lisp
files will be installed under whatever 'prefix' is set to (defaults to
/usr/local). The bundle will be smaller, but depend on these resources (may
require 'sudo' for "make install").
On OS X you can also open Cocoa/Emacs.xcodeproj and build it again there. You
may need to set some directories. (Note, ZeroLink currently does not work
with Emacs owing to the use of private_extern in the code as well as some
other, unidentifiable problem.) Before doing this you must run "make install"
once as outlined above, to set up the lisp resources.
On GNUstep, you CAN'T use ProjectCenter, since PC cannot work with files
outside of its project directory.
Installation
------------
Move nextstep/Emacs.app to any desired install location.
Distributions and Universal Binaries
------------------------------------
Building as outlined above will create ordinary binaries running on your
architecture only. To create universal binaries, set CFLAGS to include
"-arch ppc -arch i386".
Improve Ctrl-G Handling
-----------------------
To enable a version of the code that handles ctrl-g more responsively in
certain cases -- but may introduce other glitches -- pass
"--enable-cocoa-experimental-ctrl-g" to configure.
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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>.
......@@ -4,11 +4,12 @@ See the end of the file for license conditions.
Emacs.app
=========
This file introduces the NeXTstep-based port of GNU Emacs, known as Emacs.app,
which runs on on many POSIX systems and possibly W32 using the GNUstep
libraries and on MacOS X systems using the Cocoa libraries. The directory
"nextstep" and its subdirectories "Cocoa" and "GNUstep" contain files
relevant to building and running on these systems.
This file introduces the NeXTstep-based port of GNU Emacs, known as
Emacs.app, which runs on on many POSIX systems and possibly W32 using
the GNUstep libraries and on MacOS X systems using the Cocoa
libraries. The directory "nextstep" and its subdirectories "Cocoa"
and "GNUstep" contain files relevant to building and running on these
systems.
Those primarily responsible for the port (in chronological order) were:
......@@ -45,25 +46,7 @@ tweaking.
Compilation
-----------
Run "./compile" in this directory, which will create a self-contained
Emacs.app under 'build/'. This can be moved anywhere and run. To create a
shared-lisp build, do "sudo ./compile -shared <install_root>". Set
<install_root> to where the lisp will go, for example /usr/local to end up
with /usr/local/shared/emacs/...
See the script itself for further details, and customizations.
You can rerun configure and/or run 'make' manually in the top-level or src
directories to refresh nextstep/build/Emacs.app. (Or edit the "compile"
script.)
On OS X you can also open Cocoa/Emacs.xcodeproj and build it again there. (Note,
ZeroLink currently does not work with Emacs owing to the use of private_extern
in the code as well as some other, unidentifiable problem.) Before doing this
you must run 'compile' once as outlined above, to set up the lisp resources.
On GNUstep, you CAN'T use ProjectCenter, since PC cannot work with files
outside of its project directory.
See INSTALL.
Usage
......@@ -100,30 +83,6 @@ and was successively updated to OpenStep, Rhapsody, OS X, and then finally
GNUstep, tracking GNU emacs core releases in the meantime.
Files specific to the port
--------------------------
src/nsfns.m
src/nsfont.m
src/nsgui.h
src/nsimage.m
src/nsmenu.m
src/nsselect.m
src/nsterm.h
src/nsterm.m
lisp/ns-grabenv.el
lisp/ns-carbon-compat.el
lisp/term/ns-win.el
lib-src/mac-fix-env.m
doc/emacs/ns-emacs.texi
etc/Emacs.clr
nextstep/
Files modified for port:
many -- look for HAVE_NS / NS_IMPL_... #ifdefs
Release History
---------------
......
#!/bin/sh
# Copyright (C) 2008 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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>.
# This script configures and builds Emacs to the subdirectory ./build .
#
# If --shared-lisp 'install_prefix' is given, lisp files will be installed to
# install_prefix/share/emacs/23.0.0. This option must be run with 'sudo'.
#
# Otherwise (default) lisp will be installed under Emacs.app/Contents/Resources.
# It does this by configuring it to install there, and running "make install".
#
# Some setup is different for GNUstep vs. Cocoa, and it determines which one
# it's on using 'uname'.
# After it is run, Emacs can be run directly from the .app, which itself
# can be placed anywhere.
# Further C development can be done using Xcode on OS X (not tested recently),
# or by typing './remake' in the '../src' directory. Further Lisp
# development can be done by either copying the files you modify
# into install location, or running this script again.
# Set up path and config variables.
PREFIX=""
while [ $# -gt 0 ]; do
case "$1" in
--shared-lisp=*)
PREFIX=`echo "$1" | sed s/--shared-lisp=//`
shift
;;
--enable-local-lisp-path=*)
locallisppath=`echo "$1" | sed s/--enable-local-lisp-path=//`
shift
;;
*)
echo "Usage: $0 [--shared-lisp='install_root' --enable-local-lisp-path='some path(s)']"
exit
esac
done
DISTDIR=`pwd`/..
#OPTFLAGS='-g -O2'
OPTFLAGS='-g'
# MAC OS X
if [ `uname` == "Darwin" ]; then
BASEDIR=`pwd`/build/Emacs.app/Contents
BINDIR=${BASEDIR}/MacOS
if [ "x$PREFIX" == "x" ]; then
PREFIX=${BASEDIR}/Resources
fi
# If you want to try experimental enhanced Ctrl-g support, add to NS_CFG_OPTS:
# --enable-cocoa-experimental-ctrl-g
# (See bottom of USAGE.txt)
NS_CFG_OPTS="--with-ns --without-x --without-freetype --prefix=${PREFIX} --exec_prefix=${BASEDIR}/MacOS --libexecdir=${BASEDIR}/MacOS/libexec"
# --enable-cocoa-experimental-ctrl-g"
# MAKE="make -j3"
steve=`/usr/sbin/sysctl hw.ncpu | awk '{print $NF}'`
MAKE="make -j`expr $steve + 1`"
export CC=gcc-4.0
export MACOSX_DEPLOYMENT_TARGET=10.3
export MACOSX_DEPLOYMENT_TARGET_ppc=10.3
export MACOSX_DEPLOYMENT_TARGET_i386=10.4
export CFLAGS="$OPTFLAGS -arch ppc -arch i386"
# -universal -sdk /Developer/SDKs/MacOSX10.4u.sdk
# -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk
# GNUSTEP
else
# Currently must pass three dirs into Make process via environment variables.
source /etc/GNUstep/GNUstep.conf
if [ "x$GNUSTEP_MAKEFILES" == "x" ]; then
if [ "x$GNUSTEP_SYSTEM_ROOT" == "x" ]; then
echo "Failed to obtain any useful information from /etc/GNUstep/GNUstep.conf."
echo "Please make sure GNUstep is installed on your system."
exit
fi
GNUSTEP_MAKEFILES=${GNUSTEP_SYSTEM_ROOT}/Library/Makefiles
GNUSTEP_SYSTEM_HEADERS=${GNUSTEP_SYSTEM_ROOT}/Library/Headers
GNUSTEP_SYSTEM_LIBRARIES=${GNUSTEP_SYSTEM_ROOT}/Library/Libraries
fi
export GNUSTEP_MAKEFILES
export GNUSTEP_SYSTEM_HEADERS
export GNUSTEP_SYSTEM_LIBRARIES
BASEDIR=`pwd`/build/Emacs.app
BINDIR=${BASEDIR}
if [ "x${PREFIX}" == "x" ]; then
PREFIX=${BASEDIR}/Resources
fi
NS_CFG_OPTS="--with-ns --without-x --without-freetype --prefix=${PREFIX} --exec-prefix=${BASEDIR} --libexecdir=${BASEDIR}/libexec"
# --enable-cocoa-experimental-ctrl-g
if [ "x$MAKE" == "x" ]; then
if [ "`gmake 2>&1`" == "gmake: *** No targets specified and no makefile found. Stop." ]; then
MAKE=gmake
else
MAKE=make
fi
export MAKE
CFLAGS="$OPTFLAGS"
export CFLAGS
fi
# PENDING: Not sure why this is needed
export EMACSLOADPATH="${DISTDIR}/lisp:${DISTDIR}/lisp/emacs-lisp:${DISTDIR}/leim"
fi
# End variable setup.
###############################################################################
# Prepare a clean slate
rm -fr build/Emacs.app
# Configure if needed
cd ..
if [ ! -f Makefile ]; then
echo "./configure ${NS_CFG_OPTS}"
./configure <<EOF ${NS_CFG_OPTS}
EOF
# ./configure ${NS_CFG_OPTS}
if [ $? != 0 ]; then
echo "*** Configure run failed. ***"
echo "Please examine the above output to determine what went wrong,"
echo "edit this script (\'compile\') to fix it, and rerun."
# These are written BEFORE the job is compete, then it won't get done
# next time, causing errors about CTLau-b5, tsang-b5, PY, etc..
rm -f leim/changed.misc leim/changed.tit
exit 1
fi
fi
# Pete's addition for local lisp load-path
if [ "x$locallisppath" != "x" ]; then
echo " * Local lisp path is being enabled"
(cd src
if [ -r epaths.h-orig ]; then
# mv ../src/epaths.h-orig ../src/epaths.h
echo "### src/epaths.h-orig already exists, no further change ###"
else
mv epaths.h epaths.h-orig
printf "s,\(#define PATH_LOADSEARCH \"\),\\\1%s:,\n" "$
{locallisppath}" > locallisppath.sed
cat epaths.h-orig | sed -f locallisppath.sed > epaths.h
rm locallisppath.sed
fi)
fi
# Clean up to avoid DOC-xxx and emacs-xxx out-of-controlness
rm -f ../etc/DOC-* ../src/emacs-*
# Go (installs binaries to ./build/Emacs.app, lisp to there or PREFIX)
echo "make install"
$MAKE
status=$?
if [ -f src/epaths.h-orig ]; then
mv src/epaths.h-orig src/epaths.h
fi
if [ $status != 0 ]; then
echo "*** Compilation failed. ***"
echo "Please examine the above output to determine what went wrong,"
echo "edit the configure options in this script (\'compile\') to fix it, and rerun."
# rm -f leim/changed.misc leim/changed.tit
exit 1
fi
$MAKE install
if [ $? != 0 ]; then
echo "*** Compilation succeeded, but .app assembly failed. ***"
echo "Please examine the above output to determine what went wrong,"
echo "edit the configure options in this script (\'compile\') to fix it, and rerun."
# rm -f leim/changed.misc leim/changed.tit
exit 1
fi
# Move version stuff up to Resources
cd ${BASEDIR}/Resources
if [ -d share/emacs ]; then
# clean up self-contained build
mv -f share/emacs/*/* .
fi
if [ ! -d info ]; then
# happens on GNUstep, not OS X
mv -f share/info .
fi
rm -fr share
# Get rid of .el.gz when .elc is present.. purists will complain, but this
# knocks the app size down substantially.
cd lisp
#for f in `find . -name '*.elc' -print | sed -e s/.elc/.{el,el.gz}/`
#do
# rm -f $f
#done
# Bin cleanup
cd $BINDIR/bin
rm -f emacs emacs-23*
# Move libexec stuff up, and link it from bin
cd ../libexec
mv -f emacs/*/*/* .
rm -fr emacs
cd ../bin
ln -sf ../libexec/* .
# On OS X, install the bundled ispell
#if [ `uname` == "Darwin" ]; then
# cd $DISTDIR
# cp ispell-3.3.01/bin/ispell* ${BINDIR}/libexec
# cp -R ispell-3.3.01/lib ${BINDIR}/libexec
#fi
echo ""
echo "Build successful."
echo ""
# arch-tag: 1fda51a1-d908-4e60-ad5e-47ffbb39f18d
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment