Skip to content

Commit 94a3d7e

Browse files
authored
Merge pull request DOCGroup#203 from jwillemsen/bcc64xlld
Improve support for bcc64x as Embarcadero C++ Builder compiler
2 parents 5cf9624 + 5955da2 commit 94a3d7e

File tree

2 files changed

+44
-13
lines changed

2 files changed

+44
-13
lines changed

templates/bmake.mpd

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,20 @@ LINKER_PATHS = <%linker_paths%>
2323
STARTUP_BITS = <%startup_bits%>
2424
LINK = <%link%>
2525
COMMON_LIBS = <%common_libs%>
26+
DLLLIBS = <%dll_libs%>
27+
EXELIBS = <%exe_libs%>
2628
TLIB = <%tlib%>
29+
DLLFLAGS = <%dllflags%>
2730
<%if(pch)%>PCH = 1<%endif%>
31+
<%if(objectsearchpath)%>
32+
OBJECTSEARCHPATH = \
33+
<%foreach(libpaths)%>
34+
-j"<%libpath%>"<%fornotlast(" \\")%>
35+
<%endfor%>
36+
<%endif%>
37+
EXEFLAGS = <%exeflags%>
38+
LINKER_DLL_ARGUMENTS = <%linker_dll_arguments%>
39+
LINKER_EXE_ARGUMENTS = <%linker_exe_arguments%>
2840
!else
2941
<%endfor%>
3042
!error You must select one of these compilers:<%foreach(compilers)%> <%normalize(uc(compiler))%><%endfor%>
@@ -79,9 +91,7 @@ CG_LIB = cg32.lib
7991
DLL_EXT = <%dll_ext%>
8092
EXE_EXT = <%exe_ext%>
8193
RC = <%rc%>
82-
DLLFLAGS = <%dllflags%>
8394
LIBFLAGS = <%libflags%>
84-
EXEFLAGS = <%exeflags%>
8595
CCFLAGS = $(CC_CFLAGS)<%if(type_is_binary)%> $(BINARY_FLAGS)<%endif%><%if(compile_flags)%> <%compile_flags%><%endif%>
8696

8797
<%if(use_vcl)%>
@@ -134,8 +144,9 @@ LFLAGS = \
134144
-v<%if(libpaths)%> \<%endif%>
135145
<%endif%>
136146
<%foreach(libpaths)%>
137-
-L"<%libpath%>" -j"<%libpath%>"<%fornotlast(" \\")%>
147+
-L"<%libpath%>" \
138148
<%endfor%>
149+
$(OBJECTSEARCHPATH)
139150
<%endif%>
140151

141152
LIBFILES = \
@@ -202,7 +213,7 @@ $(OUTPUTDIR)$(NAME)$(EXE_EXT): $(OBJFILES) $(RESOURCE)
202213
<%eval(prelink)%>
203214
<%endif%>
204215
$(LINK) @&&!
205-
$(EXEFLAGS) $(LFLAGS) $(STARTUP_OBJ) $(OBJFILES), $(OUTPUTDIR)$(NAME)$(EXE_EXT),, $(LIBFILES),, $(RESOURCE)
216+
$(LINKER_EXE_ARGUMENTS)
206217
!
207218

208219
<%endif%>
@@ -217,7 +228,7 @@ $(OUTPUTDIR)$(NAME)$(DLL_EXT): $(OBJFILES) $(RESOURCE)
217228
<%eval(prelink)%>
218229
<%endif%>
219230
$(LINK) @&&!
220-
$(DLLFLAGS) $(LFLAGS) $(STARTUP_OBJ) $(OBJFILES), $(OUTPUTDIR)$(NAME)$(DLL_EXT),, $(LIBFILES),, $(RESOURCE)
231+
$(LINKER_DLL_ARGUMENTS)
221232
!
222233
!endif
223234

templates/bmakecommon.mpt

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@ unicode_exe_modifier = u
1212
dll_ext = .dll
1313
exe_ext = .exe
1414
rc = brcc32
15-
dllflags = -Tpd -Gi -x -Gn -w-dup
1615
libflags = /C
17-
exeflags = -Tpe -x -Gn
1816

1917
bcc32 {
2018
debug_flags = -v -y -Od -vi- -k
@@ -34,6 +32,11 @@ common_libs = ws2_32$(LIB_EXT) import32$(LIB_EXT) cw32mti$(LIB_EXT) $(CG_LIB)
3432
tlib = tlib
3533
pch = 1
3634
ccflags = -q
35+
dllflags = -Tpd -Gi -x -Gn -w-dup
36+
object_search_path = 1
37+
exeflags = -Tpe -x -Gn
38+
linker_dll_arguments = $(DLLFLAGS) $(LFLAGS) $(STARTUP_OBJ) $(OBJFILES), $(OUTPUTDIR)$(NAME)$(DLL_EXT),, $(LIBFILES),, $(RESOURCE)
39+
linker_exe_arguments = $(EXEFLAGS) $(LFLAGS) $(STARTUP_OBJ) $(OBJFILES), $(OUTPUTDIR)$(NAME)$(EXE_EXT),, $(LIBFILES),, $(RESOURCE)
3740
}
3841

