Resurrect and modernize C++Builder config

Similar configuration to what was deleted in 8e56a422, updated for the
unified build scheme. Use the [Clang-based `bcc32c.exe`][1] to avoid a
[bug][2] with the old one, and increase the `tlib.exe` page size to 256.
Also avoid MSVC-specific C runtime library functions.

[1]: http://docwiki.embarcadero.com/RADStudio/Sydney/en/Win32_Clang-enhanced_Compilers
[2]: https://quality.embarcadero.com/browse/RSP-31630

Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/13540)
This commit is contained in:
Tanzinul Islam 2020-11-19 23:39:12 +00:00 committed by Dmitry Belyavskiy
parent a8368d573e
commit f1ee757daa
4 changed files with 41 additions and 2 deletions

2
.gitignore vendored
View File

@ -212,6 +212,7 @@ providers/common/include/prov/der_sm2.h
*.exp
*.lib
*.pdb
*.tds
*.ilk
*.def
*.rc
@ -227,6 +228,7 @@ cscope.*
*.d
*.d.tmp
pod2htmd.tmp
MAKE0[0-9][0-9][0-9].@@@
# Windows manifest files
*.manifest

View File

@ -0,0 +1,37 @@
my %targets = (
"BC-32" => {
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",
debug => "-Od -v -vi- -D_DEBUG",
release => "-O2"),
coutflag => "-o",
LD => "ilink32",
lflags => 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"'),
ldoutflag => ",",
ldpostoutflag => ",,",
ld_resp_delim => " +\n",
ld_wildcard_args => "wildargs.obj",
ex_libs => add(sub {
my @ex_libs = ();
push @ex_libs, ("cw32mt.lib", "import32.lib", "crypt32.lib",
"ws2_32.lib") unless $disabled{sock};
return join(" ", @ex_libs);
}),
AR => "tlib",
ARFLAGS => "/P256 /N /u",
ar_resp_delim => " &\n",
}
);

View File

@ -15,7 +15,7 @@
#include <openssl/asn1.h>
#include <openssl/engine.h>
#ifdef _WIN32
#if defined(_WIN32) && !defined(__BORLANDC__)
# define strdup _strdup
#endif

View File

@ -89,7 +89,7 @@ DEFINE_RUN_ONCE_STATIC(ossl_init_register_atexit)
fprintf(stderr, "OPENSSL_INIT: ossl_init_register_atexit()\n");
#endif
#ifndef OPENSSL_SYS_UEFI
# ifdef _WIN32
# if defined(_WIN32) && !defined(__BORLANDC__)
/* We use _onexit() in preference because it gets called on DLL unload */
if (_onexit(win32atexit) == NULL)
return 0;