summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTanzinul Islam <tanzinul.islam@gmail.com>2020-11-19 23:39:12 +0000
committerDmitry Belyavskiy <beldmit@gmail.com>2021-04-19 11:05:54 +0200
commitf1ee757daaf8ea1000c6558abd1ffc8ad5234c09 (patch)
treec42fa4d3b969eae561eff6ce12a39439a759730e
parenta8368d573e5b4553e7344dd37239da6d72480832 (diff)
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)
-rw-r--r--.gitignore2
-rw-r--r--Configurations/50-cppbuilder.conf37
-rw-r--r--crypto/conf/conf_sap.c2
-rw-r--r--crypto/init.c2
4 files changed, 41 insertions, 2 deletions
diff --git a/.gitignore b/.gitignore
index 7a07450106..b88ede1d59 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
diff --git a/Configurations/50-cppbuilder.conf b/Configurations/50-cppbuilder.conf
new file mode 100644
index 0000000000..b8ecfdc7d3
--- /dev/null
+++ b/Configurations/50-cppbuilder.conf
@@ -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",
+ }
+);
diff --git a/crypto/conf/conf_sap.c b/crypto/conf/conf_sap.c
index 4188f9113a..5cd018c167 100644
--- a/crypto/conf/conf_sap.c
+++ b/crypto/conf/conf_sap.c
@@ -15,7 +15,7 @@
#include <openssl/asn1.h>
#include <openssl/engine.h>
-#ifdef _WIN32
+#if defined(_WIN32) && !defined(__BORLANDC__)
# define strdup _strdup
#endif
diff --git a/crypto/init.c b/crypto/init.c
index bf5c17da6d..788abe52e8 100644
--- a/crypto/init.c
+++ b/crypto/init.c
@@ -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;