Skip to content

Commit 2b85184

Browse files
authored
Merge pull request DOCGroup#186 from jwillemsen/jwi-bmake
Refactored Embarcadero C++ Builder support
2 parents f647692 + 070b1ab commit 2b85184

File tree

2 files changed

+116
-228
lines changed

2 files changed

+116
-228
lines changed

templates/bmake.mpd

Lines changed: 40 additions & 190 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,34 @@
66
#
77
#----------------------------------------------------------------------------
88
<%marker(top)%>
9+
<%foreach(compilers)%>
10+
!ifdef <%normalize(uc(compiler))%>
11+
CC = <%cc%>
12+
OPTIMIZE_CFLAGS = <%optimize_flags%>
13+
DEBUG_CFLAGS = <%debug_flags%>
14+
WARN_FLAGS = <%warn_flags%>
15+
BINARY_FLAGS = <%binary_flags%>
16+
THREAD_FLAGS = <%thr_flags%>
17+
LIB_EXT = <%lib_ext%>
18+
COMMON_DEFINES =<%foreach(common_defines)%> -D<%common_define%><%endfor%>
19+
COMMON_FLAGS = <%foreach(common_flags)%><%common_flag%><%endfor%>
20+
OBJ_EXT = <%obj_ext%>
21+
LINKER_PATHS = <%linker_paths%>
22+
STARTUP_BITS = <%startup_bits%>
23+
LINK = <%link%>
24+
COMMON_LIBS = <%common_libs%>
25+
TLIB = <%tlib%>
26+
<%if(pch)%>PCH = 1<%endif%>
27+
!else
28+
<%endfor%>
29+
!error You must select one of these compilers:<%foreach(compilers)%> <%normalize(uc(compiler))%><%endfor%>
30+
<%foreach(compilers)%>
31+
!endif
32+
<%endfor%>
33+
934
<%foreach(configurations)%>
1035
!ifdef <%normalize(uc(configuration))%>
11-
OCFLAGS32 = <%if(optimize)%>-O1<%else%><%if(debug_prj)%>-v -y -Od -vi- -k<%foreach(debug_macros)%> -D<%debug_macro%><%endfor%><%endif%><%endif%><%foreach(defines)%> -D<%define%><%endfor%>
12-
OCFLAGS32C = <%if(optimize)%>-O3<%else%><%if(debug_prj)%>-Od -vi- <%foreach(debug_macros)%> -D<%debug_macro%><%endfor%><%endif%><%endif%><%foreach(defines)%> -D<%define%><%endfor%>
13-
OCFLAGS64 = <%if(optimize)%>-O3<%else%><%if(debug_prj)%>-g -O0 <%foreach(debug_macros)%> -D<%debug_macro%><%endfor%><%endif%><%endif%><%foreach(defines)%> -D<%define%><%endfor%>
36+
OCFLAGS = <%if(optimize)%>$(OPTIMIZE_CFLAGS)<%else%><%if(debug_prj)%> $(DEBUG_CFLAGS)<%foreach(debug_macros)%> -D<%debug_macro%><%endfor%><%endif%><%endif%><%foreach(defines)%> -D<%define%><%endfor%>
1437
CFG_DIR = <%intermediate_dir%>\\
1538
LIBMODIFIER = <%if(use_lib_modifier)%><%lib_modifier%><%endif%>
1639
EXEMODIFIER = <%if(use_exe_modifier)%><%lib_modifier%><%endif%>
@@ -54,43 +77,11 @@ CG_LIB = cg32.lib
5477

