diff src/libsndfile-1.0.27/src/create_symbols_file.py @ 125:cd6cdf86811e

Current libsndfile source
author Chris Cannam <cannam@all-day-breakfast.com>
date Tue, 18 Oct 2016 13:22:47 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/libsndfile-1.0.27/src/create_symbols_file.py	Tue Oct 18 13:22:47 2016 +0100
@@ -0,0 +1,182 @@
+#!/usr/bin/python
+
+# Copyright (C) 2003-2012 Erik de Castro Lopo <erikd@mega-nerd.com>
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+#       notice, this list of conditions and the following disclaimer.
+#     * 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.
+#     * Neither the author nor the names of any contributors may be used
+#       to endorse or promote products derived from this software without
+#       specific prior written permission.
+#
+# 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 AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# 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.
+
+import re, sys
+
+#----------------------------------------------------------------
+# These are all of the public functions exported from libsndfile.
+#
+# Its important not to change the order they are listed in or
+# the ordinal values in the second column.
+
+ALL_SYMBOLS = (
+	(	"sf_command",	 		1	),
+	(	"sf_open",				2	),
+	(	"sf_close",				3	),
+	(	"sf_seek",				4	),
+	(	"sf_error",				7	),
+	(	"sf_perror",			8	),
+	(	"sf_error_str",			9	),
+	(	"sf_error_number",		10	),
+	(	"sf_format_check",		11	),
+	(	"sf_read_raw",			16	),
+	(	"sf_readf_short",		17	),
+	(	"sf_readf_int",			18	),
+	(	"sf_readf_float",		19	),
+	(	"sf_readf_double",		20	),
+	(	"sf_read_short",		21	),
+	(	"sf_read_int",			22	),
+	(	"sf_read_float",		23	),
+	(	"sf_read_double",		24	),
+	(	"sf_write_raw",			32	),
+	(	"sf_writef_short",		33	),
+	(	"sf_writef_int",		34	),
+	(	"sf_writef_float",		35	),
+	(	"sf_writef_double",		36	),
+	(	"sf_write_short",		37	),
+	(	"sf_write_int",			38	),
+	(	"sf_write_float",		39	),
+	(	"sf_write_double",		40	),
+	(	"sf_strerror",			50	),
+	(	"sf_get_string",		60	),
+	(	"sf_set_string",		61	),
+	(	"sf_version_string",	68	),
+	(	"sf_open_fd",			70	),
+	(	"sf_wchar_open",		71  ),
+	(	"sf_open_virtual",		80	),
+	(	"sf_write_sync",		90	),
+	(	"sf_set_chunk",			100	),
+	(	"sf_get_chunk_size",	101 ),
+	(	"sf_get_chunk_data",	102 ),
+	(	"sf_get_chunk_iterator",	103 ),
+	(	"sf_next_chunk_iterator",	104 ),
+	(	"sf_current_byterate",	110 )
+	)
+
+#-------------------------------------------------------------------------------
+
+def linux_symbols (progname, version):
+	print ("# Auto-generated by %s\n" %progname)
+	print ("libsndfile.so.%s" % version)
+	print ("{")
+	print ("  global:")
+	for name, ordinal in ALL_SYMBOLS:
+		if  name == "sf_wchar_open":
+			continue
+		print ("    %s ;" % name)
+	print ("  local:")
+	print ("    * ;")
+	print ("} ;")
+	sys.stdout.write ("\n")
+	return
+
+def darwin_symbols (progname, version):
+	print ("# Auto-generated by %s\n" %progname)
+	for name, ordinal in ALL_SYMBOLS:
+		if  name == "sf_wchar_open":
+			continue
+		print ("_%s" % name)
+	sys.stdout.write ("\n")
+	return
+
+def win32_symbols (progname, version, name):
+	print ("; Auto-generated by %s\n" %progname)
+	print ("LIBRARY %s-%s.dll" % (name, re.sub ("\..*", "", version)))
+	print ("EXPORTS\n")
+	for name, ordinal in ALL_SYMBOLS:
+		print ("%-20s @%s" % (name, ordinal))
+	sys.stdout.write ("\n")
+	return
+
+def os2_symbols (progname, version, name):
+	print ("; Auto-generated by %s\n" %progname)
+	print ("LIBRARY %s%s" % (name, re.sub ("\..*", "", version)))
+	print ("INITINSTANCE TERMINSTANCE")
+	print ("CODE PRELOAD MOVEABLE DISCARDABLE")
+	print ("DATA PRELOAD MOVEABLE MULTIPLE NONSHARED")
+	print ("EXPORTS\n")
+	for name, ordinal in ALL_SYMBOLS:
+		if  name == "sf_wchar_open":
+			continue
+		print ("_%-20s @%s" % (name, ordinal))
+	sys.stdout.write ("\n")
+	return
+
+def plain_symbols (progname, version, name):
+	for name, ordinal in ALL_SYMBOLS:
+		print (name)
+
+def no_symbols (os_name):
+	sys.stdout.write ("\n")
+	print ("No known way of restricting exported symbols on '%s'." % os_name)
+	print ("If you know a way, please contact the author.")
+	sys.stdout.write ("\n")
+	return
+
+#-------------------------------------------------------------------------------
+
+progname = re.sub (".*[\\/]", "", sys.argv [0])
+
+if len (sys.argv) != 3:
+	sys.stdout.write ("\n")
+	print ("Usage : %s <target OS name> <libsndfile version>." % progname)
+	sys.stdout.write ("\n")
+	print ("    Currently supported values for target OS are:")
+	print ("          linux")
+	print ("          darwin     (ie MacOSX)")
+	print ("          win32      (ie wintendo)")
+	print ("          cygwin     (Cygwin on wintendo)")
+	print ("          os2        (OS/2)")
+	print ("          plain      (plain list of symbols)")
+	sys.stdout.write ("\n")
+	sys.exit (1)
+
+os_name = sys.argv [1]
+version = re.sub ("\.[a-z0-9]+$", "", sys.argv [2])
+
+if os_name == "linux" or os_name == "gnu" or os_name == "binutils":
+	linux_symbols (progname, version)
+elif os_name == "darwin":
+	darwin_symbols (progname, version)
+elif os_name == "win32":
+	win32_symbols (progname, version, "libsndfile")
+elif os_name == "cygwin":
+	win32_symbols (progname, version, "cygsndfile")
+elif os_name == "os2":
+	os2_symbols (progname, version, "sndfile")
+elif os_name == "static":
+	plain_symbols (progname, version, "")
+else:
+	no_symbols (os_name)
+
+sys.exit (0)
+