With this change, OpenBLAS builds and all tests pass on OpenBSD 6.2 using Clang. Tested on x86-64 only, with and without DYNAMIC_ARCH=1.tags/v0.3.0^2
| @@ -91,11 +91,7 @@ ifeq ($(OSNAME), $(filter $(OSNAME),Linux SunOS Android)) | |||||
| @ln -fs $(LIBSONAME) $(LIBPREFIX).so | @ln -fs $(LIBSONAME) $(LIBPREFIX).so | ||||
| @ln -fs $(LIBSONAME) $(LIBPREFIX).so.$(MAJOR_VERSION) | @ln -fs $(LIBSONAME) $(LIBPREFIX).so.$(MAJOR_VERSION) | ||||
| endif | endif | ||||
| ifeq ($(OSNAME), FreeBSD) | |||||
| @$(MAKE) -C exports so | |||||
| @ln -fs $(LIBSONAME) $(LIBPREFIX).so | |||||
| endif | |||||
| ifeq ($(OSNAME), NetBSD) | |||||
| ifeq ($(OSNAME), $(filter $(OSNAME),FreeBSD OpenBSD NetBSD)) | |||||
| @$(MAKE) -C exports so | @$(MAKE) -C exports so | ||||
| @ln -fs $(LIBSONAME) $(LIBPREFIX).so | @ln -fs $(LIBSONAME) $(LIBPREFIX).so | ||||
| endif | endif | ||||
| @@ -72,12 +72,7 @@ ifeq ($(OSNAME), $(filter $(OSNAME),Linux SunOS Android)) | |||||
| ln -fs $(LIBSONAME) $(LIBPREFIX).so ; \ | ln -fs $(LIBSONAME) $(LIBPREFIX).so ; \ | ||||
| ln -fs $(LIBSONAME) $(LIBPREFIX).so.$(MAJOR_VERSION) | ln -fs $(LIBSONAME) $(LIBPREFIX).so.$(MAJOR_VERSION) | ||||
| endif | endif | ||||
| ifeq ($(OSNAME), FreeBSD) | |||||
| @cp $(LIBSONAME) "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)" | |||||
| @cd "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)" ; \ | |||||
| ln -fs $(LIBSONAME) $(LIBPREFIX).so | |||||
| endif | |||||
| ifeq ($(OSNAME), NetBSD) | |||||
| ifeq ($(OSNAME), $(filter $(OSNAME),FreeBSD OpenBSD NetBSD)) | |||||
| @cp $(LIBSONAME) "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)" | @cp $(LIBSONAME) "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)" | ||||
| @cd "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)" ; \ | @cd "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)" ; \ | ||||
| ln -fs $(LIBSONAME) $(LIBPREFIX).so | ln -fs $(LIBSONAME) $(LIBPREFIX).so | ||||
| @@ -115,7 +110,7 @@ endif | |||||
| ifndef NO_SHARED | ifndef NO_SHARED | ||||
| #ifeq logical or | #ifeq logical or | ||||
| ifeq ($(OSNAME), $(filter $(OSNAME),Linux FreeBSD NetBSD)) | |||||
| ifeq ($(OSNAME), $(filter $(OSNAME),Linux FreeBSD NetBSD OpenBSD)) | |||||
| @echo "SET(OpenBLAS_LIBRARIES ${OPENBLAS_LIBRARY_DIR}/$(LIBPREFIX).so)" >> "$(DESTDIR)$(OPENBLAS_CMAKE_DIR)/$(OPENBLAS_CMAKE_CONFIG)" | @echo "SET(OpenBLAS_LIBRARIES ${OPENBLAS_LIBRARY_DIR}/$(LIBPREFIX).so)" >> "$(DESTDIR)$(OPENBLAS_CMAKE_DIR)/$(OPENBLAS_CMAKE_CONFIG)" | ||||
| endif | endif | ||||
| ifeq ($(OSNAME), $(filter $(OSNAME),WINNT CYGWIN_NT)) | ifeq ($(OSNAME), $(filter $(OSNAME),WINNT CYGWIN_NT)) | ||||
| @@ -230,7 +230,7 @@ endif | |||||
| MD5SUM = md5 -r | MD5SUM = md5 -r | ||||
| endif | endif | ||||
| ifeq ($(OSNAME), FreeBSD) | |||||
| ifneq (,$(findstring $(OSNAME), FreeBSD OpenBSD)) | |||||
| MD5SUM = md5 -r | MD5SUM = md5 -r | ||||
| endif | endif | ||||
| @@ -54,6 +54,7 @@ $compiler = GCC if ($compiler eq ""); | |||||
| $os = Linux if ($data =~ /OS_LINUX/); | $os = Linux if ($data =~ /OS_LINUX/); | ||||
| $os = FreeBSD if ($data =~ /OS_FREEBSD/); | $os = FreeBSD if ($data =~ /OS_FREEBSD/); | ||||
| $os = NetBSD if ($data =~ /OS_NETBSD/); | $os = NetBSD if ($data =~ /OS_NETBSD/); | ||||
| $os = OpenBSD if ($data =~ /OS_OPENBSD/); | |||||
| $os = Darwin if ($data =~ /OS_DARWIN/); | $os = Darwin if ($data =~ /OS_DARWIN/); | ||||
| $os = SunOS if ($data =~ /OS_SUNOS/); | $os = SunOS if ($data =~ /OS_SUNOS/); | ||||
| $os = AIX if ($data =~ /OS_AIX/); | $os = AIX if ($data =~ /OS_AIX/); | ||||
| @@ -93,7 +93,7 @@ extern "C" { | |||||
| #include <sched.h> | #include <sched.h> | ||||
| #endif | #endif | ||||
| #if defined(OS_DARWIN) || defined(OS_FREEBSD) || defined(OS_NETBSD) || defined(OS_ANDROID) | |||||
| #if defined(OS_DARWIN) || defined(OS_FREEBSD) || defined(OS_NETBSD) || defined(OS_OPENBSD) || defined(OS_ANDROID) | |||||
| #include <sched.h> | #include <sched.h> | ||||
| #endif | #endif | ||||
| @@ -327,7 +327,7 @@ REALNAME: | |||||
| #endif | #endif | ||||
| #endif | #endif | ||||
| #if defined(OS_LINUX) || defined(OS_FREEBSD) || defined(OS_NETBSD) || defined(__ELF__) | |||||
| #if defined(OS_LINUX) || defined(OS_FREEBSD) || defined(OS_NETBSD) || defined(OS_OPENBSD) || defined(__ELF__) | |||||
| #define PROLOGUE \ | #define PROLOGUE \ | ||||
| .text; \ | .text; \ | ||||
| .align 16; \ | .align 16; \ | ||||
| @@ -403,7 +403,7 @@ REALNAME: | |||||
| #define EPILOGUE .end | #define EPILOGUE .end | ||||
| #endif | #endif | ||||
| #if defined(OS_LINUX) || defined(OS_FREEBSD) || defined(OS_NETBSD) || defined(__ELF__) || defined(C_PGI) | |||||
| #if defined(OS_LINUX) || defined(OS_FREEBSD) || defined(OS_NETBSD) || defined(OS_OPENBSD) || defined(__ELF__) || defined(C_PGI) | |||||
| #define PROLOGUE \ | #define PROLOGUE \ | ||||
| .text; \ | .text; \ | ||||
| .align 512; \ | .align 512; \ | ||||
| @@ -60,6 +60,10 @@ OS_FREEBSD | |||||
| OS_NETBSD | OS_NETBSD | ||||
| #endif | #endif | ||||
| #if defined(__OpenBSD__) | |||||
| OS_OPENBSD | |||||
| #endif | |||||
| #if defined(__sun) | #if defined(__sun) | ||||
| OS_SUNOS | OS_SUNOS | ||||
| #endif | #endif | ||||
| @@ -70,7 +70,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
| /*********************************************************************/ | /*********************************************************************/ | ||||
| #include "common.h" | #include "common.h" | ||||
| #if defined(OS_LINUX) || defined(OS_NETBSD) || defined(OS_DARWIN) || defined(OS_ANDROID) || defined(OS_SUNOS) || defined(OS_FREEBSD) | |||||
| #if defined(OS_LINUX) || defined(OS_NETBSD) || defined(OS_DARWIN) || defined(OS_ANDROID) || defined(OS_SUNOS) || defined(OS_FREEBSD) || defined(OS_OPENBSD) | |||||
| #include <dlfcn.h> | #include <dlfcn.h> | ||||
| #include <signal.h> | #include <signal.h> | ||||
| #include <sys/resource.h> | #include <sys/resource.h> | ||||
| @@ -108,7 +108,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
| #include <sys/resource.h> | #include <sys/resource.h> | ||||
| #endif | #endif | ||||
| #if defined(OS_FREEBSD) || defined(OS_DARWIN) | |||||
| #if defined(OS_FREEBSD) || defined(OS_OPENBSD) || defined(OS_DARWIN) | |||||
| #include <sys/sysctl.h> | #include <sys/sysctl.h> | ||||
| #include <sys/resource.h> | #include <sys/resource.h> | ||||
| #endif | #endif | ||||
| @@ -246,7 +246,7 @@ int get_num_procs(void) { | |||||
| #endif | #endif | ||||
| #if defined(OS_FREEBSD) | |||||
| #if defined(OS_FREEBSD) || defined(OS_OPENBSD) | |||||
| int get_num_procs(void) { | int get_num_procs(void) { | ||||
| @@ -336,7 +336,7 @@ extern int openblas_goto_num_threads_env(); | |||||
| extern int openblas_omp_num_threads_env(); | extern int openblas_omp_num_threads_env(); | ||||
| int blas_get_cpu_number(void){ | int blas_get_cpu_number(void){ | ||||
| #if defined(OS_LINUX) || defined(OS_WINDOWS) || defined(OS_FREEBSD) || defined(OS_DARWIN) || defined(OS_ANDROID) | |||||
| #if defined(OS_LINUX) || defined(OS_WINDOWS) || defined(OS_FREEBSD) || defined(OS_OPENBSD) || defined(OS_DARWIN) || defined(OS_ANDROID) | |||||
| int max_num; | int max_num; | ||||
| #endif | #endif | ||||
| int blas_goto_num = 0; | int blas_goto_num = 0; | ||||
| @@ -344,7 +344,7 @@ int blas_get_cpu_number(void){ | |||||
| if (blas_num_threads) return blas_num_threads; | if (blas_num_threads) return blas_num_threads; | ||||
| #if defined(OS_LINUX) || defined(OS_WINDOWS) || defined(OS_FREEBSD) || defined(OS_DARWIN) || defined(OS_ANDROID) | |||||
| #if defined(OS_LINUX) || defined(OS_WINDOWS) || defined(OS_FREEBSD) || defined(OS_OPENBSD) || defined(OS_DARWIN) || defined(OS_ANDROID) | |||||
| max_num = get_num_procs(); | max_num = get_num_procs(); | ||||
| #endif | #endif | ||||
| @@ -368,7 +368,7 @@ int blas_get_cpu_number(void){ | |||||
| else if (blas_omp_num > 0) blas_num_threads = blas_omp_num; | else if (blas_omp_num > 0) blas_num_threads = blas_omp_num; | ||||
| else blas_num_threads = MAX_CPU_NUMBER; | else blas_num_threads = MAX_CPU_NUMBER; | ||||
| #if defined(OS_LINUX) || defined(OS_WINDOWS) || defined(OS_FREEBSD) || defined(OS_DARWIN) || defined(OS_ANDROID) | |||||
| #if defined(OS_LINUX) || defined(OS_WINDOWS) || defined(OS_FREEBSD) || defined(OS_OPENBSD) || defined(OS_DARWIN) || defined(OS_ANDROID) | |||||
| if (blas_num_threads > max_num) blas_num_threads = max_num; | if (blas_num_threads > max_num) blas_num_threads = max_num; | ||||
| #endif | #endif | ||||
| @@ -156,7 +156,7 @@ endif | |||||
| endif | endif | ||||
| #http://stackoverflow.com/questions/7656425/makefile-ifeq-logical-or | #http://stackoverflow.com/questions/7656425/makefile-ifeq-logical-or | ||||
| ifeq ($(OSNAME), $(filter $(OSNAME),FreeBSD NetBSD)) | |||||
| ifeq ($(OSNAME), $(filter $(OSNAME),FreeBSD OpenBSD NetBSD)) | |||||
| so : ../$(LIBSONAME) | so : ../$(LIBSONAME) | ||||
| @@ -82,7 +82,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
| #ifdef OS_WINDOWS | #ifdef OS_WINDOWS | ||||
| #include <windows.h> | #include <windows.h> | ||||
| #endif | #endif | ||||
| #if defined(__FreeBSD__) || defined(__APPLE__) | |||||
| #if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__APPLE__) | |||||
| #include <sys/types.h> | #include <sys/types.h> | ||||
| #include <sys/sysctl.h> | #include <sys/sysctl.h> | ||||
| #endif | #endif | ||||
| @@ -1074,7 +1074,7 @@ static int get_num_cores(void) { | |||||
| #ifdef OS_WINDOWS | #ifdef OS_WINDOWS | ||||
| SYSTEM_INFO sysinfo; | SYSTEM_INFO sysinfo; | ||||
| #elif defined(__FreeBSD__) || defined(__APPLE__) | |||||
| #elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__APPLE__) | |||||
| int m[2], count; | int m[2], count; | ||||
| size_t len; | size_t len; | ||||
| #endif | #endif | ||||
| @@ -1088,7 +1088,7 @@ static int get_num_cores(void) { | |||||
| GetSystemInfo(&sysinfo); | GetSystemInfo(&sysinfo); | ||||
| return sysinfo.dwNumberOfProcessors; | return sysinfo.dwNumberOfProcessors; | ||||
| #elif defined(__FreeBSD__) || defined(__APPLE__) | |||||
| #elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__APPLE__) | |||||
| m[0] = CTL_HW; | m[0] = CTL_HW; | ||||
| m[1] = HW_NCPU; | m[1] = HW_NCPU; | ||||
| len = sizeof(int); | len = sizeof(int); | ||||