5578
DLL_EXT = <%dll_ext%>
5679
EXE_EXT = <%exe_ext%>
57-
<%if(build64bit)%>
58-
STARTUP_BITS = 64
59-
CC64 = <%cc64%>
60-
LINK64 = <%link64%>
61-
LIB_EXT = <%lib64_ext%>
62-
OBJ_EXT = <%obj64_ext%>
63-
THREADFLAGS = <%thrflags64%>
64-
BINARYFLAGS = <%binaryflags64%>
65-
LINKERPATHS = -L"$(BDS)\lib\win64\debug" -L"$(BDS)\lib\win64\release" -GE:HIGHENTROPYVA=off
66-
WARNFLAGS64 = <%warnflags64%>
67-
<%else%>
68-
LINK32 = <%link32%>
69-
STARTUP_BITS = 32
70-
!ifdef CLASSIC
71-
CC32 = <%cc32%>
72-
LIB_EXT = <%lib32_ext%>
73-
OBJ_EXT = <%obj32_ext%>
74-
THREADFLAGS = <%thrflags32%>
75-
BINARYFLAGS = <%binaryflags32%>
76-
LINKERPATHS = -L"$(BDS)\lib\win32\release" -L"$(BDS)\lib\win32\debug"
77-
WARNFLAGS32 = <%warnflags32%>
78-
!else
79-
CC32C = <%cc32c%>
80-
LIB_EXT = <%lib32c_ext%>
81-
OBJ_EXT = <%obj32c_ext%>
82-
THREADFLAGS = <%thrflags32c%>
83-
BINARYFLAGS = <%binaryflags32c%>
84-
LINKERPATHS = -L"$(BDS)\lib\win32c\debug" -L"$(BDS)\lib\win32c\release"
85-
WARNFLAGS32C = <%warnflags32c%>
86-
!endif
87-
<%endif%>
8880
RC = <%rc%>
89-
TLIB32 = <%tlib32%>
9081
DLLFLAGS = <%dllflags%>
9182
LIBFLAGS = <%libflags%>
9283
EXEFLAGS = <%exeflags%>
93-
CCFLAGS = <%ccflags%><%if(type_is_binary)%> $(BINARYFLAGS)<%endif%><%if(compile_flags)%> <%compile_flags%><%endif%>
84+
CCFLAGS = <%ccflags%><%if(type_is_binary)%> $(BINARY_FLAGS)<%endif%><%if(compile_flags)%> <%compile_flags%><%endif%>
9485

9586
<%if(use_vcl)%>
9687
STARTUP_LETTER = <%if(exename)%>w<%else%><%startup_letter%><%endif%>
@@ -124,7 +115,7 @@ OBJFILES = \
124115
<%if(libpaths)%>
125116

126117
LFLAGS = \
127-
$(LINKERPATHS) \
118+
$(LINKER_PATHS) \
128119
<%if(debug_prj)%>
129120
-v \
130121
-r \
@@ -146,16 +137,6 @@ LFLAGS = \
146137
<%endfor%>
147138
<%endif%>
148139

149-
<%if(build64bit)%>
150-
COMMON_LIBS = <%common_libs%> <%common64_libs%>
151-
<%else%>
152-
!ifdef CLASSIC
153-
COMMON_LIBS = $(CG_LIB) <%common_libs%> <%common32_libs%>
154-
!else
155-
COMMON_LIBS = <%common_libs%> <%common32c_libs%>
156-
!endif
157-
<%endif%>
158-
159140
LIBFILES = \
160141
<%foreach(reverse(libs))%>
161142
<%libname_prefix%><%lib%>$(LIBMODIFIER)$(ULIBMODIFIER)$(LIB_EXT) \
@@ -184,66 +165,15 @@ RC_FLAGS = \
184165
<%endif%>
185166
!endif
186167
<%endif%>
187-
<%if(!build64bit)%>
188-
<%if(pch_header)%>
189168

