view admin/make-emacs @ 46752:54b975949d6a

New version 2.0.5. (tramp-methods): Remove inline encoding method parameters. The encoding is now autodetected. Also shorten the list of methods (u/m distinction gone) and rename the remaining methods to have longer, but more mnemonic, names. (tramp-login-prompt-regexp, tramp-password-prompt-regexp) (tramp-wrong-passwd-regexp): Trailing `$' not needed, regexp is matched at end of buffer anyway. (tramp-yesno-prompt-regexp): New variable, for questions where the user should say "yes" or "no". (tramp-file-name-structure-unified) (tramp-file-name-structure-separate): Allow dash in method names. (tramp-actions-before-shell): New variable, contains list of pattern/action pairs. Output sent by remote end is scanned for the patterns, then the actions are executed. (tramp-multi-actions): Like `tramp-actions-before-shell', but executed for each hop in a multi-hop connection. (tramp-last-cmd-time): New variable. If nothing has been sent to remote end for 60 seconds, look to see if the remote end is still alive. (tramp-perl-mime-encode, tramp-perl-mime-decode): Remove. It didn't work. (tramp-perl-encode, tramp-perl-decode): New variables, these require the MIME::Base64 module on the remote end. (tramp-handle-file-attributes): Restructure logic. (tramp-handle-file-attributes-with-ls) (tramp-handle-file-attributes-with-perl): More debugging. (tramp-handle-directory-files): Grok fifth arg `files-only' for XEmacs. (tramp-handle-make-directory, tramp-handle-delete-directory) (tramp-handle-delete-file, tramp-handle-insert-directory): Expand file name. (tramp-handle-shell-command): Use `when', not `if'. (tramp-handle-file-local-copy, tramp-handle-write-region): Adapt to autodetection of inline encoding. (tramp-invoke-ange-ftp): Require ange-ftp to make sure that variable ange-ftp-name-format is defined before binding it. (tramp-action-login, tramp-action-password, tramp-action-succeed) (tramp-action-permission-denied, tramp-action-yesno): Functions called from `tramp-actions-before-shell'. (tramp-multi-action-login, tramp-multi-action-password) (tramp-multi-action-succeed) (tramp-multi-action-permission-denied): Functions called from `tramp-multi-actions'. (tramp-process-one-action, tramp-process-actions): Pattern matching and action invocation code for `tramp-actions-before-shell'. (tramp-process-one-multi-action, tramp-process-multi-actions): Same for `tramp-multi-actions'. (tramp-open-connection-telnet, tramp-open-connection-rsh) (tramp-open-connection-su): Process actions instead of hardwired logic. (tramp-multi-connect-telnet, tramp-multi-connect-rlogin) (tramp-multi-connect-su): Ditto. (tramp-post-connection): New method for tramp_encode and tramp_decode scripts. (tramp-post-connection): Invoke inline autodetection code. (tramp-coding-commands): List of inline codings. (tramp-find-inline-encoding): This is the inline autodetection code. (tramp-maybe-open-connection): If nothing was sent to connection for 60 seconds, look if it connection is still alive. (tramp-send-command): Remember that something was sent to the connection. (tramp-make-tramp-file-name, tramp-make-tramp-multi-file-name): Use backticks for constructing alist. (tramp-get-encoding-command, tramp-set-encoding-command) (tramp-get-decoding-command, tramp-set-decoding-command) (tramp-get-encoding-function, tramp-set-encoding-function) (tramp-get-decoding-function, tramp-set-decoding-function): Use for results of inline autodetection. (tramp-get-encoding-command, tramp-get-decoding-command) (tramp-get-encoding-function, tramp-get-decoding-function): Remove these old functions.
author Kai Großjohann <kgrossjo@eu.uu.net>
date Tue, 30 Jul 2002 20:24:27 +0000
parents 1b65cbdd3bbd
children 23a1cea22d13
line wrap: on
line source

#! /usr/bin/perl

# Copyright (C) 2001 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.

# Build Emacs with various options for profiling, debugging,
# with and without warnings enabled etc.

require 5;
use Getopt::Long;
use File::Basename;
use Cwd;

# Default CVS sandbox directory.  Only used when called from outside
# of the sandbox.

$root = $ENV{"EMACS_ROOT"};
$root = "/gd/gnu/emacs" unless $root;

# Default make command.

$make = $ENV{"EMACS_MAKE"};
$make = "gmake" unless $make;

$rc = GetOptions ("help" => \$help,
		  "enable-checking" => \$enable_checking,
		  "no-warn" => \$no_warn,
		  "check-marked" => \$check_marked,
		  "all" => \$all,
		  "no-optim" => \$no_optim,
		  "union-type" => \$union_type,
		  "gprof" => \$profile,
		  "malloc-check" => \$malloc_check,
		  "no-mcheck" => \$no_mcheck,
		  "alias" => \$aliasing,
                  "boot" => \$boot,
		  "wall" => \$wall,
		  "gcc3" => \$gcc3,
		  "trace-selection" => \$trace_selection,
		  "trace-move" => \$trace_move,
		  "stabs" => \$use_stabs,
		  "optim" => \$optim);

if ($rc == 0 || $help)
 {
   print <<USAGE;
make-emacs [options] ...

Build Emacs.

 --help			show this help
 --all			make clean versionclean first
 --boot			make boostrap, log to boot.log
 --enable-checking	ENABLE_CHECKING=1 (implies Lisp union type)
 --no-warn		disable warnings
 --check-marked		GC_CHECK_MARKED_OBJECTS=1
 --optim		no debug defines
 --gprof		make Emacs for profiling
 --union-type		define USE_LISP_UNION_TYPE (bad for GDB)
 --malloc-check		define GC_MALLOC_CHECK
 --no-mcheck		dont define GC_MCHECK
 --wall			compile with -Wall
 --gcc3			use GCC 3.0 (30% slower compilation, slower code)
 --trace-selection	print traces in xselect.c
 --trace-move		print traces for move_it* functions
 --stabs		use -gstabs instead -g

Default is to compile with warnings, with -DGC_MCHECK=1, and
with -DGLYPH_DEBUG=1.

USAGE
   exit 1;
 }

# Chdir to the top-level directory of the tree.  If not in a tree
# containing Emacs, use the default.

while (! -f "src/emacs.c" && cwd () ne "/")
  {
    chdir "..";
  }

chdir $root if cwd () eq "/";
chdir "./src";
print "Build in ", cwd (), "\n";

# If first arg is `all' or if `--all' specified, ensure a clean
# build.

