1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-09 05:01:02 -08:00

Removing windows dll export symbols and script to generate them, as we're not longer building dlls.

Copied from Perforce
 Change: 179175
 ServerID: perforce.ravenbrook.com
This commit is contained in:
Richard Brooksby 2012-09-02 16:44:34 +01:00
parent 74c3b4b877
commit 8631e4a2f7
2 changed files with 0 additions and 361 deletions

View file

@ -1,203 +0,0 @@
#!/bin/sh
# $Header$
#
# Copyright (C) 2004-2005 Ravenbrook Limited. See end of file for license.
#
# expgen.sh
#
# Export Generator
#
# This is a script to generate the a list of exports that is required
# for Windows DLL creation.
#
# It processed the mps header files and produces a .DEF file that is
# suitable for use with the linker when producing a DLL file on Windows.
#
# When run, this script produces the following output files:
# expgen - a plain text list of functions declared in the header files.
# w3gen.def - a .def file suitable for use in the linker stage when
# building a Windows .DLL.
#
# Procedure for rebuilding a new w3gen.def
#
# This procedure should be carried out when the contents of w3gen.def
# would change. This is a bit tricky to say exactly when, but certainly
# when:
# a) new functions are declared in public header files.
# b) different header files are released to a client.
#
# Procedure:
#
# 0) Note: This procedure worked with gcc 3.3 "gcc (GCC) 3.3 20030304
# (Apple Computer, Inc. build 1495)", running on Mac OS X 10.3.
# However, at 2005-10-12, with gcc 4.0 "gcc version 4.0.0 (Apple
# Computer, Inc. build 5026)", running on Mac OS X 10.4.2, it did not
# work. Invoking "gcc -fdump-translation-unit spong.h" did not produce
# a "spong.h.tu" file.
#
# 1) Ensure that the sources for w3gen.def are submitted. w3gen.def
# must be built from versioned sources.
# The sources are:
# expgen.sh
# w3build.bat
# all the headers that get included.
# For safety's sake better to ensure that no files are open:
# p4 opened ...
# should say '... - file(s) not opened on this client.'
#
# 2) Open w3gen.def for edit (making it writable)
# p4 open w3gen.def
#
# 3) Run this script.
# sh expgen.sh
# There should be no output when successful.
#
# 4) Eyeball the diff.
# p4 diff ...
# Check the that resulting diff is sane. For most changes it should
# just consist of a new symbol being included (plus some Header related
# junk).
#
# 5) Submit the change.
# p4 submit ...
#
#
# Design
#
# The script works by using the -fdump-translation-unit option of gcc.
# This produces a more easily parseable rendering of the header files.
# A fairly simple awk script is used to process the output.
#
#
# Dependencies
#
# This script currently depends fairly heavily on being run in a
# Unix-like environment with access to the GNU compiler.
#
# It's also fairly sensitive to changes in the undocumented format
# produced by gcc -fdump-translation-unit. Hopefully it is fairly easy
# to adapt to changes in this output.
#
# Assumes it can freely write to the files "fun", "name-s".
#
#
# Awk crash course
#
# Awk processes files line-by-line, thus the entire script is executed
# for each line of the input file (more complex awk scripts can control
# this using "next" and "getline" and so on).
#
# In awk $exp identifies a field within the line. $1 is the first
# field, $2 is the second and so on. $0 is the whole line. By default
# fields are separated by whitespace.
#
# string ~ RE is a matching expression and evaulated to true iff the
# string is matched by the regular expression.
#
# REFERENCES
#
# [SUSV3] Single UNIX Specification Version 3,
# http://www.unix.org/single_unix_specification/
#
# For documenation of the standard utilities: sh, awk, join, sort, sed
#
# [MSDN-LINKER-DEF] Module-Definition (.def) files,
# http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_core_module.2d.definition_files.asp
#
# For documentation on the format of .def files.
tu () {
# if invoked on a file called spong.h will produce a file named
# spong.h.tu
gcc -fdump-translation-unit -o /dev/null "$@"
}
# This list of header files is produced by
# awk '/^copy.*\.h/{print $2}' w3build.bat
# followed by manual removal of mpsw3.h mpswin.h (which gcc on UNIX
# cannot parse). Also removed are mpsio.h mpslib.h as they defined
# interfaces that mps _uses_ not defines. Also removed is mpscmvff.h as
# it does not get included in mps.lib. Also removed is mpslibcb.h,
# which now has its own mpslibcb.def file (job002148).
# The functions declared in mpsw3.h have to be added to the .def file by
# hand later in this script.
f='mps.h
mpsavm.h
mpsacl.h
mpscamc.h
mpscams.h
mpscawl.h
mpsclo.h
mpscmv.h
mpscsnc.h
mpstd.h'
tu $f
>expgen
for a in $f
do
>fun
awk '
$2=="function_decl" && $7=="srcp:" && $8 ~ /^'$a':/ {print $4 >"fun"}
$2=="identifier_node"{print $1,$4}
' $a.tu |
sort -k 1 >name-s
echo ';' $a >>expgen
sort -k 1 fun |
join -o 2.2 - name-s >>expgen
done
{
printf '; %sHeader%s\n' '$' '$'
echo '; DO NOT EDIT. Automatically generated by $Header$' | sed 's/\$/!/g'
echo 'EXPORTS'
cat expgen
# This is where we manually the functions declared in mpsw3.h
echo ';' mpsw3.h - by hand
echo mps_SEH_filter
echo mps_SEH_handler
} > w3gen.def
# C. COPYRIGHT AND LICENSE
#
# Copyright (C) 2004-2005 Ravenbrook Limited <http://www.ravenbrook.com/>.
# All rights reserved. This is an open source license. Contact
# Ravenbrook for commercial licensing options.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# 3. Redistributions in any form must be accompanied by information on how
# to obtain complete source code for this software and any accompanying
# software that uses this software. The source code must either be
# included in the distribution or be available for no more than the cost
# of distribution plus a nominal fee, and must be freely redistributable
# under reasonable conditions. For an executable file, complete source
# code means the source code for all modules it contains. It does not
# include source code for modules or files that typically accompany the
# major components of the operating system on which the executable file
# runs.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
# PURPOSE, OR NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View file

