diff options
-rw-r--r-- | Configurations/50-cppbuilder.conf | 11 | ||||
-rw-r--r-- | Configurations/platform/Windows/cppbuilder.pm | 16 | ||||
-rw-r--r-- | Configurations/windows-makefile.tmpl | 4 | ||||
-rwxr-xr-x | util/mkdef.pl | 8 |
4 files changed, 30 insertions, 9 deletions
diff --git a/Configurations/50-cppbuilder.conf b/Configurations/50-cppbuilder.conf index 7ca972956a..b604e12d09 100644 --- a/Configurations/50-cppbuilder.conf +++ b/Configurations/50-cppbuilder.conf @@ -20,12 +20,12 @@ my %targets = ( coutflag => "-o", cpp_depend_flags => "-Hp", LD => "ilink32", - LDFLAGS => picker(default => "-ap -x -Gn -q", + LDFLAGS => picker(default => "-x -Gn -q -w-dup", 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", + bin_lflags => "-ap -Tpe c0x32.obj wildargs.obj", ldoutflag => ",", ldpostoutflag => ",,", ld_resp_delim => " +\n", @@ -44,11 +44,12 @@ my %targets = ( RCFLAGS => '-i"$(BDS)\include\windows\sdk"', rcoutflag => "-fo", shared_target => "win-shared", - shared_ldflag => "-Tpd c0d32.obj", - dso_lflags => "-Tpd c0d32.obj", + shared_ldflag => "-aa -Tpd c0d32.obj", lddefflag => ",", ldresflag => ",", - ld_implib_rule => 'implib $< $**', + ld_implib_rule => 'implib -a $< $**', dso_scheme => "win32", + shared_defflag => '', + perl_platform => 'Windows::cppbuilder', } ); diff --git a/Configurations/platform/Windows/cppbuilder.pm b/Configurations/platform/Windows/cppbuilder.pm new file mode 100644 index 0000000000..b4d208d6d4 --- /dev/null +++ b/Configurations/platform/Windows/cppbuilder.pm @@ -0,0 +1,16 @@ +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; diff --git a/Configurations/windows-makefile.tmpl b/Configurations/windows-makefile.tmpl index bcb092d045..6ceab7e94d 100644 --- a/Configurations/windows-makefile.tmpl +++ b/Configurations/windows-makefile.tmpl @@ -878,7 +878,7 @@ $import: $dll $dll: $deps IF EXIST $full.manifest DEL /F /Q $full.manifest IF EXIST \$@ DEL /F /Q \$@ - \$(LD) \$(LDFLAGS) \$(LIB_LDFLAGS) @<< $implib_flag || (DEL /Q \$(\@B).* $import; EXIT 1) + cmd /C "\$(LD) \$(LDFLAGS) \$(LIB_LDFLAGS) @<< $implib_flag || (DEL /Q \$(\@B).* $import & EXIT 1)" $objs$target{ld_resp_delim}\$(LDOUTFLAG)$dll$target{ldpostoutflag}$target{ld_resp_delim}$linklibs\$(LIB_EX_LIBS)$target{ld_resp_delim}$shared_def$target{ldresflag}$ress << IF EXIST $dll.manifest \\ @@ -914,7 +914,7 @@ EOF return <<"EOF"; $dso: $deps IF EXIST $dso.manifest DEL /F /Q $dso.manifest - \$(LD) \$(LDFLAGS) \$(DSO_LDFLAGS) @<< || (DEL /Q \$(\@B).* $dso_n.*; EXIT 1) + cmd /C "\$(LD) \$(LDFLAGS) \$(DSO_LDFLAGS) @<< || (DEL /Q \$(\@B).* $dso_n.* & EXIT 1)" $objs$target{ld_resp_delim}\$(LDOUTFLAG)$dso$target{ldpostoutflag}$target{ld_resp_delim}$linklibs \$(DSO_EX_LIBS)$target{ld_resp_delim}$shared_def$target{ldresflag}$ress << IF EXIST $dso.manifest \\ diff --git a/util/mkdef.pl b/util/mkdef.pl index a4772e9c8f..3207040e25 100755 --- a/util/mkdef.pl +++ b/util/mkdef.pl @@ -295,12 +295,16 @@ sub writer_windows { ; Definition file for the DLL version of the $libname library from OpenSSL ; -LIBRARY $libname +LIBRARY "$libname" EXPORTS _____ for (@_) { - print " ",$_->name(),"\n"; + print " ",$_->name(); + if (platform->can('export2internal')) { + print "=". platform->export2internal($_->name()); + } + print "\n"; } } |