if (@ARGV && $ARGV[0] eq "all")
  {
    $all = 1;
    shift @ARGV;
  }

system ("$make clean versionclean") if $all;

if ($wall) 
  {
    $warn = "-Wall";
  }
elsif (!$no_warn)
  {
    $warn = "-Wpointer-arith -Wchar-subscripts -Wformat -Wimplicit-int";
    $warn = "$warn -Wreturn-type -Wswitch -Wuninitialized";
  }

$defs = "-DGLYPH_DEBUG=1" unless $optim;
$defs = "$defs -DGC_CHECK_MARKED_OBJECTS=1" if $check_marked;
$defs = "$defs -DENABLE_CHECKING=1" if $enable_checking;

if ($profile) 
  {
    $opts = "-pg";
    $defs = "$defs -DPROFILING=1";
  }
else
  {
    if ($use_stabs) 
      {
	$opts = "-gstabs";
      }
    else
      {
	$opts = "-g";
      }
  }

$defs = "$defs -DUSE_LISP_UNION_TYPE" if $union_type;
$defs = "$defs -DGC_MALLOC_CHECK=1 -DGC_PROTECT_MALLOC_STATE=1" if $malloc_check;
$defs = "$defs -DGC_MCHECK=1" unless $no_mcheck;

$defs = "$defs -DTRACE_SELECTION" if $trace_selection;
$defs = "$defs -DDEBUG_TRACE_MOVE" if $trace_move;

# arch=pentium leads to slightly faster code than without.
$opts = "$opts -march=pentiumpro";

if ($optim)
  {
    $opts = "$opts -pipe -O3";
  }
elsif ($no_optim)
  {
    $opts = "$opts -pipe -fno-inline";
  }
else
  {
    $opts = "$opts -O -pipe -fno-inline";
  }

$opts = "$opts -fstrict-aliasing" if $aliasing;

$opts = "$opts $defs" if $defs;
$opts = "$opts $warn" if $warn;

$cc = "/usr/bin/gcc";
$cc = "/gd/local/bin/gcc" if $gcc3;

if ($boot)
  {
    chdir "..";
    system "mv boot.log boot.log.old" if -f "boot.log";
    exit system "script boot.log $make CC=\"$cc\" CFLAGS=\"$opts\" bootstrap";
  }

exit system "$make CC=\"$cc\" CFLAGS=\"$opts\" @ARGV";

# Local Variables:
# mode: cperl
# End: