wc32.mk 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353
  1. #############################################################################
  2. #
  3. # SciTech Multi-platform Graphics Library
  4. #
  5. # ========================================================================
  6. #
  7. # The contents of this file are subject to the SciTech MGL Public
  8. # License Version 1.0 (the "License"); you may not use this file
  9. # except in compliance with the License. You may obtain a copy of
  10. # the License at http://www.scitechsoft.com/mgl-license.txt
  11. #
  12. # Software distributed under the License is distributed on an
  13. # "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  14. # implied. See the License for the specific language governing
  15. # rights and limitations under the License.
  16. #
  17. # The Original Code is Copyright (C) 1991-1998 SciTech Software, Inc.
  18. #
  19. # The Initial Developer of the Original Code is SciTech Software, Inc.
  20. # All Rights Reserved.
  21. #
  22. # ========================================================================
  23. #
  24. # Descripton: Generic DMAKE startup makefile definitions file. Assumes
  25. # that the SCITECH environment variable has been set to point
  26. # to where all our stuff is installed. You should not need
  27. # to change anything in this file.
  28. #
  29. # Watcom C++ 10.x 32 bit version. Supports Rational's DOS4GW
  30. # DOS Extender, PMODE/W, Causeway, FlashTek's X32-VM,
  31. # Phar Lap's TNT DOS Extender, 32-bit Windows development and
  32. # 32-bit OS/2 development.
  33. #
  34. #############################################################################
  35. # Include standard startup script definitions
  36. .IMPORT: SCITECH
  37. .INCLUDE: "$(SCITECH)\makedefs\startup.mk"
  38. # Import enivornment variables that we use
  39. .IMPORT .IGNORE : USE_TNT USE_X32 USE_X32VM USE_PMODEW STKCALL USE_CAUSEWAY
  40. .IMPORT .IGNORE : USE_WIN386 USE_OS232 USE_OS2GUI WC_LIBBASE NOOPT DOSSTYLE
  41. .IMPORT .IGNORE : OS2_SHELL USE_CODEVIEW USE_DOS32A USE_QNX4 LEAVE_LINKFILE
  42. # We are compiling for a 32 bit envionment
  43. _32BIT_ := 1
  44. # Setup special environment for QNX 4 (Unix'ish)
  45. .IF $(USE_QNX4)
  46. USE_QNX := 1
  47. L := .a # Libraries
  48. LP := lib # LP - Library file prefix (name of file on disk)
  49. LL := lib # Library link prefix (name of library on link command line)
  50. LE := .a # Library link suffix (extension of library on link command line)
  51. .ENDIF
  52. # Default commands for compiling, assembling linking and archiving
  53. CC := wcc386
  54. CPP := wpp386
  55. CFLAGS := -zq-j-s-fpi87
  56. .IF $(USE_NASM)
  57. AS := nasm
  58. ASFLAGS := -t -f obj -d__FLAT__ -dSTDCALL_MANGLE -iINCLUDE -i$(SCITECH)\INCLUDE
  59. .ELSE
  60. .IF $(USE_TASM32)
  61. AS := tasm32
  62. DLL_TASM := tasm32
  63. .ELIF $(USE_TASMX)
  64. AS := tasmx
  65. DLL_TASM := tasmx
  66. .ELSE
  67. AS := tasm
  68. DLL_TASM := tasm
  69. .ENDIF
  70. ASFLAGS := /t /mx /m /w-res /w-mcp /D__FLAT__ /DSTDCALL_MANGLE /iINCLUDE /i$(SCITECH)\INCLUDE
  71. GAS := gcc
  72. GAS_FLAGS := -D__WATCOMC__ -D__SW_3S -D__SW_S -U__GNUC__ -UDJGPP -U__unix__ -Wall -I. -I$(SCITECH)\include -x assembler-with-cpp
  73. .ENDIF
  74. LD := wlink
  75. LDFLAGS =
  76. .IF $(USE_OS232)
  77. RC := rc
  78. .ELSE
  79. RC := wrc
  80. .ENDIF
  81. .IF $(USE_WIN32)
  82. RCFLAGS := -q /bt=nt
  83. .ELIF $(USE_OS232)
  84. .IF $(USE_OS2GUI)
  85. CFLAGS += -D__OS2_PM__
  86. .ENDIF
  87. .ELSE
  88. RCFLAGS := -q
  89. .ENDIF
  90. LIB := wlib
  91. LIBFLAGS := -q
  92. ILIB := wlib
  93. ILIBFLAGS := -c
  94. INTEL_X86 := 1
  95. # Set the compiler warning level
  96. .IF $(MAX_WARN)
  97. CFLAGS += -w4
  98. .ELSE
  99. CFLAGS += -w1
  100. .ENDIF
  101. # Optionally turn on debugging information (Codeview format)
  102. .IF $(DBG)
  103. .IF $(USE_WIN32)
  104. .IF $(USE_CODEVIEW)
  105. CFLAGS += -d2 -hc
  106. LDFLAGS += D CODEVIEW OPT CVPACK
  107. .ELSE
  108. CFLAGS += -d2
  109. LDFLAGS += D A
  110. .ENDIF
  111. .ELSE
  112. CFLAGS += -d2
  113. LDFLAGS += D A
  114. .ENDIF
  115. LIBFLAGS += -p=768
  116. .IF $(USE_NASM)
  117. ASFLAGS += -F borland -g
  118. .ELSE
  119. .IF $(USE_TASM32)
  120. ASFLAGS += /q # TASM32 fucks up Watcom C++ debug info
  121. .ELIF $(OS2_SHELL)
  122. ASFLAGS += /q # TASM for OS/2 fucks up Watcom C++ debug info
  123. .ELSE
  124. ASFLAGS += /zi
  125. .ENDIF
  126. .ENDIF
  127. .ELSE
  128. .IF $(USE_NASM)
  129. ASFLAGS += -F null
  130. .ELSE
  131. ASFLAGS += /q
  132. .ENDIF
  133. .END
  134. # Optionally turn on optimisations (with or without stack conventions)
  135. .IF $(STKCALL)
  136. .IF $(OPT)
  137. CFLAGS += -onatx-5s-fp5
  138. .ELIF $(OPT_SIZE)
  139. CFLAGS += -onaslmr-5s-fp5
  140. .ELIF $(NOOPT)
  141. CFLAGS += -od-5s
  142. .ELSE
  143. CFLAGS += -3s
  144. .END
  145. .ELSE
  146. .IF $(OPT)
  147. CFLAGS += -onatx-5r-fp5
  148. .ELIF $(OPT_SIZE)
  149. CFLAGS += -onaslmr-5r-fp5
  150. .ELIF $(NOOPT)
  151. CFLAGS += -od-5r
  152. .END
  153. .END
  154. # Optionally turn on direct i387 FPU instructions optimised for Pentium
  155. .IF $(FPU)
  156. CFLAGS += -DFPU387
  157. ASFLAGS += -dFPU387
  158. .END
  159. # Optionally compile a beta release version of a product
  160. .IF $(BETA)
  161. CFLAGS += -DBETA
  162. ASFLAGS += -dBETA
  163. .END
  164. .IF $(USE_TNT) # Use Phar Lap's TNT DOS Extender
  165. CFLAGS += -bt=nt -DTNT
  166. ASFLAGS += -dTNT
  167. LDFLAGS += SYS NT OP STUB=GOTNT.EXE
  168. LIB_OS = DOS32
  169. .ELIF $(USE_X32VM) # Use FlashTek X-32VM DOS extender
  170. CFLAGS += -bt=dos
  171. LDFLAGS += SYS X32RV
  172. DX_CFLAGS += -DX32VM
  173. DX_ASFLAGS += -dX32VM
  174. LIB_OS = DOS32
  175. .ELIF $(USE_X32) # Use FlashTek X-32 DOS extender
  176. CFLAGS += -bt=dos
  177. LDFLAGS += SYS X32R
  178. DX_CFLAGS += -DX32VM
  179. DX_ASFLAGS += -dX32VM
  180. LIB_OS = DOS32
  181. .ELIF $(USE_QNX4) # Build QNX 4 app
  182. CFLAGS += -bt=qnx386
  183. LDFLAGS += SYS QNX386FLAT OP CASEEXACT OP OFFSET=40k OP STACK=32k
  184. CFLAGS += -D__QNX__ -D__UNIX__
  185. ASFLAGS += -d__QNX__ -d__UNIX__
  186. LIB_OS = QNX4
  187. .ELIF $(USE_OS232)
  188. .IF $(BUILD_DLL)
  189. CFLAGS += -bm-bd-bt=os2-sg-DBUILD_DLL
  190. ASFLAGS += -dBUILD_DLL
  191. .ELSE
  192. CFLAGS += -bm-bt=os2-sg
  193. .ENDIF
  194. DX_ASFLAGS += -d__OS2__
  195. LIB_OS = os232
  196. .ELIF $(USE_SNAP) # Build 32 bit Snap app
  197. .IF $(BUILD_DLL)
  198. CFLAGS += -bm-bd-bt=nt-DBUILD_DLL
  199. ASFLAGS += -dBUILD_DLL
  200. .ELSE
  201. CFLAGS += -bm-bt=nt-D_WIN32
  202. .ENDIF
  203. LDFLAGS += OP nodefaultlibs
  204. .IF $(STKCALL)
  205. DEFLIBS := clib3s.lib,math3s.lib,noemu387.lib,
  206. .ELSE
  207. DEFLIBS := clib3r.lib,math3r.lib,noemu387.lib,
  208. .ENDIF
  209. LIB_OS = SNAP
  210. .ELIF $(USE_WIN32) # Build 32 bit Windows NT app
  211. .IF $(WIN32_GUI)
  212. .ELSE
  213. CFLAGS += -D__CONSOLE__
  214. .ENDIF
  215. .IF $(BUILD_DLL)
  216. CFLAGS += -bm-bd-bt=nt-sg-DBUILD_DLL -D_WIN32
  217. ASFLAGS += -dBUILD_DLL
  218. .ELSE
  219. CFLAGS += -bm-bt=nt-sg-D_WIN32
  220. .ENDIF
  221. DX_ASFLAGS += -d__WINDOWS32__
  222. LIB_OS = WIN32
  223. DEFLIBS := kernel32.lib,user32.lib,gdi32.lib,advapi32.lib,shell32.lib,winmm.lib,comdlg32.lib,comctl32.lib,ole32.lib,oleaut32.lib,version.lib,winspool.lib,uuid.lib,wsock32.lib,rpcrt4.lib,
  224. .ELIF $(USE_WIN386) # Build 32 bit Win386 extended app
  225. .IF $(BUILD_DLL)
  226. CFLAGS += -bd-bt=windows-DBUILD_DLL
  227. ASFLAGS += -dBUILD_DLL
  228. .ELSE
  229. CFLAGS += -bt=windows
  230. .ENDIF
  231. DX_ASFLAGS += -d__WIN386__
  232. LIB_OS = WIN386
  233. .ELIF $(USE_PMODEW) # PMODE/W
  234. CFLAGS += -bt=dos
  235. USE_DOS4GW := 1
  236. USE_REALDOS := 1
  237. LDFLAGS += SYS PMODEW
  238. DX_CFLAGS += -DDOS4GW
  239. DX_ASFLAGS += -dDOS4GW
  240. LIB_OS = DOS32
  241. .ELIF $(USE_CAUSEWAY) # Causeway
  242. CFLAGS += -bt=dos
  243. USE_DOS4GW := 1
  244. USE_REALDOS := 1
  245. LDFLAGS += SYS CAUSEWAY
  246. DX_CFLAGS += -DDOS4GW
  247. DX_ASFLAGS += -dDOS4GW
  248. LIB_OS = DOS32
  249. .ELIF $(USE_DOS32A) # DOS32/A
  250. CFLAGS += -bt=dos
  251. USE_DOS4GW := 1
  252. USE_REALDOS := 1
  253. LDFLAGS += SYS DOS32A
  254. DX_CFLAGS += -DDOS4GW
  255. DX_ASFLAGS += -dDOS4GW
  256. LIB_OS = DOS32
  257. .ELSE # Use DOS4GW
  258. CFLAGS += -bt=dos
  259. USE_DOS4GW := 1
  260. USE_REALDOS := 1
  261. LDFLAGS += SYS DOS4G
  262. DX_CFLAGS += -DDOS4GW
  263. DX_ASFLAGS += -dDOS4GW
  264. LIB_OS = DOS32
  265. .END
  266. # Disable linking to default C runtime library and PM library
  267. .IF $(NO_RUNTIME)
  268. LDFLAGS += OP nodefaultlibs
  269. DEFLIBS :=
  270. .ELSE
  271. # Place to look for PM library files
  272. .IF $(USE_SNAP) # Build 32 bit Snap app or dll
  273. PMLIB :=
  274. .ELIF $(USE_WIN32)
  275. .IF $(STKCALL)
  276. PMLIB := spm.lib,
  277. .ELSE
  278. PMLIB := pm.lib,
  279. .ENDIF
  280. .ELIF $(USE_OS232)
  281. .IF $(STKCALL)
  282. .IF $(USE_OS2GUI)
  283. PMLIB := spm_pm.lib,
  284. .ELSE
  285. PMLIB := spm.lib,
  286. .ENDIF
  287. .ELSE
  288. .IF $(USE_OS2GUI)
  289. PMLIB := pm_pm.lib,
  290. .ELSE
  291. PMLIB := pm.lib,
  292. .ENDIF
  293. .ENDIF
  294. .ELIF $(USE_QNX4)
  295. .IF $(STKCALL)
  296. PMLIB := libspm.a,
  297. .ELSE
  298. PMLIB := libpm.a,
  299. .ENDIF
  300. .ELIF $(USE_TNT)
  301. .IF $(STKCALL)
  302. PMLIB := tnt\spm.lib,
  303. .ELSE
  304. PMLIB := tnt\pm.lib,
  305. .ENDIF
  306. .ELIF $(USE_X32)
  307. .IF $(STKCALL)
  308. PMLIB := x32\spm.lib,
  309. .ELSE
  310. PMLIB := x32\pm.lib,
  311. .ENDIF
  312. .ELSE
  313. .IF $(STKCALL)
  314. PMLIB := dos4gw\spm.lib,
  315. .ELSE
  316. PMLIB := dos4gw\pm.lib,
  317. .ENDIF
  318. .ENDIF
  319. .ENDIF
  320. # Define the base directory for library files
  321. .IF $(CHECKED)
  322. LIB_BASE_DIR := $(SCITECH_LIB)\lib\debug
  323. CFLAGS += -DCHECKED=1
  324. .ELSE
  325. LIB_BASE_DIR := $(SCITECH_LIB)\lib\release
  326. .ENDIF
  327. # Define where to install library files
  328. LIB_BASE := $(LIB_BASE_DIR)\$(LIB_OS)\$(WC_LIBBASE)
  329. LIB_DEST := $(LIB_BASE)
  330. LDFLAGS += op map
  331. # Define which file contains our rules
  332. RULES_MAK := wc32.mk