diff options
author | Tanzinul Islam <tanzinul.islam@gmail.com> | 2020-12-06 23:04:45 +0000 |
---|---|---|
committer | Dmitry Belyavskiy <beldmit@gmail.com> | 2021-04-19 11:05:54 +0200 |
commit | 5fee3fe2760d65a141873601c4b7b9fd2fc5c7b1 (patch) | |
tree | fb0832a2e24cde0f5e2dec0463225bbd06c838fa /Configurations/50-cppbuilder.conf | |
parent | c4f4cb14e3f06362c2ee9e0e480b816ab46f15b6 (diff) |
Support DLL builds + Fix C RTL variants
We need to generate a import library without the version in the
filename. MSVC's `link.exe` accommodates this with the [`/implib:`
option][1], while C++Builder needs a separate run of [`implib.exe`][2].
Also fix the variants of the [C runtime library and startup objects][3].
[1]: https://docs.microsoft.com/en-us/cpp/build/reference/implib-name-import-library?view=msvc-160
[2]: http://docwiki.embarcadero.com/RADStudio/Sydney/en/IMPLIB.EXE,_the_Import_Library_Tool_for_Win32
[3]: http://docwiki.embarcadero.com/RADStudio/Sydney/en/Static_Runtime_Libraries
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/13540)
Diffstat (limited to 'Configurations/50-cppbuilder.conf')
-rw-r--r-- | Configurations/50-cppbuilder.conf | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/Configurations/50-cppbuilder.conf b/Configurations/50-cppbuilder.conf index 334672e1a3..cb293afcb9 100644 --- a/Configurations/50-cppbuilder.conf +++ b/Configurations/50-cppbuilder.conf @@ -3,34 +3,46 @@ my %targets = ( inherit_from => [ "BASE_Windows" ], sys_id => "WIN32", bn_ops => "BN_LLONG", - dso_scheme => "win32", thread_scheme => "winthreads", cc => "bcc32c", defines => add("WIN32_LEAN_AND_MEAN", "OPENSSL_SYS_WIN32", "L_ENDIAN", "DSO_WIN32", "_stricmp=stricmp", "_strnicmp=strnicmp", "_malloca=malloc", "_freea=free", "_setmode=setmode"), - cflags => picker(default => "-q -c -tWC -tWM", + cflags => picker(default => add("-q -c", + threads("-tM"), + shared("-tR")), debug => "-Od -v -vi- -D_DEBUG", release => "-O2"), + bin_cflags => "-tWC", + lib_cflags => shared("-tWD -D_WINDLL -D_DLL"), coutflag => "-o", LD => "ilink32", - bin_lflags => combine(picker(default => "-ap -Tpe -x -Gn -q", - debug => '-j"$(BDS)\lib\win32c\debug" ' . - '-L"$(BDS)\lib\win32c\debug"', - release => '-j"$(BDS)\lib\win32c\release" ' . - '-L"$(BDS)\lib\win32c\release"'), - "wildargs.obj"), + LDFLAGS => picker(default => "-ap -x -Gn -q", + debug => '-j"$(BDS)\lib\win32c\debug" ' . + '-L"$(BDS)\lib\win32c\debug" -v', + release => '-j"$(BDS)\lib\win32c\release" ' . + '-L"$(BDS)\lib\win32c\release"'), + bin_lflags => "-Tpe c0x32.obj wildargs.obj", ldoutflag => ",", ldpostoutflag => ",,", ld_resp_delim => " +\n", ex_libs => add(sub { - my @ex_libs = ("cw32mt.lib", "import32.lib"); + my @ex_libs = ("import32.lib", + ($disabled{shared} + ? ($disabled{threads} ? "cw32.lib" : "cw32mt.lib") + : ($disabled{threads} ? "cw32i.lib" : "cw32mti.lib"))); push @ex_libs, ("crypt32.lib", "ws2_32.lib") unless $disabled{sock}; return join(" ", @ex_libs); }), AR => "tlib", ARFLAGS => "/P256 /N /u", ar_resp_delim => " &\n", + shared_target => "win-shared", + shared_ldflag => "-Tpd c0d32.obj", + dso_lflags => "-Tpd c0d32.obj", + lddefflag => ",", + ld_implib_rule => 'implib $< $**', + dso_scheme => "win32", } ); |