-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Patch openblas to add 64_ suffix when using 64 bit ints
- Loading branch information
Showing
2 changed files
with
339 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,316 @@ | ||
diff --git a/Makefile.system b/Makefile.system | ||
index d2ff741..ec6339d 100644 | ||
--- a/Makefile.system | ||
+++ b/Makefile.system | ||
@@ -186,6 +186,8 @@ LD = $(CROSS_SUFFIX)ld | ||
RANLIB = $(CROSS_SUFFIX)ranlib | ||
NM = $(CROSS_SUFFIX)nm | ||
DLLWRAP = $(CROSS_SUFFIX)dllwrap | ||
+OBJCOPY = $(CROSS_SUFFIX)objcopy | ||
+OBJCONV = $(CROSS_SUFFIX)objconv | ||
|
||
# | ||
# OS dependent settings | ||
@@ -845,6 +847,14 @@ else | ||
LIBPREFIX = libopenblas_$(LIBNAMESUFFIX) | ||
endif | ||
|
||
+ifndef SYMBOLPREFIX | ||
+SYMBOLPREFIX = | ||
+endif | ||
+ | ||
+ifndef SYMBOLSUFFIX | ||
+SYMBOLSUFFIX = | ||
+endif | ||
+ | ||
KERNELDIR = $(TOPDIR)/kernel/$(ARCH) | ||
|
||
include $(TOPDIR)/Makefile.$(ARCH) | ||
diff --git a/exports/Makefile b/exports/Makefile | ||
index c798bc7..9ed5a0f 100644 | ||
--- a/exports/Makefile | ||
+++ b/exports/Makefile | ||
@@ -88,12 +88,17 @@ dll : ../$(LIBDLLNAME) | ||
-Wl,--whole-archive ../$(LIBNAME) -Wl,--no-whole-archive $(FEXTRALIB) $(EXTRALIB) | ||
|
||
libopenblas.def : gensymbol | ||
- perl ./gensymbol win2k $(ARCH) dummy $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) > $(@F) | ||
+ perl ./gensymbol win2k $(ARCH) dummy $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" > $(@F) | ||
|
||
libgoto_hpl.def : gensymbol | ||
- perl ./gensymbol win2khpl $(ARCH) dummy $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) > $(@F) | ||
+ perl ./gensymbol win2khpl $(ARCH) dummy $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" > $(@F) | ||
|
||
+ifeq (, $(SYMBOLPREFIX)$(SYMBOLSUFFIX)) | ||
$(LIBDYNNAME) : ../$(LIBNAME) osx.def | ||
+else | ||
+$(LIBDYNNAME) : ../$(LIBNAME) osx.def objconv.def | ||
+ $(OBJCONV) @objconv.def ../$(LIBNAME) | ||
+endif | ||
$(FC) $(FFLAGS) -all_load -headerpad_max_install_names -install_name $(CURDIR)/../$(LIBDYNNAME) -dynamiclib -o ../$(LIBDYNNAME) $< -Wl,-exported_symbols_list,osx.def $(FEXTRALIB) | ||
|
||
dllinit.$(SUFFIX) : dllinit.c | ||
@@ -103,7 +108,12 @@ ifeq ($(OSNAME), Linux) | ||
|
||
so : ../$(LIBSONAME) | ||
|
||
+ifeq (, $(SYMBOLPREFIX)$(SYMBOLSUFFIX)) | ||
../$(LIBSONAME) : ../$(LIBNAME) linktest.c | ||
+else | ||
+../$(LIBSONAME) : ../$(LIBNAME) linktest.c objcopy.def | ||
+ $(OBJCOPY) --redefine-syms objcopy.def ../$(LIBNAME) | ||
+endif | ||
ifneq ($(C_COMPILER), LSB) | ||
$(CC) $(CFLAGS) $(LDFLAGS) -shared -o ../$(LIBSONAME) \ | ||
-Wl,--whole-archive ../$(LIBNAME) -Wl,--no-whole-archive \ | ||
@@ -125,7 +135,12 @@ ifeq ($(OSNAME), $(filter $(OSNAME),FreeBSD NetBSD)) | ||
|
||
so : ../$(LIBSONAME) | ||
|
||
+ifeq (, $(SYMBOLPREFIX)$(SYMBOLSUFFIX)) | ||
../$(LIBSONAME) : ../$(LIBNAME) linktest.c | ||
+else | ||
+../$(LIBSONAME) : ../$(LIBNAME) linktest.c objcopy.def | ||
+ $(OBJCOPY) --redefine-syms objcopy.def ../$(LIBNAME) | ||
+endif | ||
$(CC) $(CFLAGS) $(LDFLAGS) -shared -o ../$(LIBSONAME) \ | ||
-Wl,--whole-archive ../$(LIBNAME) -Wl,--no-whole-archive \ | ||
$(FEXTRALIB) $(EXTRALIB) | ||
@@ -178,17 +193,23 @@ static : ../$(LIBNAME) | ||
rm -f goto.$(SUFFIX) | ||
|
||
osx.def : gensymbol ../Makefile.system ../getarch.c | ||
- perl ./gensymbol osx $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) > $(@F) | ||
+ perl ./gensymbol osx $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" > $(@F) | ||
|
||
aix.def : gensymbol ../Makefile.system ../getarch.c | ||
- perl ./gensymbol aix $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) > $(@F) | ||
+ perl ./gensymbol aix $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" > $(@F) | ||
+ | ||
+objcopy.def : gensymbol ../Makefile.system ../getarch.c | ||
+ perl ./gensymbol objcopy $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" > $(@F) | ||
+ | ||
+objconv.def : gensymbol ../Makefile.system ../getarch.c | ||
+ perl ./gensymbol objconv $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" > $(@F) | ||
|
||
test : linktest.c | ||
$(CC) $(CFLAGS) $(LDFLAGS) -w -o linktest linktest.c ../$(LIBSONAME) -lm && echo OK. | ||
rm -f linktest | ||
|
||
linktest.c : gensymbol ../Makefile.system ../getarch.c | ||
- perl ./gensymbol linktest $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) > linktest.c | ||
+ perl ./gensymbol linktest $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" > linktest.c | ||
|
||
clean :: | ||
@rm -f *.def *.dylib __.SYMDEF* | ||
diff --git a/exports/gensymbol b/exports/gensymbol | ||
index bcea836..8bd2f17 100644 | ||
--- a/exports/gensymbol | ||
+++ b/exports/gensymbol | ||
@@ -2784,22 +2784,26 @@ $bu = $ARGV[2]; | ||
|
||
$bu = "" if (($bu eq "0") || ($bu eq "1")); | ||
|
||
+$symbolprefix = $ARGV[9]; | ||
+ | ||
+$symbolsuffix = $ARGV[10]; | ||
+ | ||
if ($ARGV[0] eq "osx"){ | ||
|
||
@underscore_objs = (@underscore_objs, @misc_common_objs); | ||
@no_underscore_objs = (@no_underscore_objs, @misc_common_objs); | ||
|
||
foreach $objs (@underscore_objs) { | ||
- print "_", $objs, $bu, "\n"; | ||
+ print "_", $symbolprefix, $objs, $bu, $symbolsuffix, "\n"; | ||
} | ||
|
||
foreach $objs (@need_2underscore_objs) { | ||
- print "_", $objs, $bu, $bu, "\n"; | ||
+ print "_", $symbolprefix, $objs, $bu, $bu, $symbolsuffix, "\n"; | ||
} | ||
|
||
# if ($ARGV[4] == 0) { | ||
foreach $objs (@no_underscore_objs) { | ||
- print "_", $objs, "\n"; | ||
+ print "_", $symbolprefix, $objs, $symbolsuffix, "\n"; | ||
} | ||
# } | ||
exit(0); | ||
@@ -2811,16 +2815,58 @@ if ($ARGV[0] eq "aix"){ | ||
@no_underscore_objs = (@no_underscore_objs, @misc_common_objs); | ||
|
||
foreach $objs (@underscore_objs) { | ||
- print $objs, $bu, "\n"; | ||
+ print $symbolprefix, $objs, $bu, $symbolsuffix, "\n"; | ||
+ } | ||
+ | ||
+ foreach $objs (@need_2underscore_objs) { | ||
+ print $symbolprefix, $objs, $bu, $bu, $symbolsuffix, "\n"; | ||
+ } | ||
+ | ||
+# if ($ARGV[4] == 0) { | ||
+ foreach $objs (@no_underscore_objs) { | ||
+ print $symbolprefix, $objs, $symbolsuffix, "\n"; | ||
+ } | ||
+# } | ||
+ exit(0); | ||
+} | ||
+ | ||
+if ($ARGV[0] eq "objcopy"){ | ||
+ | ||
+ @underscore_objs = (@underscore_objs, @misc_common_objs); | ||
+ @no_underscore_objs = (@no_underscore_objs, @misc_common_objs); | ||
+ | ||
+ foreach $objs (@underscore_objs) { | ||
+ print $objs, $bu, " ", $symbolprefix, $objs, $bu, $symbolsuffix, "\n"; | ||
+ } | ||
+ | ||
+ foreach $objs (@need_2underscore_objs) { | ||
+ print $objs, $bu, $bu, " ", $symbolprefix, $objs, $bu, $bu, $symbolsuffix, "\n"; | ||
+ } | ||
+ | ||
+# if ($ARGV[4] == 0) { | ||
+ foreach $objs (@no_underscore_objs) { | ||
+ print $objs, " ", $symbolprefix, $objs, $symbolsuffix, "\n"; | ||
+ } | ||
+# } | ||
+ exit(0); | ||
+} | ||
+ | ||
+if ($ARGV[0] eq "objconv"){ | ||
+ | ||
+ @underscore_objs = (@underscore_objs, @misc_common_objs); | ||
+ @no_underscore_objs = (@no_underscore_objs, @misc_common_objs); | ||
+ | ||
+ foreach $objs (@underscore_objs) { | ||
+ print "-nr:_", $objs, $bu, ":_", $symbolprefix, $objs, $bu, $symbolsuffix, "\n"; | ||
} | ||
|
||
foreach $objs (@need_2underscore_objs) { | ||
- print $objs, $bu, $bu, "\n"; | ||
+ print "-nr:_", $objs, $bu, $bu, ":_", $symbolprefix, $objs, $bu, $bu, $symbolsuffix, "\n"; | ||
} | ||
|
||
# if ($ARGV[4] == 0) { | ||
foreach $objs (@no_underscore_objs) { | ||
- print $objs, "\n"; | ||
+ print "-nr:_", $objs, ":_", $symbolprefix, $objs, $symbolsuffix, "\n"; | ||
} | ||
# } | ||
exit(0); | ||
@@ -2835,22 +2881,22 @@ if ($ARGV[0] eq "win2k"){ | ||
foreach $objs (@underscore_objs) { | ||
$uppercase = $objs; | ||
$uppercase =~ tr/[a-z]/[A-Z]/; | ||
- print "\t$objs=$objs","_ \@", $count, "\n"; | ||
+ print "\t",$symbolprefix, $objs, $symbolsuffix, "=$objs","_ \@", $count, "\n"; | ||
$count ++; | ||
- print "\t",$objs, "_=$objs","_ \@", $count, "\n"; | ||
+ print "\t",$symbolprefix, $objs, "_", $symbolsuffix, "=$objs","_ \@", $count, "\n"; | ||
$count ++; | ||
- print "\t$uppercase=$objs", "_ \@", $count, "\n"; | ||
+ print "\t",$symbolprefix, $uppercase, $symbolsuffix, "=$objs", "_ \@", $count, "\n"; | ||
$count ++; | ||
} | ||
|
||
foreach $objs (@need_2underscore_objs) { | ||
$uppercase = $objs; | ||
$uppercase =~ tr/[a-z]/[A-Z]/; | ||
- print "\t$objs=$objs","__ \@", $count, "\n"; | ||
+ print "\t",$symbolprefix, $objs, $symbolsuffix, "=$objs","__ \@", $count, "\n"; | ||
$count ++; | ||
- print "\t",$objs, "__=$objs","__ \@", $count, "\n"; | ||
+ print "\t",$symbolprefix, $objs, "__", $symbolsuffix, "=$objs","__ \@", $count, "\n"; | ||
$count ++; | ||
- print "\t$uppercase=$objs", "__ \@", $count, "\n"; | ||
+ print "\t",$symbolprefix, $uppercase, $symbolsuffix, "=$objs", "__ \@", $count, "\n"; | ||
$count ++; | ||
} | ||
|
||
@@ -2859,15 +2905,15 @@ if ($ARGV[0] eq "win2k"){ | ||
|
||
$uppercase = $objs; | ||
$uppercase =~ tr/[a-z]/[A-Z]/; | ||
- print "\t",$objs, "_=$objs","_ \@", $count, "\n"; | ||
+ print "\t",$symbolprefix, $objs, "_", $symbolsuffix, "=$objs","_ \@", $count, "\n"; | ||
$count ++; | ||
- print "\t$uppercase=$objs", "_ \@", $count, "\n"; | ||
+ print "\t",$symbolprefix, $uppercase, $symbolsuffix, "=$objs", "_ \@", $count, "\n"; | ||
$count ++; | ||
} | ||
|
||
|
||
foreach $objs (@no_underscore_objs) { | ||
- print "\t",$objs,"=$objs"," \@", $count, "\n"; | ||
+ print "\t",$symbolprefix,$objs,$symbolsuffix,"=$objs"," \@", $count, "\n"; | ||
$count ++; | ||
} | ||
|
||
@@ -2880,11 +2926,11 @@ if ($ARGV[0] eq "win2khpl"){ | ||
foreach $objs (@hplobjs) { | ||
$uppercase = $objs; | ||
$uppercase =~ tr/[a-z]/[A-Z]/; | ||
- print "\t$objs=$objs","_ \@", $count, "\n"; | ||
+ print "\t",$symbolprefix, $objs, $symbolsuffix, "=$objs","_ \@", $count, "\n"; | ||
$count ++; | ||
- print "\t",$objs, "_=$objs","_ \@", $count, "\n"; | ||
+ print "\t",$symbolprefix, $objs, "_", $symbolsuffix, "=$objs","_ \@", $count, "\n"; | ||
$count ++; | ||
- print "\t$uppercase=$objs", "_ \@", $count, "\n"; | ||
+ print "\t",$symbolprefix, $uppercase, $symbolsuffix, "=$objs", "_ \@", $count, "\n"; | ||
$count ++; | ||
} | ||
|
||
@@ -2905,24 +2951,24 @@ if ($ARGV[0] eq "microsoft"){ | ||
foreach $objs (@underscore_objs) { | ||
$uppercase = $objs; | ||
$uppercase =~ tr/[a-z]/[A-Z]/; | ||
- print "\t$objs = $objs","_\n"; | ||
+ print "\t",$symbolprefix, $objs, $symbolsuffix, " = $objs","_\n"; | ||
$count ++; | ||
- print "\t$objs\_ = $objs","_\n"; | ||
+ print "\t",$symbolprefix, $objs, "\_", $symbolsuffix, " = $objs","_\n"; | ||
$count ++; | ||
- print "\t$uppercase = $objs","_\n"; | ||
+ print "\t",$symbolprefix, $uppercase, $symbolsuffix, " = $objs","_\n"; | ||
$count ++; | ||
- print "\t$uppercase\_ = $objs","_\n"; | ||
+ print "\t",$symbolprefix, $uppercase, "\_", $symbolsuffix, " = $objs","_\n"; | ||
$count ++; | ||
} | ||
|
||
foreach $objs (@need_2underscore_objs) { | ||
$uppercase = $objs; | ||
$uppercase =~ tr/[a-z]/[A-Z]/; | ||
- print "\t$objs=$objs","__ \@", $count, "\n"; | ||
+ print "\t",$symbolprefix, $objs, $symbolsuffix, "=$objs","__ \@", $count, "\n"; | ||
$count ++; | ||
- print "\t",$objs, "__=$objs","__ \@", $count, "\n"; | ||
+ print "\t",$symbolprefix, $objs, "__", $symbolsuffix, "=$objs","__ \@", $count, "\n"; | ||
$count ++; | ||
- print "\t$uppercase=$objs", "__ \@", $count, "\n"; | ||
+ print "\t",$symbolprefix, $uppercase, $symbolsuffix, "=$objs", "__ \@", $count, "\n"; | ||
$count ++; | ||
} | ||
|
||
@@ -2936,16 +2982,16 @@ if ($ARGV[0] eq "linktest"){ | ||
|
||
print "int main(void){\n"; | ||
foreach $objs (@underscore_objs) { | ||
- print $objs, $bu, "();\n" if $objs ne "xerbla"; | ||
+ print $symbolprefix, $objs, $bu, $symbolsuffix, "();\n" if $objs ne "xerbla"; | ||
} | ||
|
||
foreach $objs (@need_2underscore_objs) { | ||
- print $objs, $bu, $bu, "();\n"; | ||
+ print $symbolprefix, $objs, $bu, $bu, $symbolsuffix, "();\n"; | ||
} | ||
|
||
# if ($ARGV[4] == 0) { | ||
foreach $objs (@no_underscore_objs) { | ||
- print $objs, "();\n"; | ||
+ print $symbolprefix, $objs, $symbolsuffix, "();\n"; | ||
} | ||
# } | ||
|