create_symbols_file.py
上传用户:shw771010
上传日期:2022-01-05
资源大小:991k
文件大小:5k
源码类别:

Audio

开发平台:

Unix_Linux

  1. #!/usr/bin/python
  2. # Copyright (C) 2003-2009 Erik de Castro Lopo <erikd@mega-nerd.com>
  3. #
  4. # All rights reserved.
  5. #
  6. # Redistribution and use in source and binary forms, with or without
  7. # modification, are permitted provided that the following conditions are
  8. # met:
  9. #
  10. #     * Redistributions of source code must retain the above copyright
  11. #       notice, this list of conditions and the following disclaimer.
  12. #     * Redistributions in binary form must reproduce the above copyright
  13. #       notice, this list of conditions and the following disclaimer in
  14. #       the documentation and/or other materials provided with the
  15. #       distribution.
  16. #     * Neither the author nor the names of any contributors may be used
  17. #       to endorse or promote products derived from this software without
  18. #       specific prior written permission.
  19. #
  20. # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  21. # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
  22. # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  23. # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  24. # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  25. # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  26. # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
  27. # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  28. # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
  29. # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  30. # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  31. import re, sys
  32. #----------------------------------------------------------------
  33. # These are all of the public functions exported from libsndfile.
  34. #
  35. # Its important not to change the order they are listed in or
  36. # the ordinal values in the second column.
  37. ALL_SYMBOLS = (
  38. ( "sf_command",  1 ),
  39. ( "sf_open", 2 ),
  40. ( "sf_close", 3 ),
  41. ( "sf_seek", 4 ),
  42. ( "sf_error", 7 ),
  43. ( "sf_perror", 8 ),
  44. ( "sf_error_str", 9 ),
  45. ( "sf_error_number", 10 ),
  46. ( "sf_format_check", 11 ),
  47. ( "sf_read_raw", 16 ),
  48. ( "sf_readf_short", 17 ),
  49. ( "sf_readf_int", 18 ),
  50. ( "sf_readf_float", 19 ),
  51. ( "sf_readf_double", 20 ),
  52. ( "sf_read_short", 21 ),
  53. ( "sf_read_int", 22 ),
  54. ( "sf_read_float", 23 ),
  55. ( "sf_read_double", 24 ),
  56. ( "sf_write_raw", 32 ),
  57. ( "sf_writef_short", 33 ),
  58. ( "sf_writef_int", 34 ),
  59. ( "sf_writef_float", 35 ),
  60. ( "sf_writef_double", 36 ),
  61. ( "sf_write_short", 37 ),
  62. ( "sf_write_int", 38 ),
  63. ( "sf_write_float", 39 ),
  64. ( "sf_write_double", 40 ),
  65. ( "sf_strerror", 50 ),
  66. ( "sf_get_string", 60 ),
  67. ( "sf_set_string", 61 ),
  68. ( "sf_version_string",68 ),
  69. ( "sf_open_fd", 70 ),
  70. ( "sf_wchar_open", 71  ),
  71. ( "sf_open_virtual", 80 ),
  72. ( "sf_write_sync", 90 )
  73. )
  74. #-------------------------------------------------------------------------------
  75. def linux_symbols (progname, version):
  76. print "# Auto-generated by %sn" %progname
  77. print "libsndfile.so.%s" % version
  78. print "{"
  79. print "  global:"
  80. for name, ordinal in ALL_SYMBOLS:
  81. if  name == "sf_wchar_open":
  82. continue
  83. print "    %s ;" % name
  84. print "  local:"
  85. print "    * ;"
  86. print "} ;"
  87. print
  88. return
  89. def darwin_symbols (progname, version):
  90. print "# Auto-generated by %sn" %progname
  91. for name, ordinal in ALL_SYMBOLS:
  92. if  name == "sf_wchar_open":
  93. continue
  94. print "_%s" % name
  95. print
  96. return
  97. def win32_symbols (progname, version, name):
  98. print "; Auto-generated by %sn" %progname
  99. print "LIBRARY %s-%s.dll" % (name, re.sub ("..*", "", version))
  100. print "EXPORTSn"
  101. for name, ordinal in ALL_SYMBOLS:
  102. print "%-20s @%s" % (name, ordinal)
  103. print
  104. return
  105. def os2_symbols (progname, version, name):
  106. print "; Auto-generated by %sn" %progname
  107. print "LIBRARY %s%s" % (name, re.sub ("..*", "", version))
  108. print "INITINSTANCE TERMINSTANCE"
  109. print "CODE PRELOAD MOVEABLE DISCARDABLE"
  110. print "DATA PRELOAD MOVEABLE MULTIPLE NONSHARED"
  111. print "EXPORTSn"
  112. for name, ordinal in ALL_SYMBOLS:
  113. if  name == "sf_wchar_open":
  114. continue
  115. print "_%-20s @%s" % (name, ordinal)
  116. print
  117. return
  118. def plain_symbols (progname, version, name):
  119. for name, ordinal in ALL_SYMBOLS:
  120. print name
  121. def no_symbols (os_name):
  122. print
  123. print "No known way of restricting exported symbols on '%s'." % os_name
  124. print "If you know a way, please contact the author."
  125. print
  126. return
  127. #-------------------------------------------------------------------------------
  128. progname = re.sub (".*[\/]", "", sys.argv [0])
  129. if len (sys.argv) != 3:
  130. print
  131. print "Usage : %s <target OS name> <libsndfile version>." % progname
  132. print
  133. print "    Currently supported values for target OS are:"
  134. print "          linux"
  135. print "          darwin     (ie MacOSX)"
  136. print "          win32      (ie wintendo)"
  137. print "          cygwin     (Cygwin on wintendo)"
  138. print "          os2        (OS/2)"
  139. print "          plain      (plain list of symbols)"
  140. print
  141. sys.exit (1)
  142. os_name = sys.argv [1]
  143. version = re.sub (".[a-z0-9]+$", "", sys.argv [2])
  144. if os_name == "linux":
  145. linux_symbols (progname, version)
  146. elif os_name == "darwin":
  147. darwin_symbols (progname, version)
  148. elif os_name == "win32":
  149. win32_symbols (progname, version, "libsndfile")
  150. elif os_name == "cygwin":
  151. win32_symbols (progname, version, "cygsndfile")
  152. elif os_name == "os2":
  153. os2_symbols (progname, version, "sndfile")
  154. elif os_name == "static":
  155. plain_symbols (progname, version, "")
  156. else:
  157. no_symbols (os_name)
  158. sys.exit (0)