outforms.h
上传用户:yuppie_zhu
上传日期:2007-01-08
资源大小:535k
文件大小:5k
源码类别:

编译器/解释器

开发平台:

C/C++

  1. /* outform.h header file for binding output format drivers to the
  2.  *              remainder of the code in the Netwide Assembler
  3.  *
  4.  * The Netwide Assembler is copyright (C) 1996 Simon Tatham and
  5.  * Julian Hall. All rights reserved. The software is
  6.  * redistributable under the licence given in the file "Licence"
  7.  * distributed in the NASM archive.
  8.  */
  9. /*
  10.  * This header file allows configuration of which output formats
  11.  * get compiled into the NASM binary. You can configure by defining
  12.  * various preprocessor symbols beginning with "OF_", either on the
  13.  * compiler command line or at the top of this file.
  14.  *
  15.  * OF_ONLY                -- only include specified object formats
  16.  * OF_name                -- ensure that output format 'name' is included
  17.  * OF_NO_name             -- remove output format 'name'
  18.  * OF_DOS                 -- ensure that 'obj', 'bin' & 'win32' are included.
  19.  * OF_UNIX                -- ensure that 'aout', 'aoutb', 'coff', 'elf' are in.
  20.  * OF_OTHERS              -- ensure that 'bin', 'as86' & 'rdf' are in.
  21.  * OF_ALL                 -- ensure that all formats are included.
  22.  *
  23.  * OF_DEFAULT=of_name     -- ensure that 'name' is the default format.
  24.  *
  25.  * eg: -DOF_UNIX -DOF_ELF -DOF_DEFAULT=of_elf would be a suitable config
  26.  * for an average linux system.
  27.  *
  28.  * Default config = -DOF_ALL -DOF_DEFAULT=of_bin
  29.  *
  30.  * You probably only want to set these options while compiling 'nasm.c'. */
  31. #ifndef NASM_OUTFORMS_H
  32. #define NASM_OUTFORMS_H
  33. #include "nasm.h"
  34. /* -------------- USER MODIFIABLE PART ---------------- */
  35. /*
  36.  * Insert #defines here in accordance with the configuration
  37.  * instructions above.
  38.  *
  39.  * E.g.
  40.  *
  41.  * #define OF_ONLY
  42.  * #define OF_OBJ
  43.  * #define OF_BIN
  44.  *
  45.  * for a 16-bit DOS assembler with no extraneous formats.
  46.  */
  47. /* ------------ END USER MODIFIABLE PART -------------- */
  48. /* ====configurable info begins here==== */
  49. /* formats configurable:
  50.  * bin,obj,elf,aout,aoutb,coff,win32,as86,rdf */
  51. /* process options... */
  52. #ifndef OF_ONLY
  53. #ifndef OF_ALL
  54. #define OF_ALL      /* default is to have all formats */
  55. #endif
  56. #endif
  57. #ifdef OF_ALL      /* set all formats on... */
  58. #ifndef OF_BIN
  59. #define OF_BIN
  60. #endif
  61. #ifndef OF_OBJ
  62. #define OF_OBJ
  63. #endif
  64. #ifndef OF_ELF
  65. #define OF_ELF
  66. #endif
  67. #ifndef OF_COFF
  68. #define OF_COFF
  69. #endif
  70. #ifndef OF_AOUT
  71. #define OF_AOUT
  72. #endif
  73. #ifndef OF_AOUTB
  74. #define OF_AOUTB
  75. #endif
  76. #ifndef OF_WIN32
  77. #define OF_WIN32
  78. #endif
  79. #ifndef OF_AS86
  80. #define OF_AS86
  81. #endif
  82. #ifndef OF_RDF
  83. #define OF_RDF
  84. #endif
  85. #endif /* OF_ALL */
  86. /* turn on groups of formats specified.... */
  87. #ifdef OF_DOS
  88. #ifndef OF_OBJ
  89. #define OF_OBJ
  90. #endif
  91. #ifndef OF_BIN
  92. #define OF_BIN
  93. #endif
  94. #ifndef OF_WIN32
  95. #define OF_WIN32
  96. #endif
  97. #endif
  98. #ifdef OF_UNIX
  99. #ifndef OF_AOUT
  100. #define OF_AOUT
  101. #endif
  102. #ifndef OF_AOUTB
  103. #define OF_AOUTB
  104. #endif
  105. #ifndef OF_COFF
  106. #define OF_COFF
  107. #endif
  108. #ifndef OF_ELF
  109. #define OF_ELF
  110. #endif
  111. #endif
  112. #ifdef OF_OTHERS
  113. #ifndef OF_BIN
  114. #define OF_BIN
  115. #endif
  116. #ifndef OF_AS86
  117. #define OF_AS86
  118. #endif
  119. #ifndef OF_RDF
  120. #define OF_RDF
  121. #endif
  122. #endif
  123. /* finally... override any format specifically specifed to be off */
  124. #ifdef OF_NO_BIN
  125. #undef OF_BIN
  126. #endif
  127. #ifdef OF_NO_OBJ
  128. #undef OF_OBJ
  129. #endif
  130. #ifdef OF_NO_ELF
  131. #undef OF_ELF
  132. #endif
  133. #ifdef OF_NO_AOUT
  134. #undef OF_AOUT
  135. #endif
  136. #ifdef OF_NO_AOUTB
  137. #undef OF_AOUTB
  138. #endif
  139. #ifdef OF_NO_COFF
  140. #undef OF_COFF
  141. #endif
  142. #ifdef OF_NO_WIN32
  143. #undef OF_WIN32
  144. #endif
  145. #ifdef OF_NO_AS86
  146. #undef OF_AS86
  147. #endif
  148. #ifdef OF_NO_RDF
  149. #undef OF_RDF
  150. #endif
  151. #ifndef OF_DEFAULT
  152. #define OF_DEFAULT of_bin
  153. #endif
  154. #ifdef BUILD_DRIVERS_ARRAY        /* only if included from outform.c */
  155. /* pull in the externs for the different formats, then make the *drivers
  156.  * array based on the above defines */
  157. extern struct ofmt of_bin;
  158. extern struct ofmt of_aout;
  159. extern struct ofmt of_aoutb;
  160. extern struct ofmt of_coff;
  161. extern struct ofmt of_elf;
  162. extern struct ofmt of_as86;
  163. extern struct ofmt of_obj;
  164. extern struct ofmt of_win32;
  165. extern struct ofmt of_rdf;
  166. extern struct ofmt of_dbg;
  167. struct ofmt *drivers[]={
  168. #ifdef OF_BIN
  169.     &of_bin,
  170. #endif
  171. #ifdef OF_AOUT
  172.     &of_aout,
  173. #endif
  174. #ifdef OF_AOUTB
  175.     &of_aoutb,
  176. #endif
  177. #ifdef OF_COFF
  178.     &of_coff,
  179. #endif
  180. #ifdef OF_ELF
  181.     &of_elf,
  182. #endif
  183. #ifdef OF_AS86
  184.     &of_as86,
  185. #endif
  186. #ifdef OF_OBJ
  187.     &of_obj,
  188. #endif
  189. #ifdef OF_WIN32
  190.     &of_win32,
  191. #endif
  192. #ifdef OF_RDF
  193.     &of_rdf,
  194. #endif
  195. #ifdef OF_DBG
  196.     &of_dbg,
  197. #endif
  198.    NULL
  199. };
  200. #endif  /* BUILD_DRIVERS_ARRAY */
  201. #endif  /* NASM_OUTFORMS_H */