190-
# Borland bcc32 precompiled headers can choke on some header files.
169+
<%if(pch_header)%>
191170
# Set NO_USE_PCH if you do not want to use precompiled headers.
192171
!ifndef NO_USE_PCH
193-
!ifdef CLASSIC
194-
PCH_CFLAGS = \
195-
<%foreach(pch_defines)%>
196-
-D<%pch_define%> \
197-
<%endfor%>
198-
-H=$(INTERMEDIATE)\<%noextension(project_name)%>.csm -Hh=<%pch_header%>
172+
!ifdef PCH
173+
PCH_CFLAGS = <%foreach(pch_defines)%>-D<%pch_define%> <%endfor%>-H=$(INTERMEDIATE)\<%noextension(project_name)%>.csm -Hh=<%pch_header%>
199174
!endif
200175
!endif
201176
<%endif%>
202-
<%endif%>
203-
204-
<%if(build64bit)%>
205-
COMMON_FLAGS = \
206-
<%foreach(common64_flags)%>
207-
<%common64_flag%><%fornotlast(" \\")%>
208-
<%endfor%>
209-
<%else%>
210-
!ifdef CLASSIC
211-
COMMON_FLAGS = \
212-
<%foreach(common32_flags)%>
213-
<%common32_flag%><%fornotlast(" \\")%>
214-
<%endfor%>
215-
!else
216-
COMMON_FLAGS = \
217-
<%foreach(common32c_flags)%>
218-
<%common32c_flag%><%fornotlast(" \\")%>
219-
<%endfor%>
220-
!endif
221-
<%endif%>
222-
223-
<%if(build64bit)%>
224-
<%if(common64_defines)%>
225-
COMMON_DEFINES = \
226-
<%foreach(common64_defines)%>
227-
-D<%common64_define%><%fornotlast(" \\")%>
228-
<%endfor%>
229-
<%endif%>
230-
<%else%>
231-
!ifdef CLASSIC
232-
<%if(common32_defines)%>
233-
COMMON_DEFINES = \
234-
<%foreach(common32_defines)%>
235-
-D<%common32_define%><%fornotlast(" \\")%>
236-
<%endfor%>
237-
<%endif%>
238-
!else
239-
<%if(common32c_defines)%>
240-
COMMON_DEFINES = \
241-
<%foreach(common32c_defines)%>
242-
-D<%common32c_define%><%fornotlast(" \\")%>
243-
<%endfor%>
244-
<%endif%>
245-
!endif
246-
<%endif%>
247177

248178
CFLAGS = \
249179
<%foreach(cflags)%>
@@ -270,11 +200,7 @@ $(OUTPUTDIR)$(NAME)$(EXE_EXT): $(OBJFILES) $(RESOURCE)
270200
<%if(prelink)%>
271201
<%eval(prelink)%>
272202
<%endif%>
273-
<%if(build64bit)%>
274-
$(LINK64) @&&!
275-
<%else%>
276-
$(LINK32) @&&!
277-
<%endif%>
203+
$(LINK) @&&!
278204
$(EXEFLAGS) $(LFLAGS) $(STARTUP_OBJ) $(OBJFILES), $(OUTPUTDIR)$(NAME)$(EXE_EXT),, $(LIBFILES),, $(RESOURCE)
279205
!
280206

