Mercurial > hg > xemacs-beta
annotate Makefile.in.in @ 2720:6fa9919a9a0b
[xemacs-hg @ 2005-04-08 23:10:01 by crestani]
ChangeLog addition:
2005-04-01 Marcus Crestani <crestani@xemacs.org>
The new allocator.
New configure flag: `MC_ALLOC':
* configure.ac (XE_COMPLEX_ARG_ENABLE): Add `--enable-mc-alloc' as
a new configure flag.
* configure.in (AC_INIT_PARSE_ARGS): Add `--mc-alloc' as a new
configure flag.
* configure.usage: Add description for `mc-alloc'.
DUMP_IN_EXEC:
* Makefile.in.in: Condition the installation of a separate dump
file on !DUMP_ON_EXEC.
* configure.ac (XE_COMPLEX_ARG_ENABLE): Add
`--enable-dump-in-exec' as a new configure flag.
* configure.ac: DUMP_IN_EXEC is define as default for PDUMP but
not default for MC_ALLOC.
* configure.in (AC_INIT_PARSE_ARGS): Add `--dump-in-exec' as a
new configure flag.
* configure.in: DUMP_IN_EXEC is define as default for PDUMP but
not default for MC_ALLOC.
* configure.usage: Add description for `dump-in-exec'.
lib-src/ChangeLog addition:
2005-04-01 Marcus Crestani <crestani@xemacs.org>
The new allocator.
DUMP_IN_EXEC:
* Makefile.in.in: Only compile insert-data-in-exec if
DUMP_IN_EXEC is defined.
lisp/ChangeLog addition:
2005-04-01 Marcus Crestani <crestani@xemacs.org>
The new allocator.
MEMORY_USAGE_STATS
* diagnose.el: Add new lisp function to pretty print statistics
about the new allocator.
* diagnose.el (show-mc-alloc-memory-usage): New.
modules/ChangeLog addition:
2005-04-01 Marcus Crestani <crestani@xemacs.org>
The new allocator.
Remove Lcrecords:
* postgresql/postgresql.c (allocate_pgconn): Allocate with new
allocator.
* postgresql/postgresql.c (allocate_pgresult): Allocate PGresult
with new allocator.
* postgresql/postgresql.h (struct Lisp_PGconn): Add
lrecord_header.
* postgresql/postgresql.h (struct Lisp_PGresult): Add
lrecord_header.
* ldap/eldap.c (allocate_ldap): Allocate with new allocator.
* ldap/eldap.h (struct Lisp_LDAP): Add lrecord_header.
nt/ChangeLog addition:
2005-04-01 Marcus Crestani <crestani@xemacs.org>
The new allocator.
New configure flag: `MC_ALLOC':
* config.inc.samp: Add new flag `MC_ALLOC'.
* xemacs.mak: Add flag and configuration output for `MC_ALLOC'.
New files:
* xemacs.dsp: Add source files mc-alloc.c and mc-alloc.h.
* xemacs.mak: Add new object file mc-alloc.obj to dependencies.
src/ChangeLog addition:
2005-04-01 Marcus Crestani <crestani@xemacs.org>
The new allocator.
New configure flag: `MC_ALLOC':
* config.h.in: Add new flag `MC_ALLOC'.
New files:
* Makefile.in.in: Add new object file mc-alloc.o.
* depend: Add new files to dependencies.
* mc-alloc.c: New.
* mc-alloc.h: New.
Running the new allocator from XEmacs:
* alloc.c (deadbeef_memory): Moved to mc-alloc.c.
* emacs.c (main_1): Initialize the new allocator and add
syms_of_mc_alloc.
* symsinit.h: Add syms_of_mc_alloc.
New lrecord allocation and free functions:
* alloc.c (alloc_lrecord): New. Allocates an lrecord, includes
type checking and initializing of the lrecord_header.
* alloc.c (noseeum_alloc_lrecord): Same as above, but increments
the NOSEEUM cons counter.
* alloc.c (free_lrecord): New. Calls the finalizer and frees the
lrecord.
* lrecord.h: Add lrecord allocation prototypes and comments.
Remove old lrecord FROB block allocation:
* alloc.c (allocate_lisp_storage): Former function to expand
heap. Not needed anymore, remove.
* alloc.c: Completely remove `Fixed-size type macros'
* alloc.c (release_breathing_space): Remove.
* alloc.c (memory_full): Remove release_breathing_space.
* alloc.c (refill_memory_reserve): Remove.
* alloc.c (TYPE_ALLOC_SIZE): Remove.
* alloc.c (DECLARE_FIXED_TYPE_ALLOC): Remove.
* alloc.c (ALLOCATE_FIXED_TYPE_FROM_BLOCK): Remove.
* alloc.c (ALLOCATE_FIXED_TYPE_1): Remove.
* alloc.c (ALLOCATE_FIXED_TYPE): Remove.
* alloc.c (NOSEEUM_ALLOCATE_FIXED_TYPE): Remove.
* alloc.c (struct Lisp_Free): Remove.
* alloc.c (LRECORD_FREE_P): Remove.
* alloc.c (MARK_LRECORD_AS_FREE): Remove.
* alloc.c (MARK_LRECORD_AS_NOT_FREE): Remove.
* alloc.c (PUT_FIXED_TYPE_ON_FREE_LIST): Remove.
* alloc.c (FREE_FIXED_TYPE): Remove.
* alloc.c (FREE_FIXED_TYPE_WHEN_NOT_IN_GC): Remove.
Allocate old lrecords with new allocator:
* alloc.c: DECLARE_FIXED_TYPE_ALLOC removed for all lrecords
defined in alloc.c.
* alloc.c (Fcons): Allocate with new allocator.
* alloc.c (noseeum_cons): Allocate with new allocator.
* alloc.c (make_float): Allocate with new allocator.
* alloc.c (make_bignum): Allocate with new allocator.
* alloc.c (make_bignum_bg): Allocate with new allocator.
* alloc.c (make_ratio): Allocate with new allocator.
* alloc.c (make_ratio_bg): Allocate with new allocator.
* alloc.c (make_ratio_rt): Allocate with new allocator.
* alloc.c (make_bigfloat): Allocate with new allocator.
* alloc.c (make_bigfloat_bf): Allocate with new allocator.
* alloc.c (make_compiled_function): Allocate with new allocator.
* alloc.c (Fmake_symbol): Allocate with new allocator.
* alloc.c (allocate_extent): Allocate with new allocator.
* alloc.c (allocate_event): Allocate with new allocator.
* alloc.c (make_key_data): Allocate with new allocator.
* alloc.c (make_button_data): Allocate with new allocator.
* alloc.c (make_motion_data): Allocate with new allocator.
* alloc.c (make_process_data): Allocate with new allocator.
* alloc.c (make_timeout_data): Allocate with new allocator.
* alloc.c (make_magic_data): Allocate with new allocator.
* alloc.c (make_magic_eval_data): Allocate with new allocator.
* alloc.c (make_eval_data): Allocate with new allocator.
* alloc.c (make_misc_user_data): Allocate with new allocator.
* alloc.c (Fmake_marker): Allocate with new allocator.
* alloc.c (noseeum_make_marker): Allocate with new allocator.
* alloc.c (make_uninit_string): Allocate with new allocator.
* alloc.c (resize_string): Allocate with new allocator.
* alloc.c (make_string_nocopy): Allocate with new allocator.
Garbage Collection:
* alloc.c (GC_CHECK_NOT_FREE): Remove obsolete assertions.
* alloc.c (SWEEP_FIXED_TYPE_BLOCK): Remove.
* alloc.c (SWEEP_FIXED_TYPE_BLOCK_1): Remove.
* alloc.c (sweep_conses): Remove.
* alloc.c (free_cons): Use new allocator to free.
* alloc.c (sweep_compiled_functions): Remove.
* alloc.c (sweep_floats): Remove.
* alloc.c (sweep_bignums): Remove.
* alloc.c (sweep_ratios): Remove.
* alloc.c (sweep_bigfloats): Remove.
* alloc.c (sweep_symbols): Remove.
* alloc.c (sweep_extents): Remove.
* alloc.c (sweep_events): Remove.
* alloc.c (sweep_key_data): Remove.
* alloc.c (free_key_data): Use new allocator to free.
* alloc.c (sweep_button_data): Remove.
* alloc.c (free_button_data): Use new allocator to free.
* alloc.c (sweep_motion_data): Remove.
* alloc.c (free_motion_data): Use new allocator to free.
* alloc.c (sweep_process_data): Remove.
* alloc.c (free_process_data): Use new allocator to free.
* alloc.c (sweep_timeout_data): Remove.
* alloc.c (free_timeout_data): Use new allocator to free.
* alloc.c (sweep_magic_data): Remove.
* alloc.c (free_magic_data): Use new allocator to free.
* alloc.c (sweep_magic_eval_data): Remove.
* alloc.c (free_magic_eval_data): Use new allocator to free.
* alloc.c (sweep_eval_data): Remove.
* alloc.c (free_eval_data): Use new allocator to free.
* alloc.c (sweep_misc_user_data): Remove.
* alloc.c (free_misc_user_data): Use new allocator to free.
* alloc.c (sweep_markers): Remove.
* alloc.c (free_marker): Use new allocator to free.
* alloc.c (garbage_collect_1): Remove release_breathing_space.
* alloc.c (gc_sweep): Remove all the old lcrecord and lrecord
related stuff. Sweeping now works like this: compact string
chars, finalize, sweep.
* alloc.c (common_init_alloc_early): Remove old lrecord
initializations, remove breathing_space.
* emacs.c (Fdump_emacs): Remove release_breathing_space.
* lisp.h: Remove prototype for release_breathing_space.
* lisp.h: Adjust the special cons mark makros.
Lrecord Finalizer:
* alloc.c: Add finalizer to lrecord definition.
* alloc.c (finalize_string): Add finalizer for string.
* bytecode.c: Add finalizer to lrecord definition.
* bytecode.c (finalize_compiled_function): Add finalizer for
compiled function.
* marker.c: Add finalizer to lrecord definition.
* marker.c (finalize_marker): Add finalizer for marker.
These changes build the interface to mc-alloc:
* lrecord.h (MC_ALLOC_CALL_FINALIZER): Tell mc-alloc how to
finalize lrecords.
* lrecord.h (MC_ALLOC_CALL_FINALIZER_FOR_DISKSAVE): Tell
mc-alloc how to finalize for disksave.
Unify lrecords and lcrecords:
* lisp.h (struct Lisp_String): Adjust string union hack to
new lrecord header.
* lrecord.h: Adjust comments.
* lrecord.h (struct lrecord_header): The new lrecord header
includes type, lisp-readonly, free, and uid.
* lrecord.h (set_lheader_implementation): Adjust to new
lrecord_header.
* lrecord.h (struct lrecord_implementation): The field basic_p
for indication of an old lrecord is not needed anymore, remove.
* lrecord.h (MAKE_LRECORD_IMPLEMENTATION): Remove basic_p.
* lrecord.h (MAKE_EXTERNAL_LRECORD_IMPLEMENTATION): Remove
basic_p.
* lrecord.h (copy_sized_lrecord): Remove distinction between
old lrecords and lcrecords.
* lrecord.h (copy_lrecord): Remove distinction between old
lrecords and lcrecords.
* lrecord.h (zero_sized_lrecord): Remove distinction between
old lrecords and lcrecords.
* lrecord.h (zero_lrecord): Remove distinction between old
lrecords and lcrecords.
Remove lcrecords and lcrecord lists:
* alloc.c (basic_alloc_lcrecord): Not needed anymore, remove.
* alloc.c (very_old_free_lcrecord): Not needed anymore, remove.
* alloc.c (copy_lisp_object): No more distinction between
lrecords and lcrecords.
* alloc.c (all_lcrecords): Not needed anymore, remove.
* alloc.c (make_vector_internal): Allocate as lrecord.
* alloc.c (make_bit_vector_internal): Allocate as lrecord.
* alloc.c: Completely remove `lcrecord lists'.
* alloc.c (free_description): Remove.
* alloc.c (lcrecord_list_description): Remove.
* alloc.c (mark_lcrecord_list): Remove.
* alloc.c (make_lcrecord_list): Remove.
* alloc.c (alloc_managed_lcrecord): Remove.
* alloc.c (free_managed_lcrecord): Remove.
* alloc.c (alloc_automanaged_lcrecord): Remove.
* alloc.c (free_lcrecord): Remove.
* alloc.c (lcrecord_stats): Remove.
* alloc.c (tick_lcrecord_stats): Remove.
* alloc.c (disksave_object_finalization_1): Add call to
mc_finalize_for_disksave. Remove the lcrecord way to visit all
objects.
* alloc.c (kkcc_marking): Remove XD_FLAG_FREE_LISP_OBJECT
* alloc.c (sweep_lcrecords_1): Remove.
* alloc.c (common_init_alloc_early): Remove everything related
to lcrecords, remove old lrecord initializations,
* alloc.c (init_lcrecord_lists): Not needed anymore, remove.
* alloc.c (reinit_alloc_early): Remove everything related to
lcrecords.
* alloc.c (init_alloc_once_early): Remove everything related to
lcrecords.
* buffer.c (allocate_buffer): Allocate as lrecord.
* buffer.c (nuke_all_buffer_slots): Use lrecord functions.
* buffer.c (common_init_complex_vars_of_buffer): Allocate as
lrecord.
* buffer.h (struct buffer): Add lrecord_header.
* casetab.c (allocate_case_table): Allocate as lrecord.
* casetab.h (struct Lisp_Case_Table): Add lrecord_header.
* charset.h (struct Lisp_Charset): Add lrecord_header.
* chartab.c (fill_char_table): Use lrecord functions.
* chartab.c (Fmake_char_table): Allocate as lrecord.
* chartab.c (make_char_table_entry): Allocate as lrecord.
* chartab.c (copy_char_table_entry): Allocate as lrecord.
* chartab.c (Fcopy_char_table): Allocate as lrecord.
* chartab.c (put_char_table): Use lrecord functions.
* chartab.h (struct Lisp_Char_Table_Entry): Add lrecord_header.
* chartab.h (struct Lisp_Char_Table): Add lrecord_header.
* console-impl.h (struct console): Add lrecord_header.
* console-msw-impl.h (struct Lisp_Devmode): Add lrecord_header.
* console-msw-impl.h (struct mswindows_dialog_id): Add
lrecord_header.
* console.c (allocate_console): Allocate as lrecord.
* console.c (nuke_all_console_slots): Use lrecord functions.
* console.c (common_init_complex_vars_of_console): Allocate as
lrecord.
* data.c (make_weak_list): Allocate as lrecord.
* data.c (make_weak_box): Allocate as lrecord.
* data.c (make_ephemeron): Allocate as lrecord.
* database.c (struct Lisp_Database): Add lrecord_header.
* database.c (allocate_database): Allocate as lrecord.
* device-impl.h (struct device): Add lrecord_header.
* device-msw.c (allocate_devmode): Allocate as lrecord.
* device.c (nuke_all_device_slots): Use lrecord functions.
* device.c (allocate_device): Allocate as lrecord.
* dialog-msw.c (handle_question_dialog_box): Allocate as lrecord.
* elhash.c (struct Lisp_Hash_Table): Add lrecord_header.
* elhash.c (make_general_lisp_hash_table): Allocate as lrecord.
* elhash.c (Fcopy_hash_table): Allocate as lrecord.
* event-stream.c: Lcrecord lists Vcommand_builder_free_list and
Vtimeout_free_list are no longer needed. Remove.
* event-stream.c (allocate_command_builder): Allocate as lrecord.
* event-stream.c (free_command_builder): Use lrecord functions.
* event-stream.c (event_stream_generate_wakeup): Allocate as
lrecord.
* event-stream.c (event_stream_resignal_wakeup): Use lrecord
functions.
* event-stream.c (event_stream_disable_wakeup): Use lrecord
functions.
* event-stream.c (reinit_vars_of_event_stream): Lcrecord lists
remove.
* events.h (struct Lisp_Timeout): Add lrecord_header.
* events.h (struct command_builder): Add lrecord_header.
* extents-impl.h (struct extent_auxiliary): Add lrecord_header.
* extents-impl.h (struct extent_info): Add lrecord_header.
* extents.c (allocate_extent_auxiliary): Allocate as lrecord.
* extents.c (allocate_extent_info): Allocate as lrecord.
* extents.c (copy_extent): Allocate as lrecord.
* faces.c (allocate_face): Allocate as lrecord.
* faces.h (struct Lisp_Face): Add lrecord_header.
* file-coding.c (allocate_coding_system): Allocate as lrecord.
* file-coding.c (Fcopy_coding_system): Allocate as lrecord.
* file-coding.h (struct Lisp_Coding_System): Add lrecord_header.
* fns.c (Ffillarray): Allocate as lrecord.
* frame-impl.h (struct frame): Add lrecord_header.
* frame.c (nuke_all_frame_slots): Use lrecord functions.
* frame.c (allocate_frame_core): Allocate as lrecord.
* glyphs.c (allocate_image_instance): Allocate as lrecord.
* glyphs.c (Fcolorize_image_instance): Allocate as lrecord.
* glyphs.c (allocate_glyph): Allocate as lrecord.
* glyphs.h (struct Lisp_Image_Instance): Add lrecord_header.
* glyphs.h (struct Lisp_Glyph): Add lrecord_header.
* gui.c (allocate_gui_item): Allocate as lrecord.
* gui.h (struct Lisp_Gui_Item): Add lrecord_header.
* keymap.c (struct Lisp_Keymap): Add lrecord_header.
* keymap.c (make_keymap): Allocate as lrecord.
* lisp.h (struct Lisp_Vector): Add lrecord_header.
* lisp.h (struct Lisp_Bit_Vector): Add lrecord_header.
* lisp.h (struct weak_box): Add lrecord_header.
* lisp.h (struct ephemeron): Add lrecord_header.
* lisp.h (struct weak_list): Add lrecord_header.
* lrecord.h (struct lcrecord_header): Not used, remove.
* lrecord.h (struct free_lcrecord_header): Not used, remove.
* lrecord.h (struct lcrecord_list): Not needed anymore, remove.
* lrecord.h (lcrecord_list): Not needed anymore, remove.
* lrecord.h: (enum data_description_entry_flags): Remove
XD_FLAG_FREE_LISP_OBJECT.
* lstream.c: Lrecord list Vlstream_free_list remove.
* lstream.c (Lstream_new): Allocate as lrecord.
* lstream.c (Lstream_delete): Use lrecod functions.
* lstream.c (reinit_vars_of_lstream): Vlstream_free_list
initialization remove.
* lstream.h (struct lstream): Add lrecord_header.
* emacs.c (main_1): Remove lstream initialization.
* mule-charset.c (make_charset): Allocate as lrecord.
* objects-impl.h (struct Lisp_Color_Instance): Add
lrecord_header.
* objects-impl.h (struct Lisp_Font_Instance): Add lrecord_header.
* objects.c (Fmake_color_instance): Allocate as lrecord.
* objects.c (Fmake_font_instance): Allocate as lrecord.
* objects.c (reinit_vars_of_objects): Allocate as lrecord.
* opaque.c: Lcreord list Vopaque_ptr_list remove.
* opaque.c (make_opaque): Allocate as lrecord.
* opaque.c (make_opaque_ptr): Allocate as lrecord.
* opaque.c (free_opaque_ptr): Use lrecord functions.
* opaque.c (reinit_opaque_early):
* opaque.c (init_opaque_once_early): Vopaque_ptr_list
initialization remove.
* opaque.h (Lisp_Opaque): Add lrecord_header.
* opaque.h (Lisp_Opaque_Ptr): Add lrecord_header.
* emacs.c (main_1): Remove opaque variable initialization.
* print.c (default_object_printer): Use new lrecord_header.
* print.c (print_internal): Use new lrecord_header.
* print.c (debug_p4): Use new lrecord_header.
* process.c (make_process_internal): Allocate as lrecord.
* procimpl.h (struct Lisp_Process): Add lrecord_header.
* rangetab.c (Fmake_range_table): Allocate as lrecord.
* rangetab.c (Fcopy_range_table): Allocate as lrecord.
* rangetab.h (struct Lisp_Range_Table): Add lrecord_header.
* scrollbar.c (create_scrollbar_instance): Allocate as lrecord.
* scrollbar.h (struct scrollbar_instance): Add lrecord_header.
* specifier.c (make_specifier_internal): Allocate as lrecord.
* specifier.h (struct Lisp_Specifier): Add lrecord_header.
* symbols.c:
* symbols.c (Fmake_variable_buffer_local): Allocate as lrecord.
* symbols.c (Fdontusethis_set_symbol_value_handler): Allocate
as lrecord.
* symbols.c (Fdefvaralias): Allocate as lrecord.
* symeval.h (struct symbol_value_magic): Add lrecord_header.
* toolbar.c (update_toolbar_button): Allocate as lrecord.
* toolbar.h (struct toolbar_button): Add lrecord_header.
* tooltalk.c (struct Lisp_Tooltalk_Message): Add lrecord_header.
* tooltalk.c (make_tooltalk_message): Allocate as lrecord.
* tooltalk.c (struct Lisp_Tooltalk_Pattern): Add lrecord_header.
* tooltalk.c (make_tooltalk_pattern): Allocate as lrecord.
* ui-gtk.c (allocate_ffi_data): Allocate as lrecord.
* ui-gtk.c (allocate_emacs_gtk_object_data): Allocate as lrecord.
* ui-gtk.c (allocate_emacs_gtk_boxed_data): Allocate as lrecord.
* ui-gtk.h (structs): Add lrecord_header.
* window-impl.h (struct window): Add lrecord_header.
* window-impl.h (struct window_mirror): Add lrecord_header.
* window.c (allocate_window): Allocate as lrecord.
* window.c (new_window_mirror): Allocate as lrecord.
* window.c (make_dummy_parent): Allocate as lrecord.
MEMORY_USAGE_STATS
* alloc.c (fixed_type_block_overhead): Not used anymore, remove.
* buffer.c (compute_buffer_usage): Get storage size from new
allocator.
* marker.c (compute_buffer_marker_usage): Get storage size from
new allocator.
* mule-charset.c (compute_charset_usage): Get storage size from
new allocator.
* scrollbar-gtk.c (gtk_compute_scrollbar_instance_usage): Get
storage size from new allocator.
* scrollbar-msw.c (mswindows_compute_scrollbar_instance_usage):
Get storage size from new allocator.
* scrollbar-x.c (x_compute_scrollbar_instance_usage): Get
storage size from new allocator.
* scrollbar.c (compute_scrollbar_instance_usage): Get storage
size from new allocator.
* unicode.c (compute_from_unicode_table_size_1): Get storage
size from new allocator.
* unicode.c (compute_to_unicode_table_size_1): Get storage size
from new allocator.
* window.c (compute_window_mirror_usage): Get storage size from
new allocator.
* window.c (compute_window_usage): Get storage size from new
allocator.
MC_ALLOC_TYPE_STATS:
* alloc.c (alloc_lrecord): Bump lrecord count.
* alloc.c (noseeum_alloc_lrecord): Bump lrecord count.
* alloc.c (struct lrecord_stats): Storage for counts.
* alloc.c (init_lrecord_stats): Zero statistics.
* alloc.c (inc_lrecord_stats): Increase the statistic.
* alloc.c (dec_lrecord_stats): Decrease the statistic.
* alloc.c (gc_plist_hack): Used to print the information.
* alloc.c (Fgarbage_collect): Return the collected information.
* mc-alloc.c (remove_cell): Decrease lrecord count.
* mc-alloc.h: Set flag MC_ALLOC_TYPE_STATS.
* emacs.c (main_1): Init lrecord statistics.
* lrecord.h: Add prototypes for *_lrecord_stats.
Strings:
* alloc.c (Fmake_string): Initialize ascii_begin to zero.
* alloc.c (gc_count_num_short_string_in_use): Remove.
* alloc.c (gc_count_string_total_size): Remove.
* alloc.c (gc_count_short_string_total_size): Remove.
* alloc.c (debug_string_purity): Remove.
* alloc.c (debug_string_purity_print): Remove.
* alloc.c (sweep_strings): Remove.
Remove static C-readonly Lisp objects:
* alloc.c (c_readonly): Not needed anymore, remove.
* alloc.c (GC_CHECK_LHEADER_INVARIANTS): Remove some obsolete
lheader invariants assertions.
* buffer.c (DEFVAR_BUFFER_LOCAL_1): Allocate dynamically.
* console.c (DEFVAR_CONSOLE_LOCAL_1): Allocate dynamically.
* gpmevent.c: Indirection via MC_ALLOC_Freceive_gpm_event.
* gpmevent.c (Fgpm_enable): Allocate dynamically.
* gpmevent.c (syms_of_gpmevent): Allocate dynamically.
* lisp.h (C_READONLY): Not needed anymore, remove.
* lisp.h (DEFUN): Allocate dynamically.
* lrecord.h (C_READONLY_RECORD_HEADER_P): Not needed anymore,
remove.
* lrecord.h (SET_C_READONLY_RECORD_HEADER): Not needed anymore,
remove.
* symbols.c (guts_of_unbound_marker):
* symeval.h (defsubr): Allocate dynamically.
* symeval.h (DEFSUBR_MACRO): Allocate dynamically.
* symeval.h (DEFVAR_ SYMVAL_FWD): Allocate dynamically.
* tests.c (TESTS_DEFSUBR): Allocate dynamically.
Definition of mcpro:
* lisp.h: Add mcpro prototypes.
* alloc.c (common_init_alloc_early): Add initialization for
mcpros.
* alloc.c (mcpro_description_1): New.
* alloc.c (mcpro_description): New.
* alloc.c (mcpros_description_1): New.
* alloc.c (mcpros_description): New.
* alloc.c (mcpro_one_name_description_1): New.
* alloc.c (mcpro_one_name_description): New.
* alloc.c (mcpro_names_description_1): New.
* alloc.c (mcpro_names_description): New.
* alloc.c (mcpros): New.
* alloc.c (mcpro_names): New.
* alloc.c (mcpro_1): New.
* alloc.c (mc_pro): New.
* alloc.c (garbage_collect_1): Add mcpros to root set.
Usage of mcpro:
* alloc.c (make_string_nocopy): Add string to root set.
* symbols.c (init_symbols_once_early): Add Qunbound to root set.
Changes to the Portable Dumper:
* alloc.c (FREE_OR_REALLOC_BEGIN): Since dumped objects can be
freed with the new allocator, remove assertion for !DUMPEDP.
* dumper.c: Adjust comments, increase PDUMP_HASHSIZE.
* dumper.c (pdump_make_hash): Shift address only 2 bytes, to
avoid collisions.
* dumper.c (pdump_objects_unmark): No more mark bits within
the object, remove.
* dumper.c (mc_addr_elt): New. Element data structure for mc
hash table.
* dumper.c (pdump_mc_hash): New hash table: `lookup table'.
* dumper.c (pdump_get_mc_addr): New. Lookup for hash table.
* dumper.c (pdump_get_indirect_mc_addr): New. Lookup for
convertibles.
* dumper.c (pdump_put_mc_addr): New. Putter for hash table.
* dumper.c (pdump_dump_mc_data): New. Writes the table for
relocation at load time to the dump file.
* dumper.c (pdump_scan_lisp_objects_by_alignment): New.
Visits all dumped Lisp objects.
* dumper.c (pdump_scan_non_lisp_objects_by_alignment): New.
Visits all other dumped objects.
* dumper.c (pdump_reloc_one_mc): New. Updates all pointers
of an object by using the hash table pdump_mc_hash.
* dumper.c (pdump_reloc_one): Replaced by pdump_reloc_one_mc.
* dumper.c (pdump): Change the structure of the dump file, add
the mc post dump relocation table to dump file.
* dumper.c (pdump_load_finish): Hand all dumped objects to the
new allocator and use the mc post dump relocation table for
relocating the dumped objects at dump file load time, free not
longer used data structures.
* dumper.c (pdump_load): Free the dump file.
* dumper.h: Remove pdump_objects_unmark.
* lrecord.h (DUMPEDP): Dumped objects can be freed, remove.
DUMP_IN_EXEC:
* Makefile.in.in: Linking for and with dump in executable only if
DUMP_IN_EXEC is defined.
* config.h.in: Add new flag `DUMP_IN_EXEC'
* emacs.c: Condition dump-data.h on DUMP_IN_EXEC.
* emacs.c (main_1): Flag `-si' only works if dump image is
written into executable.
Miscellanious
* lrecord.h (enum lrecord_type): Added numbers to all types,
very handy for debugging.
* xemacs.def.in.in: Add mc-alloc functions to make them visible
to the modules.
author | crestani |
---|---|
date | Fri, 08 Apr 2005 23:11:35 +0000 |
parents | 7edc33019aa4 |
children | 414a64af46c9 |
rev | line source |
---|---|
1314 | 1 ## Copyright (C) 2003 Ben Wing. |
2 | |
380 | 3 ## DIST: This is the distribution Makefile for XEmacs. configure can |
4 ## DIST: make most of the changes to this file you might want, so try | |
5 ## DIST: that first. | |
6 | |
7 ## This file is part of XEmacs. | |
8 | |
9 ## XEmacs is free software; you can redistribute it and/or modify it | |
10 ## under the terms of the GNU General Public License as published by the | |
11 ## Free Software Foundation; either version 2, or (at your option) any | |
12 ## later version. | |
13 | |
14 ## XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
15 ## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
16 ## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
17 ## for more details. | |
18 | |
19 ## You should have received a copy of the GNU General Public License | |
20 ## along with XEmacs; see the file COPYING. If not, write to | |
21 ## the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
22 ## Boston, MA 02111-1307, USA. | |
23 | |
24 ## make all to compile and build XEmacs. | |
25 ## make install to build and install it. | |
26 ## make install-only to install after a previous complete build | |
27 ## make TAGS to update tags tables. | |
28 | |
29 ## make clean or make mostlyclean | |
30 ## Delete all files from the current directory that are normally | |
31 ## created by building the program. Don't delete the files that | |
32 ## record the configuration. Also preserve files that could be made | |
33 ## by building, but normally aren't because the distribution comes | |
34 ## with them. | |
35 | |
36 ## Delete `.dvi' files here if they are not part of the distribution. | |
37 | |
38 ## make distclean | |
39 ## Delete all files from the current directory that are created by | |
40 ## configuring or building the program. If you have unpacked the | |
41 ## source and built the program without creating any other files, | |
42 ## `make distclean' should leave only the files that were in the | |
43 ## distribution. | |
44 | |
45 ## make realclean | |
46 ## Delete everything from the current directory that can be | |
47 ## reconstructed with this Makefile. This typically includes | |
48 ## everything deleted by distclean, plus more: C source files | |
49 ## produced by Bison, tags tables, info files, and so on. | |
50 | |
51 ## make extraclean | |
52 ## Still more severe - delete backup and autosave files, too. | |
53 | |
424 | 54 #define NOT_C_CODE |
55 #include "src/config.h" | |
56 | |
380 | 57 #ifdef USE_GNU_MAKE |
2427 | 58 RECURSIVE_MAKE_ARGS= |
380 | 59 #else |
60 @SET_MAKE@ | |
2427 | 61 RECURSIVE_MAKE_ARGS=@RECURSIVE_MAKE_ARGS@ |
380 | 62 #endif |
63 | |
64 SHELL = /bin/sh | |
65 LANG = C | |
396 | 66 LC_ALL = C |
380 | 67 RM = rm -f |
426 | 68 MAKEPATH=./lib-src/make-path |
380 | 69 pwd = /bin/pwd |
430 | 70 TAR = tar |
380 | 71 |
72 ## ==================== Things `configure' Might Edit ==================== | |
73 | |
74 CC=@CC@ | |
75 CPP=@CPP@ | |
76 LN_S=@LN_S@ | |
77 CFLAGS=@CFLAGS@ | |
78 CPPFLAGS=@CPPFLAGS@ | |
708 | 79 LDFLAGS=@LDFLAGS@ |
380 | 80 |
81 ## These help us choose version- and architecture-specific directories | |
82 ## to install files in. | |
83 | |
84 ## This should be the number of the XEmacs version we're building, | |
85 ## like `19.12' or `19.13'. | |
86 version=@version@ | |
87 | |
88 ## This should be the name of the configuration we're building XEmacs | |
89 ## for, like `mips-dec-ultrix' or `sparc-sun-sunos'. | |
90 configuration=@configuration@ | |
91 | |
92 ## This will be the name of the generated binary and is set automatically | |
93 ## by configure. | |
94 PROGNAME=@PROGNAME@ | |
95 | |
96 ## ==================== Where To Install Things ==================== | |
97 | |
98 ## The default location for installation. Everything is placed in | |
99 ## subdirectories of this directory. The default values for many of | |
100 ## the variables below are expressed in terms of this one, so you may | |
101 ## not need to change them. This defaults to /usr/local. | |
102 prefix=@prefix@ | |
103 | |
422 | 104 ## Variable data (as per each program update) goes here |
105 ## The default is ${PROGNAME} | |
106 inststaticdir=@inststaticdir@ | |
107 | |
108 ## Static data (constant across program updates) goes here | |
109 ## The default is ${PROGNAME}-${version} | |
110 instvardir=@instvardir@ | |
111 | |
380 | 112 ## Like `prefix', but used for architecture-specific files. |
113 exec_prefix=@exec_prefix@ | |
114 | |
115 ## Where to install XEmacs and other binaries that people will want to | |
116 ## run directly (like etags). | |
117 bindir=@bindir@ | |
118 | |
119 ## Where to install architecture-independent data files. | |
120 ## ${lispdir} and ${etcdir} are subdirectories of this. | |
121 datadir=@datadir@ | |
122 | |
123 ## Where to install and expect the files that XEmacs modifies as it runs. | |
124 ## These files are all architecture-independent. Right now, the | |
125 ## only such data is the locking directory; | |
126 statedir=@statedir@ | |
127 | |
128 ## Where to install and expect executable files to be run by XEmacs | |
129 ## rather than directly by users, and other architecture-dependent data | |
130 ## ${archlibdir} is a subdirectory of this. | |
131 libdir=@libdir@ | |
132 | |
133 ## Where to install XEmacs's man pages, and what extension they should have. | |
134 mandir=@mandir@ | |
135 manext=.1 | |
136 | |
137 ## Where to install and expect the info files describing XEmacs. In the | |
138 ## past, this defaulted to a subdirectory of ${prefix}/lib/xemacs, but | |
139 ## since there are now many packages documented with the texinfo | |
140 ## system, it is inappropriate to imply that it is part of XEmacs. | |
141 infodir=@infodir@ | |
142 | |
143 ## Document me. | |
144 ## See callproc.c for code which references this. | |
145 infopath=@infopath@ | |
146 | |
147 ## Where to find the source code. The source code for XEmacs's C kernel is | |
148 ## expected to be in ${srcdir}/src, and the source code for XEmacs's | |
149 ## utility programs is expected to be in ${srcdir}/lib-src. This is | |
150 ## set by the configure script's `--srcdir' option. | |
151 srcdir=@srcdir@ | |
152 | |
153 ## Where the build is done. | |
154 blddir=@blddir@ | |
155 | |
156 ## ==================== XEmacs-specific directories ==================== | |
157 | |
158 ## These variables hold the values XEmacs will actually use. They are | |
159 ## based on the values of the standard Make variables above. | |
160 | |
161 ## Where to install the lisp files distributed with | |
162 ## XEmacs. This includes the XEmacs version, so that the | |
163 ## lisp files for different versions of XEmacs will install | |
164 ## themselves in separate directories. | |
165 lispdir=@lispdir@ | |
166 | |
388 | 167 ## Where to install the module files distributed with |
168 ## XEmacs. This includes the XEmacs version, so that the | |
169 ## module files for different versions of XEmacs will install | |
170 ## themselves in separate directories. | |
171 moduledir=@moduledir@ | |
172 | |
380 | 173 ## Directory XEmacs should search for lisp files specific |
174 ## to this site (i.e. customizations), before consulting | |
175 ## ${lispdir}. | |
176 sitelispdir=@sitelispdir@ | |
177 | |
388 | 178 ## Directory XEmacs should search for module files specific |
179 ## to this site (i.e. customizations), before consulting | |
180 ## ${moduledir}. | |
181 sitemoduledir=@sitemoduledir@ | |
182 | |
380 | 183 ## Where XEmacs will search for its lisp files while |
184 ## building. This is only used during the process of | |
185 ## compiling XEmacs, to help XEmacs find its lisp files | |
186 ## before they've been installed in their final location. | |
187 ## It's usually identical to lispdir, except that the | |
188 ## entry for the directory containing the installed lisp | |
189 ## files has been replaced with ../lisp. This should be a | |
190 ## colon-separated list of directories. | |
191 buildlispdir=${srcdir}/lisp | |
192 | |
193 ## Where to install the other architecture-independent | |
194 ## data files distributed with XEmacs (like the tutorial, | |
195 ## the cookie recipes and the Zippy database). This path | |
196 ## usually contains the XEmacs version number, so the data | |
197 ## files for multiple versions of XEmacs may be installed | |
198 ## at once. | |
199 etcdir=@etcdir@ | |
200 | |
424 | 201 ## Where to put the DOC file. |
420 | 202 docdir=@docdir@ |
203 | |
380 | 204 ## Where to put executables to be run by XEmacs rather than |
205 ## the user. This path usually includes the XEmacs version | |
206 ## and configuration name, so that multiple configurations | |
207 ## for multiple versions of XEmacs may be installed at | |
208 ## once. | |
209 archlibdir=@archlibdir@ | |
210 | |
211 ## ==================== Utility Programs for the Build ==================== | |
212 | |
213 ## Allow the user to specify the install program. | |
214 INSTALL = @install_pp@ @INSTALL@ | |
215 INSTALL_PROGRAM = @INSTALL_PROGRAM@ | |
216 INSTALL_DATA = @INSTALL_DATA@ | |
217 | |
218 ## ============================= Targets ============================== | |
219 | |
220 ## Subdirectories to make recursively. `lisp' is not included | |
221 ## because the compiled lisp files are part of the distribution | |
222 ## and you cannot remake them without installing XEmacs first. | |
223 MAKE_SUBDIR = @MAKE_SUBDIR@ | |
224 | |
225 ## Subdirectories that can be made recursively. | |
424 | 226 SUBDIR = ${MAKE_SUBDIR} man |
227 | |
380 | 228 ## The makefiles of the directories in ${MAKE_SUBDIR}. |
229 SUBDIR_MAKEFILES = @SUBDIR_MAKEFILES@ | |
230 | |
231 ## Subdirectories to `make install-arch-dep' recursively | |
232 INSTALL_ARCH_DEP_SUBDIR = @INSTALL_ARCH_DEP_SUBDIR@ | |
233 | |
234 ## Subdirectories to install, and where they'll go. | |
235 ## lib-src's makefile knows how to install it, so we don't do that here. | |
236 ## When installing the info files, we need to do special things to | |
237 ## avoid nuking an existing dir file, so we don't do that here; | |
238 ## instead, we have written out explicit code in the `install' targets. | |
239 COPYDIR = ${srcdir}/etc ${srcdir}/lisp | |
240 COPYDESTS = ${etcdir} ${lispdir} | |
1633 | 241 GENERATED_HEADERS = src/paths.h src/Emacs.ad.h src/config.h lwlib/config.h src/sheap-adjust.h src/xemacs.def |
380 | 242 |
1314 | 243 ## MAKE_SUBDIR will always be of the form lib-src ... src, where |
244 ## `...' includes various other directories that may be inserted by | |
245 ## configure. | |
246 all: Makefile ${GENERATED_HEADERS} ${MAKE_SUBDIR} info | |
380 | 247 |
248 ## For performance and consistency, no built-in rules | |
249 .SUFFIXES: | |
250 | |
1314 | 251 .NO_PARALLEL: ${GENERATED_HEADERS} ${MAKE_SUBDIR} |
252 .PHONY: ${SUBDIR} all beta | |
380 | 253 |
254 ## Convenience target for XEmacs beta testers | |
1314 | 255 beta: clean all |
380 | 256 |
257 ## Convenience target for XEmacs maintainers | |
258 ## This would run `make-xemacsdist' if I were really confident that everything | |
259 ## was turnkey. | |
1314 | 260 dist: all |
380 | 261 |
262 ## Convenience target for XEmacs maintainers | |
263 ## Updates some rarely generated files: | |
264 ## - configure from configure.in | |
265 ## - config.values.in from configure | |
266 ## - src/depend from src/*.[ch] | |
267 .PHONY: config configure depend | |
268 config: configure depend | |
426 | 269 configure: ${srcdir}/configure ${srcdir}/lib-src/config.values.in |
270 | |
271 ${srcdir}/configure : ${srcdir}/configure.in | |
380 | 272 cd ${srcdir} && autoconf |
273 | |
426 | 274 ${srcdir}/lib-src/config.values.in : ${srcdir}/configure |
275 cd ${srcdir} && $(SHELL) lib-src/config.values.sh | |
276 | |
442 | 277 depend ${srcdir}/src/depend: |
2427 | 278 cd ./src && $(MAKE) $(RECURSIVE_MAKE_ARGS) depend |
380 | 279 |
1314 | 280 check: |
2427 | 281 cd ./src && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@ |
380 | 282 |
1314 | 283 check-features: all |
2427 | 284 cd ./src && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@ |
380 | 285 |
286 ## We have to force the building of Emacs.ad.h as well in order to get it | |
287 ## updated correctly when VPATH is being used. Since we use move-if-change, | |
288 ## it will only actually change if the user modified ${etcdir}/Emacs.ad. | |
289 src/Emacs.ad.h: ${srcdir}/etc/Emacs.ad | |
290 @echo "Producing \`src/Emacs.ad.h' from \`etc/Emacs.ad'." | |
291 @$(RM) src/Emacs.ad.h | |
292 @(echo "/* Do not edit this file!" ; \ | |
293 echo " Automatically generated from ${srcdir}/etc/Emacs.ad" ; \ | |
294 echo " */" ; \ | |
426 | 295 $(SHELL) ${srcdir}/lib-src/ad2c ${srcdir}/etc/Emacs.ad ) > \ |
380 | 296 src/Emacs.ad.h |
297 | |
298 src/sheap-adjust.h: | |
299 @echo "Resetting \`src/sheap-adjust.h'."; \ | |
300 (echo "/* Do not edit this file!" ; \ | |
301 echo " Automatically generated by XEmacs */" ; \ | |
1157 | 302 echo "#define SHEAP_ADJUSTMENT 0") > $@ |
380 | 303 |
304 src: @SRC_SUBDIR_DEPS@ FRC.src | |
305 pkg-src/tree-x: pkg-src/FRC.tree-x | |
306 lib-src: FRC.lib-src | |
307 lwlib: FRC.lwlib | |
308 dynodump: FRC.dynodump | |
309 FRC.src FRC.lib-src FRC.lwlib FRC.dynodump pkg-src/FRC.tree-x: | |
310 FRC.lisp.finder-inf.el: | |
311 | |
312 ${SUBDIR}: ${SUBDIR_MAKEFILES} ${GENERATED_HEADERS} FRC | |
2427 | 313 cd ./$@ && $(MAKE) $(RECURSIVE_MAKE_ARGS) all |
2259 | 314 |
315 ## Building modules depends on ellcc, found in lib-src. | |
316 modules/sample modules/ldap modules/zlib modules/base64 modules/postgresql: lib-src | |
380 | 317 |
801 | 318 Makefile: ${srcdir}/Makefile.in.in config.status |
380 | 319 ./config.status |
2427 | 320 $(MAKE) $(RECURSIVE_MAKE_ARGS) all |
380 | 321 |
322 src/Makefile: ${srcdir}/src/Makefile.in.in ${srcdir}/src/depend config.status | |
323 ./config.status | |
324 | |
325 lib-src/Makefile: ${srcdir}/lib-src/Makefile.in.in config.status | |
326 ./config.status | |
327 | |
328 lwlib/Makefile: ${srcdir}/lwlib/Makefile.in.in config.status | |
329 ./config.status | |
330 | |
331 pkg-src/tree-x/Makefile: ${srcdir}/pkg-src/tree-x/Makefile.in.in config.status | |
332 ./config.status | |
333 | |
334 src/config.h: ${srcdir}/src/config.h.in | |
335 ./config.status && touch $@ | |
336 | |
337 src/paths.h: ${srcdir}/src/paths.h.in | |
338 ./config.status && touch $@ | |
339 | |
340 lwlib/config.h: ${srcdir}/lwlib/config.h.in | |
341 ./config.status && touch $@ | |
342 | |
1633 | 343 src/xemacs.def: $(srcdir)/src/xemacs.def.in.in |
344 ./config.status && touch $@ | |
345 | |
380 | 346 ## ==================== Installation ==================== |
347 | |
348 ## If we let lib-src do its own installation, that means we | |
349 ## don't have to duplicate the list of utilities to install in | |
350 ## this Makefile as well. | |
351 | |
352 ## On AIX, use tar xBf. | |
353 ## On Xenix, use tar xpf. | |
354 | |
355 .PHONY: install-only install install-arch-dep install-arch-indep gzip.el mkdir | |
1314 | 356 .PHONY: check check-features |
380 | 357 |
358 ## We delete each directory in ${COPYDESTS} before we copy into it; | |
359 ## that way, we can reinstall over directories that have been put in | |
360 ## place with their files read-only (perhaps because they are checked | |
361 ## into RCS). In order to make this safe, we make sure that the | |
362 ## source exists and is distinct from the destination. | |
363 | |
364 ## FSF doesn't depend on `all', but rather on ${MAKE_SUBDIR}, so that | |
365 ## they "won't ever modify src/paths.h". But that means you can't do | |
366 ## 'make install' right off the bat because src/paths.h won't exist. | |
367 ## And, in XEmacs case, src/Emacs.ad.h won't exist either. I also | |
368 ## don't see the point in avoiding modifying paths.h. It creates an | |
369 ## inconsistency in the build process. So we go ahead and depend on | |
370 ## all. --cet | |
371 | |
372 install-only: ${MAKE_SUBDIR} check-features install-arch-dep install-arch-indep | |
373 | |
374 install: all check-features install-arch-dep install-arch-indep | |
375 | |
376 install-arch-dep: mkdir | |
377 for subdir in ${INSTALL_ARCH_DEP_SUBDIR}; do \ | |
2427 | 378 (cd ./$${subdir} && $(MAKE) $(RECURSIVE_MAKE_ARGS) install prefix=${prefix} \ |
380 | 379 exec_prefix=${exec_prefix} bindir=${bindir} libdir=${libdir} \ |
380 archlibdir=${archlibdir}) ; done | |
381 if test "`(cd ${archlibdir} && $(pwd))`" != \ | |
382 "`(cd ./lib-src && $(pwd))`"; then \ | |
383 if test -f ../Installation; then \ | |
384 ${INSTALL_DATA} ../Installation ${archlibdir}/Installation; \ | |
385 fi; \ | |
422 | 386 ${INSTALL_DATA} lib-src/config.values ${docdir}/config.values; \ |
420 | 387 ${INSTALL_DATA} lib-src/DOC ${docdir}/DOC; \ |
380 | 388 for subdir in `find ${archlibdir} -type d ! -name RCS ! -name SCCS ! -name CVS -print` ; \ |
389 do (cd $${subdir} && $(RM) -r RCS CVS SCCS \#* *~) ; done ; \ | |
390 else true; fi | |
2720 | 391 #if (defined(PDUMP) && !defined (DUMP_IN_EXEC)) || (defined (PDUMP) && defined(WIN32_NATIVE)) |
442 | 392 ${INSTALL_DATA} src/${PROGNAME}.dmp ${bindir}/${PROGNAME}-${version}-`src/${PROGNAME} -sd`.dmp |
393 #endif | |
394 #ifdef WIN32_NATIVE | |
424 | 395 ${INSTALL_PROGRAM} src/${PROGNAME} ${bindir}/${PROGNAME} |
396 -chmod 0755 ${bindir}/${PROGNAME} | |
397 #else | |
2388 | 398 # ifdef CYGWIN |
399 ${INSTALL_PROGRAM} src/${PROGNAME} ${bindir}/${PROGNAME}-${version}.exe | |
400 -chmod 0755 ${bindir}/${PROGNAME}-${version}.exe | |
401 cd ${bindir} && $(RM) ./${PROGNAME} && ${LN_S} ${PROGNAME}-${version}.exe ./${PROGNAME} | |
402 # else | |
380 | 403 ${INSTALL_PROGRAM} src/${PROGNAME} ${bindir}/${PROGNAME}-${version} |
404 -chmod 0755 ${bindir}/${PROGNAME}-${version} | |
405 cd ${bindir} && $(RM) ./${PROGNAME} && ${LN_S} ${PROGNAME}-${version} ./${PROGNAME} | |
442 | 406 # endif /* CYGWIN */ |
407 #endif /* WIN32_NATIVE */ | |
380 | 408 if test "${prefix}" != "${exec_prefix}"; then \ |
426 | 409 $(MAKEPATH) ${exec_prefix}/lib/${instvardir}; \ |
380 | 410 for dir in \ |
422 | 411 lib/${inststaticdir} \ |
412 lib/${instvardir}/etc \ | |
413 lib/${instvardir}/info \ | |
414 lib/${instvardir}/lisp; do \ | |
380 | 415 if test ! -d ${exec_prefix}/$${dir}; then \ |
416 $(LN_S) ${prefix}/$${dir} ${exec_prefix}/$${dir}; fi; \ | |
417 done; \ | |
418 fi | |
997 | 419 #ifdef HAVE_SHLIB |
420 $(INSTALL_DATA) $(srcdir)/modules/auto-autoloads.* $(moduledir) | |
421 #endif | |
380 | 422 |
423 install-arch-indep: mkdir info | |
424 -@set ${COPYDESTS} ; \ | |
425 for dir in ${COPYDIR} ; do \ | |
426 if test "`(cd $$1 && $(pwd))`" != \ | |
427 "`(cd $${dir} && $(pwd))`"; then \ | |
428 : do nothing - echo "rm -rf $$1" ; \ | |
429 fi ; \ | |
430 shift ; \ | |
431 done | |
432 -set ${COPYDESTS} ; \ | |
433 for dir in ${COPYDESTS} ; do \ | |
434 if test ! -d $${dir} ; then mkdir $${dir} ; fi ; \ | |
435 done ; \ | |
436 for dir in ${COPYDIR} ; do \ | |
437 dest=$$1 ; shift ; \ | |
438 test -d $${dir} \ | |
439 -a "`(cd $${dir} && $(pwd))`" != \ | |
440 "`(cd $${dest} && $(pwd))`" \ | |
441 && (echo "Copying $${dir}..." ; \ | |
430 | 442 (cd $${dir} && $(TAR) -cf - . ) | \ |
443 (cd $${dest} && umask 022 && $(TAR) -xf - );\ | |
380 | 444 chmod 0755 $${dest}; \ |
445 for subdir in `find $${dest} -type d ! -name RCS ! -name SCCS ! -name CVS -print` ; do \ | |
446 (cd $${subdir} && $(RM) -r RCS CVS SCCS \#* *~) ; \ | |
447 done) ; \ | |
448 done | |
449 if test "`(cd ${srcdir}/info && $(pwd))`" != \ | |
450 "`(cd ${infodir} && $(pwd))`" && cd ${srcdir}/info; then \ | |
451 if test ! -f ${infodir}/dir -a -f dir ; then \ | |
452 ${INSTALL_DATA} ${srcdir}/info/dir ${infodir}/dir ; \ | |
453 fi ; \ | |
454 for file in *.info* ; do \ | |
455 ${INSTALL_DATA} $${file} ${infodir}/$${file} ; \ | |
456 chmod 0644 ${infodir}/$${file}; \ | |
457 done ; \ | |
458 fi | |
459 cd ${srcdir}/etc && \ | |
460 for page in xemacs etags ctags gnuserv gnuclient gnuattach gnudoit; do \ | |
461 ${INSTALL_DATA} ${srcdir}/etc/$${page}.1 ${mandir}/$${page}${manext} ; \ | |
462 chmod 0644 ${mandir}/$${page}${manext} ; \ | |
463 done | |
2128 | 464 @echo "If you would like to save approximately 4M of disk space, do" |
380 | 465 @echo "make gzip-el" |
466 @echo "or you may run " | |
467 @echo ${srcdir}/lib-src/gzip-el.sh lispdir " from the command line." | |
468 @echo "Where lispdir is where the lisp files were installed, i.e.," | |
469 @echo "${lispdir}" | |
470 | |
471 gzip-el: | |
426 | 472 $(SHELL) ${srcdir}/lib-src/gzip-el.sh ${lispdir} |
380 | 473 |
474 ## Build all the directories to install XEmacs in. | |
475 ## Since we may be creating several layers of directories, | |
476 ## (e.g. /usr/local/lib/${PROGNAME}-20.5/sparc-sun-solaris2.6), we use | |
477 ## make-path instead of mkdir. Not all mkdirs have the `-p' flag. | |
478 mkdir: FRC.mkdir | |
444 | 479 ${MAKEPATH} ${COPYDESTS} ${docdir} ${infodir} ${archlibdir} \ |
1349 | 480 ${mandir} ${bindir} ${datadir} ${libdir} \ |
598 | 481 #ifdef HAVE_SHLIB |
482 ${moduledir} ${sitemoduledir} \ | |
483 #endif | |
484 ${sitelispdir} | |
380 | 485 |
486 ## Delete all the installed files that the `install' target would | |
487 ## create (but not the noninstalled files such as `make all' would | |
488 ## create). | |
489 | |
490 #### Don't delete the lisp and etc directories if they're in the source tree. | |
491 #### This target has not been updated in sometime and until it is it | |
492 #### would be extremely dangerous for anyone to use it. | |
493 ##uninstall: | |
494 ## (cd ./lib-src; \ | |
2427 | 495 ## $(MAKE) $(RECURSIVE_MAKE_ARGS) uninstall \ |
380 | 496 ## prefix=${prefix} exec_prefix=${exec_prefix} \ |
497 ## bindir=${bindir} libdir=${libdir} archlibdir=${archlibdir}) | |
498 ## for dir in ${lispdir} ${etcdir} ; do \ | |
499 ## case `(cd $${dir} ; $(pwd))` in \ | |
500 ## `(cd ${srcdir} ; $(pwd))`* ) ;; \ | |
501 ## * ) $(RM) $${dir} ;; \ | |
502 ## esac ; \ | |
503 ## case $${dir} in \ | |
504 ## ${datadir}/${PROGNAME}/${version}/* ) \ | |
505 ## $(RM) -r ${datadir}/${PROGNAME}/${version} \ | |
506 ## ;; \ | |
507 ## esac ; \ | |
508 ## done | |
509 ## cd ${infodir} && $(RM) cl* ${PROGNAME}* forms* info* vip* | |
510 ## cd ${mandir} && $(RM) xemacs.1 etags.1 ctags.1 gnuserv.1 | |
511 ## cd ${bindir} && $(RM) ${PROGNAME}-${version} ${PROGNAME} | |
512 | |
513 | |
514 ## Some makes seem to remember that they've built something called FRC, | |
515 ## so you can only use a given FRC once per makefile. | |
516 FRC FRC.src.paths.h FRC.mkdir FRC.dump-elcs FRC.info: | |
517 FRC.mostlyclean FRC.clean FRC.distclean FRC.realclean FRC.tags: | |
518 | |
519 ## ==================== Cleaning up and miscellanea ==================== | |
520 | |
521 .PHONY: mostlyclean clean distclean realclean extraclean | |
522 | |
523 ## `mostlyclean' | |
524 ## Like `clean', but may refrain from deleting a few files that people | |
525 ## normally don't want to recompile. For example, the `mostlyclean' | |
526 ## target for GCC does not delete `libgcc.a', because recompiling it | |
527 ## is rarely necessary and takes a lot of time. | |
528 mostlyclean: FRC.mostlyclean | |
2427 | 529 for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@); done |
1330 | 530 $(RM) core |
380 | 531 |
532 ## `clean' | |
533 ## Delete all files from the current directory that are normally | |
534 ## created by building the program. Don't delete the files that | |
535 ## record the configuration. Also preserve files that could be made | |
536 ## by building, but normally aren't because the distribution comes | |
537 ## with them. | |
538 | |
539 ## Delete `.dvi' files here if they are not part of the distribution. | |
1889 | 540 |
541 ## Remove the generated load files here; they cause lots of problems | |
542 ## when they don't work right. (beta can't depend on distclean, which | |
543 ## removes necessary files generated by configure.) | |
380 | 544 clean: FRC.clean |
2427 | 545 for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@); done |
1889 | 546 $(RM) core lisp/auto-autoloads.el* lisp/custom-load.el* |
547 $(RM) lisp/mule/auto-autoloads.el* lisp/mule/custom-load.el* | |
548 $(RM) modules/auto-autoloads.el* modules/custom-load.el* | |
380 | 549 |
550 ## `distclean' | |
551 ## Delete all files from the current directory that are created by | |
552 ## configuring or building the program. If you have unpacked the | |
553 ## source and built the program without creating any other files, | |
554 ## `make distclean' should leave only the files that were in the | |
555 ## distribution. | |
556 top_distclean=\ | |
394 | 557 $(RM) config.status config.log confdefs.h config-tmp-* build-install Installation ; \ |
1330 | 558 $(RM) TAGS .sbinit lock/* GNUmakefile Makefile Makefile.in ; \ |
382 | 559 $(RM) lisp/finder-inf.el* Installation.el Installation.elc ; \ |
424 | 560 $(RM) -r site-packages xemacs-packages mule-packages site-lisp |
380 | 561 |
562 distclean: FRC.distclean | |
2427 | 563 for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@); done |
380 | 564 -${top_distclean} |
565 | |
566 ## `realclean' | |
567 ## Delete everything from the current directory that can be | |
568 ## reconstructed with this Makefile. This typically includes | |
569 ## everything deleted by distclean, plus more: C source files | |
570 ## produced by Bison, tags tables, info files, and so on. | |
571 | |
572 ## One exception, however: `make realclean' should not delete | |
573 ## `configure' even if `configure' can be remade using a rule in the | |
574 ## Makefile. More generally, `make realclean' should not delete | |
575 ## anything that needs to exist in order to run `configure' and then | |
576 ## begin to build the program. | |
577 realclean: FRC.realclean | |
2427 | 578 for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@); done |
380 | 579 -${top_distclean} |
580 $(RM) TAGS | |
581 | |
582 ## This doesn't actually appear in the coding standards, but Karl | |
583 ## says GCC supports it, and that's where the configuration part of | |
584 ## the coding standards seem to come from. It's like distclean, but | |
585 ## it deletes backup and autosave files too. | |
586 extraclean: | |
2427 | 587 for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@); done |
380 | 588 $(RM) *~ \#* |
589 -${top_distclean} | |
590 | |
591 ## Unlocking and relocking. The idea of these productions is to reduce | |
592 ## hassles when installing an incremental tar of XEmacs. Do `make unlock' | |
593 ## before unlocking the file to take the write locks off all sources so | |
594 ## that tar xvof will overwrite them without fuss. Then do `make relock' | |
595 ## afterward so that VC mode will know which files should be checked in | |
596 ## if you want to mung them. | |
597 | |
598 ## Note: it's no disaster if these productions miss a file or two; tar | |
599 ## and VC will swiftly let you know if this happens, and it is easily | |
600 ## corrected. | |
2536 | 601 SOURCES = ChangeLog INSTALL Makefile.in.in PROBLEMS \ |
380 | 602 README build-install.in configure make-dist move-if-change |
603 | |
1314 | 604 .PHONY: unlock relock TAGS tags dist info dvi mcs |
380 | 605 |
606 unlock: | |
607 chmod u+w $(SOURCES) cpp/* | |
608 -cd ./elisp && chmod u+w Makefile README *.texi | |
2427 | 609 for d in src etc lib-src lisp; do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@); done |
380 | 610 cd ./lisp/term && chmod u+w README *.el |
611 cd ./man && chmod u+w *texi* ChangeLog split-man | |
612 cd ./lwlib && chmod u+w *.[ch] Makefile.in.in | |
613 | |
614 relock: | |
615 chmod u-w $(SOURCES) cpp/* | |
616 -cd ./elisp && chmod u-w Makefile README *.texi | |
2427 | 617 for d in src etc lib-src lisp; do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@); done |
380 | 618 cd ./lisp/term && chmod u+w README *.el |
619 cd ./man && chmod u+w *texi* ChangeLog split-man | |
620 cd ./lwlib && chmod u+w *.[ch] Makefile.in.in | |
621 | |
622 PRUNE_VC = -name SCCS -prune -o -name RCS -prune -o -name CVS -prune -o | |
623 tagslisp = lisp | |
624 TAGS tags: FRC.tags | |
625 @echo "If you don't have a copy of etags around, then do 'make lib-src' first." | |
626 $(RM) ${srcdir}/TAGS | |
627 @PATH=`$(pwd)`/lib-src:$$PATH HOME=/-=-; export PATH HOME; \ | |
628 echo "Using etags from `which etags`." | |
629 PATH=`$(pwd)`/lib-src:$$PATH ; export PATH; cd ${srcdir} && \ | |
1011 | 630 find src lwlib lib-src modules ${PRUNE_VC} -name '*.[ch]' -print | \ |
1441 | 631 xargs etags -a \ |
632 -r '/[ ]*DEF\(VAR\|INE\)_[A-Z_]+[ ]*([ ]*"\([^"]+\)"/\2/' \ | |
633 -r '/^DEFUN[ ]*([ ]*"\([^"]+\)"[ ]*,[ ]*\([A-Za-z0-9_]+\)/\2/'; \ | |
380 | 634 find ${tagslisp} ${PRUNE_VC} -name '*.el' ! -name 'auto-autoloads.el' -print | \ |
635 xargs etags -a -l none -r "/^(def\\(var\\|un\\|alias\\|const\\|macro\\|subst\\|struct\\|face\\|group\\|custom\\|ine-\\(function\\|compiler-macro\\|[a-z-]+alias\\)\\)[ ]+'?\\([^ ]+\\)/\\3/" | |
636 | |
637 info: FRC.info | |
2427 | 638 cd ${srcdir}/man && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@ |
380 | 639 |
640 dvi: | |
2427 | 641 cd ${srcdir}/man && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@ |
380 | 642 |
643 ## Fix up version information in executables (Solaris-only) | |
644 mcs: | |
645 date=`LANG=C LC_ALL=C date -u '+%e %b %Y'`; \ | |
646 ident="@(#)RELEASE VERSION XEmacs ${version} $${date}"; \ | |
647 for f in `file lib-src/* src/${PROGNAME} | grep ELF | sed -e 's/:.*//'`; do \ | |
648 mcs -da "$${ident} `echo $${f} | sed 's/.*\///'`" $${f}; \ | |
649 done |