3942
bcc32c {
@@ -53,6 +56,11 @@ link = ilink32
5356
common_libs = ws2_32$(LIB_EXT) import32$(LIB_EXT) cw32mti$(LIB_EXT)
5457
tlib = tlib
5558
ccflags = -q
59+
dllflags = -Tpd -Gi -x -Gn -w-dup
60+
object_search_path = 1
61+
exeflags = -Tpe -x -Gn
62+
linker_dll_arguments = $(DLLFLAGS) $(LFLAGS) $(STARTUP_OBJ) $(OBJFILES), $(OUTPUTDIR)$(NAME)$(DLL_EXT),, $(LIBFILES),, $(RESOURCE)
63+
linker_exe_arguments = $(EXEFLAGS) $(LFLAGS) $(STARTUP_OBJ) $(OBJFILES), $(OUTPUTDIR)$(NAME)$(EXE_EXT),, $(LIBFILES),, $(RESOURCE)
5664
}
5765

5866
bcc64 {
@@ -72,6 +80,11 @@ link = ilink64
7280
common_libs = ws2_32$(LIB_EXT) import64$(LIB_EXT) cw64mti$(LIB_EXT)
7381
tlib = tlib64
7482
ccflags = -q
83+
dllflags = -Tpd -Gi -x -Gn -w-dup
84+
exeflags = -Tpe -x -Gn
85+
object_search_path = 1
86+
linker_dll_arguments = $(DLLFLAGS) $(LFLAGS) $(STARTUP_OBJ) $(OBJFILES), $(OUTPUTDIR)$(NAME)$(DLL_EXT),, $(LIBFILES),, $(RESOURCE)
87+
linker_exe_arguments = $(EXEFLAGS) $(LFLAGS) $(STARTUP_OBJ) $(OBJFILES), $(OUTPUTDIR)$(NAME)$(EXE_EXT),, $(LIBFILES),, $(RESOURCE)
7588
}
7689

7790
bcc64x {
@@ -81,14 +94,21 @@ warn_flags =
8194
cc = bcc64x
8295
binary_flags = -tR -tD
8396
thr_flags = -tM
84-
lib_ext = .a
97+
lib_ext = .lib
8598
common_defines = WIN32 _WINDOWS WIN64
86-
common_flags =
99+
common_flags = -Qunused-arguments
87100
obj_ext = .o
88-
linker_paths = -L\"$(BDS)\lib\win64x\debug\" -L\"$(BDS)\lib\win64x\release\"
101+
linker_paths = -L\"$(BDS)\lib\win64x\debug\" -L\"$(BDS)\lib\win64x\release\" -L\"C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\um\x64\" -L\"$(BDS)\x86_64-w64-mingw32\lib\" -L\"$(BDS)\lib\clang\15.0.7\lib\windows\"
89102
startup_bits = 64
90-
link = bcc64x
91-
common_libs = ws2_32$(LIB_EXT) import64$(LIB_EXT) cw64mti$(LIB_EXT)
103+
ccflags = -q
104+
link = ld.lld
105+
common_libs = crtbegin.o ws2_32$(LIB_EXT) -lmoldname -lucrt -lmingw32 -lmingwex -l\"c++\" -lunwind -lmingwthrd -l:import64$(LIB_EXT) libclang_rt.builtins-x86_64.a
106+
dll_libs = dllcrt2.o
107+
exe_libs = crt2.o
92108
tlib = tlib64
93-
ccflags =
109+
dllflags = -m i386pep -shared --Bstatic --enable-auto-image-base
110+
exeflags = -m i386pep --Bstatic
111+
object_search_path = 0
112+
linker_dll_arguments = $(DLLFLAGS) $(LFLAGS) $(OBJFILES) -o $(OUTPUTDIR)$(NAME)$(DLL_EXT) --out-implib $(OUTPUTDIR)$(NAME).lib $(DLLLIBS) $(LIBFILES) $(RESOURCE)
113+
linker_exe_arguments = $(EXEFLAGS) $(LFLAGS) $(OBJFILES) -o $(OUTPUTDIR)$(NAME).exe $(EXELIBS) $(LIBFILES) $(RESOURCE)
94114
}

0 commit comments

Comments
 (0)