i_win.pas 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. {
  2. Copyright (c) 1998-2008 by Peter Vreman
  3. This unit implements support information structures for win32
  4. This program is free software; you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation; either version 2 of the License, or
  7. (at your option) any later version.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program; if not, write to the Free Software
  14. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  15. ****************************************************************************
  16. }
  17. { This unit implements support information structures for win32. }
  18. unit i_win;
  19. {$i fpcdefs.inc}
  20. interface
  21. uses
  22. systems;
  23. const
  24. system_i386_win32_info : tsysteminfo =
  25. (
  26. system : system_i386_WIN32;
  27. name : 'Win32 for i386';
  28. shortname : 'Win32';
  29. flags : [tf_files_case_aware,tf_has_dllscanner,tf_use_function_relative_addresses,tf_smartlink_library
  30. ,tf_smartlink_sections{,tf_section_threadvars}{,tf_needs_dwarf_cfi},
  31. tf_winlikewidestring,tf_no_pic_supported,
  32. tf_no_generic_stackcheck,tf_has_winlike_resources];
  33. cpu : cpu_i386;
  34. unit_env : 'WIN32UNITS';
  35. extradefines : 'MSWINDOWS;WINDOWS';
  36. exeext : '.exe';
  37. defext : '.def';
  38. scriptext : '.bat';
  39. smartext : '.sl';
  40. unitext : '.ppu';
  41. unitlibext : '.ppl';
  42. asmext : '.s';
  43. objext : '.o';
  44. resext : '.res';
  45. resobjext : '.or';
  46. sharedlibext : '.dll';
  47. staticlibext : '.a';
  48. staticlibprefix : 'libp';
  49. sharedlibprefix : '';
  50. sharedClibext : '.dll';
  51. staticClibext : '.a';
  52. staticClibprefix : 'lib';
  53. sharedClibprefix : '';
  54. importlibprefix : 'libimp';
  55. importlibext : '.a';
  56. Cprefix : '_';
  57. newline : #13#10;
  58. dirsep : '\';
  59. assem : as_i386_pecoff;
  60. assemextern : as_gas;
  61. link : nil;
  62. linkextern : nil;
  63. ar : ar_gnu_ar;
  64. res : res_gnu_windres;
  65. dbg : dbg_stabs;
  66. script : script_dos;
  67. endian : endian_little;
  68. alignment :
  69. (
  70. procalign : 16;
  71. loopalign : 4;
  72. jumpalign : 0;
  73. constalignmin : 0;
  74. constalignmax : 16;
  75. varalignmin : 0;
  76. varalignmax : 16;
  77. localalignmin : 4;
  78. localalignmax : 8;
  79. recordalignmin : 0;
  80. recordalignmax : 4;
  81. maxCrecordalign : 16
  82. );
  83. first_parm_offset : 8;
  84. stacksize : 16*1024*1024;
  85. abi : abi_default;
  86. );
  87. system_x64_win64_info : tsysteminfo =
  88. (
  89. system : system_x86_64_win64;
  90. name : 'Win64 for x64';
  91. shortname : 'Win64';
  92. flags : [tf_files_case_aware,tf_has_dllscanner,tf_use_function_relative_addresses,
  93. tf_smartlink_sections,tf_smartlink_library,tf_winlikewidestring,tf_no_pic_supported,
  94. tf_no_generic_stackcheck,tf_has_winlike_resources];
  95. cpu : cpu_x86_64;
  96. unit_env : 'WIN64UNITS';
  97. extradefines : 'MSWINDOWS;WINDOWS';
  98. exeext : '.exe';
  99. defext : '.def';
  100. scriptext : '.bat';
  101. smartext : '.sl';
  102. unitext : '.ppu';
  103. unitlibext : '.ppl';
  104. asmext : '.s';
  105. objext : '.o';
  106. resext : '.res';
  107. resobjext : '.obj';
  108. sharedlibext : '.dll';
  109. staticlibext : '.a';
  110. staticlibprefix : 'libp';
  111. sharedlibprefix : '';
  112. sharedClibext : '.dll';
  113. staticClibext : '.a';
  114. staticClibprefix : 'lib';
  115. sharedClibprefix : '';
  116. importlibprefix : 'libimp';
  117. importlibext : '.a';
  118. Cprefix : '';
  119. newline : #13#10;
  120. dirsep : '\';
  121. assem : as_x86_64_pecoff;
  122. assemextern : as_x86_64_masm;
  123. link : nil;
  124. linkextern : nil;
  125. ar : ar_gnu_ar;
  126. res : res_win64_gorc;
  127. dbg : dbg_stabs;
  128. script : script_dos;
  129. endian : endian_little;
  130. alignment :
  131. (
  132. procalign : 16;
  133. loopalign : 8;
  134. jumpalign : 0;
  135. constalignmin : 0;
  136. constalignmax : 16;
  137. varalignmin : 0;
  138. varalignmax : 16;
  139. localalignmin : 8;
  140. localalignmax : 16;
  141. recordalignmin : 0;
  142. recordalignmax : 8;
  143. maxCrecordalign : 16
  144. );
  145. first_parm_offset : 16;
  146. stacksize : 16*1024*1024;
  147. abi : abi_default;
  148. );
  149. system_arm_wince_info : tsysteminfo =
  150. (
  151. system : system_arm_wince;
  152. name : 'WinCE for ARM';
  153. shortname : 'WinCE';
  154. flags : [tf_files_case_aware,tf_use_function_relative_addresses{,tf_winlikewidestring},
  155. tf_smartlink_sections,tf_requires_proper_alignment,tf_no_pic_supported,
  156. tf_has_winlike_resources];
  157. cpu : cpu_arm;
  158. unit_env : '';
  159. extradefines : 'UNDER_CE;WINDOWS;UNICODE';
  160. exeext : '.exe';
  161. defext : '.def';
  162. scriptext : '.bat';
  163. smartext : '.sl';
  164. unitext : '.ppu';
  165. unitlibext : '.ppl';
  166. asmext : '.s';
  167. objext : '.o';
  168. resext : '.res';
  169. resobjext : '.or';
  170. sharedlibext : '.dll';
  171. staticlibext : '.a';
  172. staticlibprefix : 'libp';
  173. sharedlibprefix : '';
  174. sharedClibext : '.dll';
  175. staticClibext : '.a';
  176. staticClibprefix : 'lib';
  177. sharedClibprefix : '';
  178. importlibprefix : 'libimp';
  179. importlibext : '.a';
  180. Cprefix : '';
  181. newline : #13#10;
  182. dirsep : '\';
  183. assem : as_gas;
  184. assemextern : as_gas;
  185. link : nil;
  186. linkextern : nil;
  187. ar : ar_gnu_ar_scripted;
  188. res : res_gnu_windres;
  189. dbg : dbg_stabs;
  190. script : script_dos;
  191. endian : endian_little;
  192. alignment :
  193. (
  194. procalign : 4;
  195. loopalign : 4;
  196. jumpalign : 0;
  197. constalignmin : 0;
  198. constalignmax : 4;
  199. varalignmin : 0;
  200. varalignmax : 4;
  201. localalignmin : 0;
  202. localalignmax : 4;
  203. recordalignmin : 0;
  204. recordalignmax : 4;
  205. maxCrecordalign : 4
  206. );
  207. first_parm_offset : 8;
  208. stacksize : 262144;
  209. abi : abi_default;
  210. );
  211. system_i386_wince_info : tsysteminfo =
  212. (
  213. system : system_i386_wince;
  214. name : 'WinCE for i386';
  215. shortname : 'WinCE';
  216. flags : [tf_files_case_aware,tf_use_function_relative_addresses
  217. {,tf_winlikewidestring},tf_smartlink_sections,tf_no_pic_supported,
  218. tf_has_winlike_resources];
  219. cpu : cpu_i386;
  220. unit_env : '';
  221. extradefines : 'UNDER_CE;WINDOWS;UNICODE';
  222. exeext : '.exe';
  223. defext : '.def';
  224. scriptext : '.bat';
  225. smartext : '.sl';
  226. unitext : '.ppu';
  227. unitlibext : '.ppl';
  228. asmext : '.s';
  229. objext : '.o';
  230. resext : '.res';
  231. resobjext : '.or';
  232. sharedlibext : '.dll';
  233. staticlibext : '.a';
  234. staticlibprefix : 'libp';
  235. sharedlibprefix : '';
  236. sharedClibext : '.dll';
  237. staticClibext : '.a';
  238. staticClibprefix : 'lib';
  239. sharedClibprefix : '';
  240. importlibprefix : 'libimp';
  241. importlibext : '.a';
  242. Cprefix : '_';
  243. newline : #13#10;
  244. dirsep : '\';
  245. assem : as_i386_pecoffwince;
  246. assemextern : as_gas;
  247. link : nil;
  248. linkextern : nil;
  249. ar : ar_gnu_ar_scripted;
  250. res : res_gnu_windres;
  251. dbg : dbg_stabs;
  252. script : script_dos;
  253. endian : endian_little;
  254. alignment :
  255. (
  256. procalign : 4;
  257. loopalign : 4;
  258. jumpalign : 0;
  259. constalignmin : 0;
  260. constalignmax : 4;
  261. varalignmin : 0;
  262. varalignmax : 4;
  263. localalignmin : 4;
  264. localalignmax : 4;
  265. recordalignmin : 0;
  266. recordalignmax : 4;
  267. maxCrecordalign : 16
  268. );
  269. first_parm_offset : 8;
  270. stacksize : 262144;
  271. abi : abi_default;
  272. );
  273. implementation
  274. initialization
  275. {$ifdef CPU86}
  276. {$ifdef WIN32}
  277. {$ifndef WDOSX}
  278. set_source_info(system_i386_win32_info);
  279. {$endif WDOSX}
  280. {$endif WIN32}
  281. {$ifdef WINCE}
  282. set_source_info(system_i386_wince_info);
  283. {$endif WINCE}
  284. {$endif CPU86}
  285. {$ifdef CPUX86_64}
  286. {$ifdef WIN64}
  287. {$ifndef WDOSX}
  288. set_source_info(system_x64_win64_info);
  289. {$endif WDOSX}
  290. {$endif WIN64}
  291. {$endif CPUX86_64}
  292. {$ifdef CPUARM}
  293. {$ifdef WINCE}
  294. set_source_info(system_arm_wince_info);
  295. {$endif WINCE}
  296. {$endif CPUARM}
  297. end.