@ -1,158 +0,0 @@
; $Header$
; --- EXTERNAL MPS FUNCTIONS ---
; This is a list of the external MPS functions (those a client
; might wish to call) present in the accompanying mps.lib library.
; This list is for the w3i3mv platform.
;
; If you wish to link with the MPS library AND re-export these
; functions from it (for example: so that other DLLs linked with
; your binary will also be able to make direct MPS calls), then
; you can specify:
; /def:<this file>
; to the MSVC LINK.EXE when you link your binary.
;
; This file was initially generated by !Header: //info.ravenbrook.com/project/mps/branch/2004-12-15/dll/code/expgen.sh#4 !
; And since then has been hand-edited. (But the result should be
; identical (apart from ordering) to what expgen.sh would produce,
; were it run on these sources. See MPS job001935.)
EXPORTS
; mps.h
mps_ap_fill_with_reservoir_permit
mps_ap_fill
mps_commit
mps_reserve
mps_ap_destroy
mps_ap_create_v
mps_ap_create
mps_free
mps_alloc_v
mps_alloc
mps_chain_destroy
mps_chain_create
mps_pool_destroy
mps_pool_create_v
mps_pool_create
mps_fmt_destroy
mps_fmt_create_fixed
mps_fmt_create_auto_header
mps_fmt_create_B
mps_fmt_create_A
mps_arena_extend
mps_arena_has_addr
mps_addr_pool
mps_addr_fmt
mps_space_committed
mps_space_reserved
mps_arena_formatted_objects_walk
mps_arena_spare_commit_limit
mps_arena_spare_commit_limit_set
mps_arena_commit_limit_set
mps_arena_commit_limit
mps_arena_spare_committed
mps_arena_committed
mps_arena_reserved
mps_space_destroy
mps_space_create
mps_arena_destroy
mps_arena_create_v
mps_arena_create
mps_space_collect
mps_space_park
mps_space_release
mps_space_clamp
mps_arena_step
mps_arena_collect
mps_arena_start_collect
mps_arena_unsafe_restore_protection
mps_arena_unsafe_expose_remember_protection
mps_arena_expose
mps_arena_park
mps_arena_release
mps_arena_clamp
mps_telemetry_flush
mps_fix
mps_pool_check_fenceposts
mps_telemetry_label
mps_telemetry_intern
mps_telemetry_control
mps_alert_collection_set
mps_definalize
mps_finalize
mps_message_gc_not_condemned_size
mps_message_gc_condemned_size
mps_message_gc_live_size
mps_message_finalization_ref
mps_message_type
mps_message_queue_type
mps_message_discard
mps_message_get
mps_message_type_disable
mps_message_type_enable
mps_message_poll
mps_collections
mps_ld_isstale
mps_ld_merge
mps_ld_add
mps_ld_reset
mps_thread_dereg
mps_thread_reg
mps_tramp
mps_stack_scan_ambig
mps_root_destroy
mps_root_create_reg
mps_root_create_fmt
mps_root_create_table_masked
mps_root_create_table
mps_root_create
mps_reserve_with_reservoir_permit
mps_reservoir_available
mps_reservoir_limit
mps_arena_roots_walk
mps_reservoir_limit_set
mps_sac_empty
mps_pool_check_free_space
mps_sac_fill
mps_sac_flush
mps_sac_free
mps_sac_alloc
mps_sac_destroy
mps_sac_create
mps_rank_weak
mps_ap_alloc_pattern_reset
mps_rank_exact
mps_ap_alloc_pattern_end
mps_rank_ambig
mps_ap_alloc_pattern_begin
mps_alloc_pattern_ramp_collect_all
mps_alloc_pattern_ramp
mps_ap_trip
mps_ap_frame_pop
mps_ap_frame_push
; mpsavm.h
mps_arena_class_vmnz
mps_arena_class_vm
mps_arena_vm_growth
; mpsacl.h
mps_arena_class_cl
; mpscamc.h
mps_class_amc
mps_amc_apply
mps_class_amcz
; mpscams.h
mps_class_ams_debug
mps_class_ams
; mpscawl.h
mps_class_awl
; mpsclo.h
mps_class_lo
; mpscmv.h
mps_mv_size
mps_class_mv_debug
mps_mv_free_size
mps_class_mv
; mpscsnc.h
mps_class_snc
; mpstd.h
; mpsw3.h - by hand
mps_SEH_filter
mps_SEH_handler