summaryrefslogtreecommitdiff
path: root/include/makeinclude/compiler.bor
blob: 87a3edcc96edad329b953d9e2f6649f638f1252d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
#
# $Id$
#
# Defines specific to a particular version of the compiler
#
# Inputs:
# ~~~~~~~
# STATIC - if defined means creating a static library or executable
# DEBUG - if defined means building with debug information
# UNICODE - if defined means building unicode
# CBX - if defined means building with the new CBuilderX preview compiler
#
# Outputs:
# ~~~~~~~~
# CC - name of compiler
# LD - name of linker
# AR - name of librarian
# RC - name of resource compiler
# COMMON_CFLAGS - compiler flags for all targets
# COMMON_LFLAGS - linker flags for all targets
# COMMON_LIBS - linker library files for all targets
# DLL_CFLAGS - compiler flags specific to DLL targets
# DLL_LFLAGS - linker flags specific to DLL targets
# DLL_STARTUP_OBJ - start-up object files for DLL targets
# EXE_CFLAGS - compiler flags specific to EXE targets
# EXE_LFLAGS - linker flags specific to EXE targets
# EXE_STARTUP_OBJ - start-up object files for EXE targets
# LIB_CFLAGS - compiler flags specific to static lib targets
# LIB_LFLAGS - flags specific to static lib targets (passed to
#              librarian)
# OBJ_EXT - the extension to be used for object files
# LIB_EXT - the extension to be used for libs
#

# Get the BCBVER and VCLVER, if it is not set, we default to BCB6.
!if $(BCBVER) == 8
VCLVER =
!else
!if $(BCBVER) == 6
VCLVER =
!else
!if $(BCBVER) == 5
VCLVER = 50
!else
!if $(BCBVER) == 4
VCLVER = 40
!else
!error BCBVER must be explicitly set as environment variable or is set to a not supported value.
!endif
!endif
!endif
!endif

!ifdef CBX
OBJ_EXT = o
LIB_EXT = a
!else
OBJ_EXT = obj
LIB_EXT = lib
!endif

#
# Build tools
#

!ifdef CBX
CC = bccx
LD = ilink
AR = ar
RC = brcc32
!else
CC = bcc32
LD = ilink32
AR = tlib
RC = brcc32
!endif

#
# Common flags
#
!ifndef $(BCB)
BCB = $(MAKEDIR)\..
!endif

!ifdef DEBUG
!ifdef CBX
DEBUG_CFLAGS = -v -y -Od -vi- -k -D_DEBUG -DACE_NO_INLINE=1
DEBUG_LFLAGS = -v
!else
DEBUG_CFLAGS = -v -y -Od -r- -vi- -k -D_DEBUG -DACE_NO_INLINE=1
DEBUG_LFLAGS = -v -L$(BCB)\lib\debug
!endif
!else
!if $(BCBVER) == 6 || $(BCBVER) == 5
DEBUG_CFLAGS = -OS -Ov -Og -DNDEBUG
!else
DEBUG_CFLAGS = -O2 -DNDEBUG
!endif
DEBUG_LFLAGS = -L$(BCB)\lib\release
!endif

!ifdef STATIC
STATIC_CFLAGS =
STATIC_LFLAGS =
!else
STATIC_CFLAGS = -tWR
STATIC_LFLAGS =
!endif

!ifdef CODEGUARD
CODEGUARD_CFLAGS = -vG
!endif

!ifdef UNICODE
UNICODE_CFLAGS = -DACE_USES_WCHAR -WU
!endif

!ifdef PCH_HEADER
PCH_CFLAGS = -H=$(OBJDIR)\$(NAME).csm -Hh=$(PCH_HEADER)
!endif

THREAD_CFLAGS = -tWM
WARNINGS_CFLAGS = -w-rvl -w-rch -w-ccc -w-obs -w-aus -w-pia -w-inl
!ifdef CBX
DEFINES_CFLAGS =
QUIET_CFLAGS =
MISC_CFLAGS =
!else
DEFINES_CFLAGS = -DWIN32;_NO_VCL
QUIET_CFLAGS = -q
MISC_CFLAGS =
!endif
DECORATOR_CFLAGS = -DACE_LD_DECORATOR_STR=ACE_LIB_TEXT(\"$(LIB_DECORATOR)\")

COMMON_CFLAGS = $(QUIET_CFLAGS) $(DEBUG_CFLAGS) $(THREAD_CFLAGS) \
	$(STATIC_CFLAGS) $(WARNINGS_CFLAGS) $(DEFINES_CFLAGS) \
	$(MISC_CFLAGS) $(CODEGUARD_CFLAGS) $(UNICODE_CFLAGS) \
	$(DECORATOR_CFLAGS) $(PCH_CFLAGS)

COMMON_LFLAGS = $(DEBUG_LFLAGS) $(STATIC_LFLAGS) -x -w-dup -Gn -L$(BCB)\lib -L$(BCB)\lib\psdk

#
# DLL specific flags
#

DLL_CFLAGS = -tWD
DLL_LFLAGS = -Tpd -Gi
!ifdef UNICODE
DLL_STARTUP_OBJ = c0d32w.$(OBJ_EXT)
!else
DLL_STARTUP_OBJ = c0d32.$(OBJ_EXT)
!endif

#
# EXE specific flags
#

EXE_CFLAGS =
EXE_LFLAGS = -Tpe
!ifdef UNICODE
EXE_STARTUP_OBJ = c0x32w.$(OBJ_EXT)
!else
EXE_STARTUP_OBJ = c0x32.$(OBJ_EXT)
!endif

#
# Static lib specific flags
#

LIB_CFLAGS =
!ifdef CBX
LIB_LFLAGS = cfrv
!else
!ifdef DEBUG
LIB_LFLAGS = /C /P4096
!else
LIB_LFLAGS = /C /P512
!endif
!endif


#
# Libraries to be linked
#

!ifdef CODEGUARD
CODEGUARD_LIB = cg32.lib
!endif

!ifdef STATIC
COMMON_LIBS = $(CODEGUARD_LIB) import32.$(LIB_EXT) cw32mt.lib ws2_32.lib
!else
COMMON_LIBS = $(CODEGUARD_LIB) import32.$(LIB_EXT) cw32mti.lib ws2_32.lib
!endif