@@ -289,11 +215,7 @@ $(OUTPUTDIR)$(NAME)$(DLL_EXT): $(OBJFILES) $(RESOURCE)
289215
<%if(prelink)%>
290216
<%eval(prelink)%>
291217
<%endif%>
292-
<%if(build64bit)%>
293-
$(LINK64) @&&!
294-
<%else%>
295-
$(LINK32) @&&!
296-
<%endif%>
218+
$(LINK) @&&!
297219
$(DLLFLAGS) $(LFLAGS) $(STARTUP_OBJ) $(OBJFILES), $(OUTPUTDIR)$(NAME)$(DLL_EXT),, $(LIBFILES),, $(RESOURCE)
298220
!
299221
!endif
@@ -306,7 +228,7 @@ all:<%if(prebuild)%> __prebuild__<%endif%> $(OUTPUTDIR)$(NAME)$(LIB_EXT)<%if(pos
306228

307229
$(OUTPUTDIR)$(NAME)$(LIB_EXT): $(OBJFILES)
308230
@if not exist "$(OUTPUTDIR)" mkdir "$(OUTPUTDIR)"
309-
$(TLIB32) $(LIBFLAGS) $(OUTPUTDIR)$(NAME)$(LIB_EXT) @&&!
231+
$(TLIB) $(LIBFLAGS) $(OUTPUTDIR)$(NAME)$(LIB_EXT) @&&!
310232
+ $(**: = &^
311233
+ )
312234
!
@@ -372,121 +294,49 @@ generated: $(GENERATED_DIRTY)
372294
.path$(OBJ_EXT) = $(INTERMEDIATE)
373295

374296
.path.cpp = $(CPPDIR)
375-
<%if(build64bit)%>
376297
.cpp$(OBJ_EXT):
377298
@if not exist "$(INTERMEDIATE)" mkdir "$(INTERMEDIATE)"
378-
$(CC64) $(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS64) $(CG_CFLAGS) $(UC_CFLAGS) $(THREADFLAGS) $(CCFLAGS) $(CFLAGS) $(WARNFLAGS64) -c -o $(@D)\$(@F) $<
379-
<%else%>
380-
!ifdef CLASSIC
381-
.cpp$(OBJ_EXT):
382-
@if not exist "$(INTERMEDIATE)" mkdir "$(INTERMEDIATE)"
383-
$(CC32) $(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS32) $(CG_CFLAGS) $(UC_CFLAGS) $(THREADFLAGS) $(CCFLAGS) $(CFLAGS) $(WARNFLAGS32) -c -n$(@D) $<
384-
!else
385-
.cpp$(OBJ_EXT):
386-
@if not exist "$(INTERMEDIATE)" mkdir "$(INTERMEDIATE)"
387-
$(CC32C) $(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS32C) $(CG_CFLAGS) $(UC_CFLAGS) $(THREADFLAGS) $(CCFLAGS) $(CFLAGS) $(WARNFLAGS32C) -c -o $(@D)\$(@F) $<
388-
!endif
389-
<%endif%>
299+
$(CC) $(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS) $(CG_CFLAGS) $(UC_CFLAGS) $(THREAD_FLAGS) $(CCFLAGS) $(CFLAGS) $(WARN_FLAGS) -c -o $(@D)\$(@F) $<
390300

391301
.path.cxx = $(CPPDIR)
392-
<%if(build64bit)%>
393302
.cxx$(OBJ_EXT):
394303
@if not exist "$(INTERMEDIATE)" mkdir "$(INTERMEDIATE)"
395-
$(CC64) $(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS64) $(CG_CFLAGS) $(UC_CFLAGS) $(THREADFLAGS) $(CCFLAGS) $(CFLAGS) $(WARNFLAGS64) -c -o $(@D)\$(@F) $<
396-
<%else%>
397-
!ifdef CLASSIC
398-
.cxx$(OBJ_EXT):
399-
@if not exist "$(INTERMEDIATE)" mkdir "$(INTERMEDIATE)"
400-
$(CC32) $(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS32) $(CG_CFLAGS) $(UC_CFLAGS) $(THREADFLAGS) $(CCFLAGS) $(CFLAGS) $(WARNFLAGS32) -c -n$(@D) $<
401-
!else
402-
.cxx$(OBJ_EXT):
403-
@if not exist "$(INTERMEDIATE)" mkdir "$(INTERMEDIATE)"
404-
$(CC32C) $(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS32C) $(CG_CFLAGS) $(UC_CFLAGS) $(THREADFLAGS) $(CCFLAGS) $(CFLAGS) $(WARNFLAGS32C) -c -o $(@D)\$(@F) $<
405-
!endif
406-
<%endif%>
304+
$(CC) $(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS) $(CG_CFLAGS) $(UC_CFLAGS) $(THREAD_FLAGS) $(CCFLAGS) $(CFLAGS) $(WARN_FLAGS) -c -o $(@D)\$(@F) $<
407305

408306
.path.cc = $(CPPDIR)
409-
<%if(build64bit)%>
410-
.cc$(OBJ_EXT):
411-
@if not exist "$(INTERMEDIATE)" mkdir "$(INTERMEDIATE)"
412-
$(CC64) $(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS64) $(CG_CFLAGS) $(UC_CFLAGS) $(THREADFLAGS) $(CCFLAGS) $(CFLAGS) $(WARNFLAGS64) -c -o $(@D)\$(@F) $<
413-
<%else%>
414-
!ifdef CLASSIC
415307
.cc$(OBJ_EXT):
416308
@if not exist "$(INTERMEDIATE)" mkdir "$(INTERMEDIATE)"
417-
$(CC32) $(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS32) $(CG_CFLAGS) $(UC_CFLAGS) $(THREADFLAGS) $(CCFLAGS) $(CFLAGS) $(WARNFLAGS32) -c -n$(@D) $<
418-
!else
419-
.cc$(OBJ_EXT):
420-
@if not exist "$(INTERMEDIATE)" mkdir "$(INTERMEDIATE)"
421-
$(CC32C) $(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS32C) $(CG_CFLAGS) $(UC_CFLAGS) $(THREADFLAGS) $(CCFLAGS) $(CFLAGS) $(WARNFLAGS32C) -c -o $(@D)\$(@F) $<
422-
!endif
423-
<%endif%>
309+
$(CC) $(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS) $(CG_CFLAGS) $(UC_CFLAGS) $(THREAD_FLAGS) $(CCFLAGS) $(CFLAGS) $(WARN_FLAGS) -c -o $(@D)\$(@F) $<
424310

425311
.path.C = $(CPPDIR)
426-
<%if(build64bit)%>
427-
.C$(OBJ_EXT):
428-
@if not exist "$(INTERMEDIATE)" mkdir "$(INTERMEDIATE)"
429-
$(CC64) $(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS64) $(CG_CFLAGS) $(UC_CFLAGS) $(THREADFLAGS) $(CCFLAGS) $(CFLAGS) $(WARNFLAGS64) -c -o $(@D)\$(@F) $<
430-
<%else%>
431-
!ifdef CLASSIC
432-
.C$(OBJ_EXT):
433-
@if not exist "$(INTERMEDIATE)" mkdir "$(INTERMEDIATE)"
434-
$(CC32) $(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS32) $(CG_CFLAGS) $(UC_CFLAGS) $(THREADFLAGS) $(CCFLAGS) $(CFLAGS) $(WARNFLAGS32) -c -n$(@D) $<
435-
!else
436312
.C$(OBJ_EXT):
437313
@if not exist "$(INTERMEDIATE)" mkdir "$(INTERMEDIATE)"
438-
$(CC32C) $(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS32C) $(CG_CFLAGS) $(UC_CFLAGS) $(THREADFLAGS) $(CCFLAGS) $(CFLAGS) $(WARNFLAGS32C) -c -o $(@D)\$(@F) $<
439-
!endif
440-
<%endif%>
314+
$(CC) $(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS) $(CG_CFLAGS) $(UC_CFLAGS) $(THREAD_FLAGS) $(CCFLAGS) $(CFLAGS) $(WARN_FLAGS) -c -o $(@D)\$(@F) $<
441315

442316
.path.c = $(CPPDIR)
443-
<%if(build64bit)%>
444-
.c$(OBJ_EXT):
445-
@if not exist "$(INTERMEDIATE)" mkdir "$(INTERMEDIATE)"
446-
$(CC64) $(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS64) $(CG_CFLAGS) $(UC_CFLAGS) $(THREADFLAGS) $(CCFLAGS) $(CFLAGS) $(WARNFLAGS64) -c -o $(@D)\$(@F) $<
447-
<%else%>
448-
!ifdef CLASSIC
449-
.c$(OBJ_EXT):
450-
@if not exist "$(INTERMEDIATE)" mkdir "$(INTERMEDIATE)"
451-
$(CC32) $(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS32) $(CG_CFLAGS) $(UC_CFLAGS) $(THREADFLAGS) $(CCFLAGS) $(CFLAGS) $(WARNFLAGS32) -c -n$(@D) $<
452-
!else
453317
.c$(OBJ_EXT):
454318
@if not exist "$(INTERMEDIATE)" mkdir "$(INTERMEDIATE)"
455-
$(CC32C) $(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS32C) $(CG_CFLAGS) $(UC_CFLAGS) $(THREADFLAGS) $(CCFLAGS) $(CFLAGS) $(WARNFLAGS32C) -c -o $(@D)\$(@F) $<
456-
!endif
457-
<%endif%>
319+
$(CC) $(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS) $(CG_CFLAGS) $(UC_CFLAGS) $(THREAD_FLAGS) $(CCFLAGS) $(CFLAGS) $(WARN_FLAGS) -c -o $(@D)\$(@F) $<
458320

459321
<%foreach(source_files)%>
460322
<%if(transdir(source_file) || flag_overrides(source_file, buildflags))%>
461323
"$(INTERMEDIATE)\<%transdir(source_file)%><%basenoextension(source_file)%>$(OBJ_EXT)":
462324
@if not exist "$(INTERMEDIATE)\<%transdir(source_file)%>" mkdir "$(INTERMEDIATE)\<%transdir(source_file)%>"
463-
<%if(build64bit)%>
464-
$(CC64) <%if(flag_overrides(source_file, buildflags))%><%flag_overrides(source_file, buildflags)%> <%endif%>$(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS64) $(CG_CFLAGS) $(UC_CFLAGS) $(THREADFLAGS) $(CCFLAGS) $(CFLAGS) $(WARNFLAGS64) -c -o $(@D)\$(@F) <%source_file%>
465-
<%else%>
466-
!ifdef CLASSIC
467-
$(CC32) <%if(flag_overrides(source_file, buildflags))%><%flag_overrides(source_file, buildflags)%> <%endif%>$(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS32) $(CG_CFLAGS) $(UC_CFLAGS) $(THREADFLAGS) $(CCFLAGS) $(CFLAGS) $(WARNFLAGS32) -c -n$(@D) <%source_file%>
468-
!else
469-
$(CC32C) <%if(flag_overrides(source_file, buildflags))%><%flag_overrides(source_file, buildflags)%> <%endif%>$(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS32C) $(CG_CFLAGS) $(UC_CFLAGS) $(THREADFLAGS) $(CCFLAGS) $(CFLAGS) $(WARNFLAGS32C) -c -o $(@D)\$(@F) <%source_file%>
470-
!endif
471-
<%endif%>
472-
325+
$(CC) <%if(flag_overrides(source_file, buildflags))%><%flag_overrides(source_file, buildflags)%> <%endif%>$(DYN_FLAGS) $(STATIC_FLAGS) $(OCFLAGS) $(CG_CFLAGS) $(UC_CFLAGS) $(THREAD_FLAGS) $(CCFLAGS) $(CFLAGS) $(WARN_FLAGS) -c -o $(@D)\$(@F) <%source_file%>
473326
<%endif%>
474327
<%endfor%>
475328
<%if(resource_files)%>
476329
!ifndef STATIC_CFG
477330
.path.res = $(INTERMEDIATE)
478-
479331
.path.rc = $(RESDIR)
480332
.rc.res:
481333
@if not exist "$(INTERMEDIATE)" mkdir "$(INTERMEDIATE)"
482334
$(RC) $(RC_FLAGS) -fo$@ $<
483-
484335
<%foreach(resource_files)%>
485336
<%if(transdir(resource_file))%>
486337
"$(INTERMEDIATE)\<%transdir(resource_file)%><%basenoextension(resource_file)%>.res":
487338
@if not exist "$(INTERMEDIATE)\<%transdir(resource_file)%>" mkdir "$(INTERMEDIATE)\<%transdir(resource_file)%>"
488339
$(RC) -fo$@ <%resource_file%>
489-
490340
<%endif%>
491341
<%endfor%>
492342
!endif

0 commit comments

Comments
 (0)