mirror of
https://github.com/openssl/openssl.git
synced 2026-05-07 20:12:39 +00:00
491a1e3363
MSVC's `link.exe` automatically finds `__cdecl` C functions (which are decorated with a leading underscore by the compiler) when they are mentioned in a `.def` file without the leading underscore. This is an [under-documented feature][1] of MSVC's `link.exe`. C++Builder's `ilink32.exe` doesn't do this, and thus needs the name-translation in the `.def` file. Then `implib.exe` needs to be told to re-add it. (The Clang-based `bcc32c.exe` doesn't implement the [`-vu` or `-u-`][2] options to skip adding the leading underscore to `__cdecl` C function names, so this is the only way to have things work with non-underscored export names in the DLLs.) [1]: https://github.com/MicrosoftDocs/cpp-docs/issues/2653 [2]: http://docwiki.embarcadero.com/RADStudio/Sydney/en/Options_Not_Supported_by_Clang-enhanced_C%2B%2B_Compilers#BCC32_Options_that_Are_Not_Supported_by_Clang-enhanced_C.2B.2B_Compilers Also silence linker warnings on duplicate symbols and ensure that error- case cleanup in link rules work in C++Builder's `make.exe`. Reviewed-by: Richard Levitte <levitte@openssl.org> Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com> (Merged from https://github.com/openssl/openssl/pull/13540)
17 lines
376 B
Perl
17 lines
376 B
Perl
package platform::Windows::cppbuilder;
|
|
|
|
use vars qw(@ISA);
|
|
|
|
require platform::Windows::MSVC;
|
|
@ISA = qw(platform::Windows::MSVC);
|
|
|
|
sub pdbext { '.tds' }
|
|
|
|
# C++Builder's Clang-based compilers prepend an underscore to __cdecl-convention
|
|
# C functions, and the linker needs those as the InternalName in the .def file.
|
|
sub export2internal {
|
|
return "_$_[1]";
|
|
}
|
|
|
|
1;
|