view nt/make-build-dir @ 5168:cf900a2f1fa3

extract gap array from extents.c, use in range tables -------------------- ChangeLog entries follow: -------------------- src/ChangeLog addition: 2010-03-22 Ben Wing <ben@xemacs.org> * Makefile.in.in (objs): * array.c: * array.c (gap_array_adjust_markers): * array.c (gap_array_move_gap): * array.c (gap_array_make_gap): * array.c (gap_array_insert_els): * array.c (gap_array_delete_els): * array.c (gap_array_make_marker): * array.c (gap_array_delete_marker): * array.c (gap_array_delete_all_markers): * array.c (gap_array_clone): * array.h: * depend: * emacs.c (main_1): * extents.c: * extents.c (EXTENT_GAP_ARRAY_AT): * extents.c (extent_list_num_els): * extents.c (extent_list_locate): * extents.c (extent_list_at): * extents.c (extent_list_delete_all): * extents.c (allocate_extent_list): * extents.c (syms_of_extents): * extents.h: * extents.h (XEXTENT_LIST_MARKER): * lisp.h: * rangetab.c: * rangetab.c (mark_range_table): * rangetab.c (print_range_table): * rangetab.c (range_table_equal): * rangetab.c (range_table_hash): * rangetab.c (verify_range_table): * rangetab.c (get_range_table_pos): * rangetab.c (Fmake_range_table): * rangetab.c (Fcopy_range_table): * rangetab.c (Fget_range_table): * rangetab.c (put_range_table): * rangetab.c (Fclear_range_table): * rangetab.c (Fmap_range_table): * rangetab.c (unified_range_table_bytes_needed): * rangetab.c (unified_range_table_copy_data): * rangetab.c (unified_range_table_lookup): * rangetab.h: * rangetab.h (struct range_table_entry): * rangetab.h (struct Lisp_Range_Table): * rangetab.h (rangetab_gap_array_at): * symsinit.h: Rename dynarr.c to array.c. Move gap array from extents.c to array.c. Extract dynarr, gap array and stack-like malloc into new file array.h. Rename GAP_ARRAY_NUM_ELS -> gap_array_length(). Add gap_array_at(), gap_array_atp(). Rewrite range table code to use gap arrays. Make put_range_table() smarter so that its operation is O(log n) for adding a localized range. * gc.c (lispdesc_block_size_1): Don't ABORT() when two elements are located at the same place. This will happen with a size-0 gap array -- both parts of the array (before and after gap) are in the same place.
author Ben Wing <ben@xemacs.org>
date Mon, 22 Mar 2010 19:12:15 -0500
parents 4542b72c005e
children 308d34e9f07d
line wrap: on
line source

: #-*- Perl -*-

# Create skeleton build tree
#
# Copyright (C) 2003 Ben Wing.
#
# This file is part of XEmacs.
#
# XEmacs 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.
#
# XEmacs 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 XEmacs; see the file COPYING.  If not, write to
# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
# Author: Ben Wing <ben@xemacs.org>
#
# Synched up with: Not in FSF.

eval 'exec perl -w -S $0 ${1+"$@"}'
    if 0;

use File::Copy;
use File::Basename;
use Cwd;

die "Creates a skeleton build tree for use with SOURCE_DIR in config.inc.

Usage: $0 PATH
" if ($#ARGV);

my $path = $ARGV[0];
# Sometimes perl sucks, too.  To get the equivalent of expand-file-name
# in a reliable way, you have to do really weird shit, it seems.
my $cwd = cwd ();
$0 =~ s|\\|/|g;
chdir (dirname ($0));
my $srcroot = dirname (cwd ());

# Convert the path to MS Windows format if we're running Cygwin Perl.
chomp ($srcroot = `cygpath -w $srcroot`) if ($^O eq "cygwin");
$srcroot =~ s|/|\\|g;

chdir ($cwd);

print "Creating skeleton build tree in $path\n";
mkdir $path if ! -e $path;
mkdir "$path/nt" if ! -e "$path/nt";
copy("$srcroot/nt/xemacs.mak", "$path/nt/xemacs.mak") if ! -e "$path/nt/xemacs.mak";

&HackFile ("config.inc.samp");
&HackFile ("config.inc") if -e "$srcroot/nt/config.inc";

sub HackFile
{
  my $file = $_[0];
  if (! -e "$path/nt/$file")
    {	
      open IN, "<$srcroot/nt/$file";
      open OUT, ">$path/nt/$file";

      while (<IN>)
	{
	  # Must hack away CRLF junk.  Perl sucks again.  Wouldn't it be
	  # nice if perl handled this right??  Really can't be that hard!!!
	  s/\r\n/\n/g;

	  # hack the SOURCE_DIR line to point back to the source.
	  s!^# SOURCE_DIR=.*!SOURCE_DIR=$srcroot!;

	  print OUT;
	}

      close IN;
      close OUT;
    }
}