mirror of
https://github.com/yann64/haikuports.git
synced 2026-04-22 11:40:06 +02:00
tbb: clean up haiku patches.
it produced broken libs on x86.
This commit is contained in:
801
dev-cpp/tbb/patches/tbb-2018.5.patchset
Normal file
801
dev-cpp/tbb/patches/tbb-2018.5.patchset
Normal file
@@ -0,0 +1,801 @@
|
||||
From 74db46c4bc4a73ed6e505fe9c207c218c7bf2827 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zolt=C3=A1n=20Mizsei?= <zmizsei@extrowerk.com>
|
||||
Date: Sun, 10 Dec 2017 04:47:06 +0100
|
||||
Subject: Haiku patches
|
||||
|
||||
|
||||
diff --git a/build/common.inc b/build/common.inc
|
||||
index fd29320..533d099 100644
|
||||
--- a/build/common.inc
|
||||
+++ b/build/common.inc
|
||||
@@ -36,6 +36,9 @@ ifndef tbb_os
|
||||
ifeq ($(OS), Darwin)
|
||||
export tbb_os=macos
|
||||
endif
|
||||
+ ifeq ($(OS), Haiku)
|
||||
+ export tbb_os=haiku
|
||||
+ endif
|
||||
|
||||
endif # !tbb_os
|
||||
|
||||
diff --git a/build/haiku.gcc.inc b/build/haiku.gcc.inc
|
||||
new file mode 100644
|
||||
index 0000000..96a0809
|
||||
--- /dev/null
|
||||
+++ b/build/haiku.gcc.inc
|
||||
@@ -0,0 +1,155 @@
|
||||
+# Copyright (c) 2005-2017 Intel Corporation
|
||||
+#
|
||||
+# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
+# you may not use this file except in compliance with the License.
|
||||
+# You may obtain a copy of the License at
|
||||
+#
|
||||
+# http://www.apache.org/licenses/LICENSE-2.0
|
||||
+#
|
||||
+# Unless required by applicable law or agreed to in writing, software
|
||||
+# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
+# See the License for the specific language governing permissions and
|
||||
+# limitations under the License.
|
||||
+#
|
||||
+#
|
||||
+#
|
||||
+#
|
||||
+
|
||||
+COMPILE_ONLY = -c -MMD
|
||||
+PREPROC_ONLY = -E -x c++
|
||||
+INCLUDE_KEY = -I
|
||||
+DEFINE_KEY = -D
|
||||
+OUTPUT_KEY = -o #
|
||||
+OUTPUTOBJ_KEY = -o #
|
||||
+PIC_KEY = -fPIC
|
||||
+WARNING_AS_ERROR_KEY = -Werror
|
||||
+WARNING_KEY = -Wall
|
||||
+TEST_WARNING_KEY = -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor
|
||||
+
|
||||
+WARNING_SUPPRESS = -Wno-parentheses -Wno-non-virtual-dtor
|
||||
+DYLIB_KEY = -shared
|
||||
+EXPORT_KEY = -Wl,--version-script,
|
||||
+LIBDL =
|
||||
+
|
||||
+CPLUS = g++
|
||||
+CONLY = gcc
|
||||
+LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY)
|
||||
+LIBS += -lpthread
|
||||
+LINK_FLAGS = -Wl,-rpath-link=.
|
||||
+C_FLAGS = $(CPLUS_FLAGS)
|
||||
+
|
||||
+# gcc 4.2 and higher support OpenMP
|
||||
+ifneq (,$(shell gcc -dumpversion | egrep "^(4\.[2-9]|[5-9])"))
|
||||
+ OPENMP_FLAG = -fopenmp
|
||||
+endif
|
||||
+
|
||||
+# gcc 4.8 and later support RTM intrinsics, but require command line switch to enable them
|
||||
+ifneq (,$(shell gcc -dumpversion | egrep "^(4\.[8-9]|[5-9])"))
|
||||
+ RTM_KEY = -mrtm
|
||||
+endif
|
||||
+
|
||||
+# gcc 4.0 and later have -Wextra that is used by some our customers.
|
||||
+ifneq (,$(shell gcc -dumpversion | egrep "^([4-9])"))
|
||||
+ TEST_WARNING_KEY += -Wextra
|
||||
+endif
|
||||
+
|
||||
+# gcc 5.0 and later have -Wsuggest-override option
|
||||
+# enable it via a pre-included header in order to limit to C++11 and above
|
||||
+ifneq (,$(shell gcc -dumpversion | egrep "^([5-9])"))
|
||||
+ INCLUDE_TEST_HEADERS = -include $(tbb_root)/src/test/harness_preload.h
|
||||
+endif
|
||||
+
|
||||
+# gcc 6.0 and later have -flifetime-dse option that controls
|
||||
+# elimination of stores done outside the object lifetime
|
||||
+ifneq (,$(shell gcc -dumpversion | egrep "^([6-9])"))
|
||||
+ # keep pre-contruction stores for zero initialization
|
||||
+ DSE_KEY = -flifetime-dse=1
|
||||
+endif
|
||||
+
|
||||
+ifeq ($(cfg), release)
|
||||
+ CPLUS_FLAGS = $(ITT_NOTIFY) -g -O2 -DUSE_PTHREAD
|
||||
+endif
|
||||
+ifeq ($(cfg), debug)
|
||||
+ CPLUS_FLAGS = -DTBB_USE_DEBUG $(ITT_NOTIFY) -g -O0 -DUSE_PTHREAD
|
||||
+endif
|
||||
+
|
||||
+TBB_ASM.OBJ=
|
||||
+MALLOC_ASM.OBJ=
|
||||
+
|
||||
+ifeq (ia64,$(arch))
|
||||
+# Position-independent code (PIC) is a must on IA-64 architecture, even for regular (not shared) executables
|
||||
+ CPLUS_FLAGS += $(PIC_KEY)
|
||||
+endif
|
||||
+
|
||||
+ifeq (intel64,$(arch))
|
||||
+ ITT_NOTIFY = -DDO_ITT_NOTIFY
|
||||
+ CPLUS_FLAGS += -m64 $(RTM_KEY)
|
||||
+ LIB_LINK_FLAGS += -m64
|
||||
+endif
|
||||
+
|
||||
+ifeq (ia32,$(arch))
|
||||
+ ITT_NOTIFY = -DDO_ITT_NOTIFY
|
||||
+ CPLUS_FLAGS += -m32 -march=pentium4 $(RTM_KEY)
|
||||
+ LIB_LINK_FLAGS += -m32
|
||||
+endif
|
||||
+
|
||||
+ifeq (ppc64,$(arch))
|
||||
+ CPLUS_FLAGS += -m64
|
||||
+ LIB_LINK_FLAGS += -m64
|
||||
+endif
|
||||
+
|
||||
+ifeq (ppc32,$(arch))
|
||||
+ CPLUS_FLAGS += -m32
|
||||
+ LIB_LINK_FLAGS += -m32
|
||||
+endif
|
||||
+
|
||||
+ifeq (bg,$(arch))
|
||||
+ CPLUS = $(firstword $(notdir $(shell which powerpc{64,32,}-bg{z..a}-linux-g++ 2>/dev/null)))
|
||||
+ CONLY = $(firstword $(notdir $(shell which powerpc{64,32,}-bg{z..a}-linux-gcc 2>/dev/null)))
|
||||
+endif
|
||||
+
|
||||
+# for some gcc versions on Solaris, -m64 may imply V9, but perhaps not everywhere (TODO: verify)
|
||||
+ifeq (sparc,$(arch))
|
||||
+ CPLUS_FLAGS += -mcpu=v9 -m64
|
||||
+ LIB_LINK_FLAGS += -mcpu=v9 -m64
|
||||
+endif
|
||||
+
|
||||
+# automatically generate "IT" instructions when compiling for Thumb ISA
|
||||
+ifeq (armv7,$(arch))
|
||||
+ CPLUS_FLAGS += -Wa,-mimplicit-it=thumb
|
||||
+endif
|
||||
+
|
||||
+#------------------------------------------------------------------------------
|
||||
+# Setting assembler data.
|
||||
+#------------------------------------------------------------------------------
|
||||
+ASM = as
|
||||
+ifeq (intel64,$(arch))
|
||||
+ ASM_FLAGS += --64
|
||||
+endif
|
||||
+ifeq (ia32,$(arch))
|
||||
+ ASM_FLAGS += --32
|
||||
+endif
|
||||
+ifeq ($(cfg),debug)
|
||||
+ ASM_FLAGS += -g
|
||||
+endif
|
||||
+
|
||||
+ASSEMBLY_SOURCE=$(arch)-gas
|
||||
+ifeq (ia64,$(arch))
|
||||
+ ASM_FLAGS += -xexplicit
|
||||
+ TBB_ASM.OBJ += atomic_support.o lock_byte.o log2.o pause.o ia64_misc.o
|
||||
+ MALLOC_ASM.OBJ += atomic_support.o lock_byte.o pause.o log2.o
|
||||
+endif
|
||||
+#------------------------------------------------------------------------------
|
||||
+# End of setting assembler data.
|
||||
+#------------------------------------------------------------------------------
|
||||
+
|
||||
+#------------------------------------------------------------------------------
|
||||
+# Setting tbbmalloc data.
|
||||
+#------------------------------------------------------------------------------
|
||||
+
|
||||
+M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions
|
||||
+
|
||||
+#------------------------------------------------------------------------------
|
||||
+# End of setting tbbmalloc data.
|
||||
+#------------------------------------------------------------------------------
|
||||
diff --git a/build/haiku.inc b/build/haiku.inc
|
||||
new file mode 100644
|
||||
index 0000000..daeaaf9
|
||||
--- /dev/null
|
||||
+++ b/build/haiku.inc
|
||||
@@ -0,0 +1,142 @@
|
||||
+# Copyright (c) 2005-2017 Intel Corporation
|
||||
+#
|
||||
+# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
+# you may not use this file except in compliance with the License.
|
||||
+# You may obtain a copy of the License at
|
||||
+#
|
||||
+# http://www.apache.org/licenses/LICENSE-2.0
|
||||
+#
|
||||
+# Unless required by applicable law or agreed to in writing, software
|
||||
+# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
+# See the License for the specific language governing permissions and
|
||||
+# limitations under the License.
|
||||
+#
|
||||
+#
|
||||
+#
|
||||
+#
|
||||
+
|
||||
+####### Detections and Commands ###############################################
|
||||
+
|
||||
+ifeq (icc,$(compiler))
|
||||
+ export COMPILER_VERSION := ICC: $(shell icc -V </dev/null 2>&1 | grep 'Version')
|
||||
+ ifneq (,$(findstring running on IA-32, $(COMPILER_VERSION)))
|
||||
+ export arch:=ia32
|
||||
+ else
|
||||
+ ifneq (,$(findstring running on Intel(R) 64, $(COMPILER_VERSION)))
|
||||
+ export arch:=intel64
|
||||
+ else
|
||||
+ ifneq (,$(findstring IA-64, $(COMPILER_VERSION)))
|
||||
+ export arch:=ia64
|
||||
+ endif
|
||||
+ endif
|
||||
+ endif
|
||||
+ ifeq (,$(arch))
|
||||
+ $(warning "Unknown Intel compiler")
|
||||
+ endif
|
||||
+endif
|
||||
+
|
||||
+ifndef arch
|
||||
+ uname_m:=$(shell uname -m)
|
||||
+ ifeq ($(uname_m),i686)
|
||||
+ export arch:=ia32
|
||||
+ endif
|
||||
+ ifeq ($(uname_m),ia64)
|
||||
+ export arch:=ia64
|
||||
+ endif
|
||||
+ ifeq ($(uname_m),x86_64)
|
||||
+ export arch:=intel64
|
||||
+ endif
|
||||
+ ifeq ($(uname_m),sparc64)
|
||||
+ export arch:=sparc
|
||||
+ endif
|
||||
+ ifeq ($(uname_m),armv7l)
|
||||
+ export arch:=armv7
|
||||
+ endif
|
||||
+ ifndef arch
|
||||
+ export arch:=$(uname_m)
|
||||
+ endif
|
||||
+endif
|
||||
+
|
||||
+ifndef runtime
|
||||
+ export gcc_version:=$(shell gcc -dumpversion)
|
||||
+ os_version:=$(shell uname -r)
|
||||
+ os_kernel_version:=$(shell uname -r | sed -e 's/-.*$$//')
|
||||
+ export os_glibc_version_full:=$(shell getconf GNU_LIBC_VERSION | grep glibc | sed -e 's/^glibc //')
|
||||
+ os_glibc_version:=$(shell echo "$(os_glibc_version_full)" | sed -e '2,$$d' -e 's/-.*$$//')
|
||||
+ export runtime:=cc$(gcc_version)_libc$(os_glibc_version)_kernel$(os_kernel_version)
|
||||
+endif
|
||||
+
|
||||
+native_compiler := gcc
|
||||
+export compiler ?= gcc
|
||||
+debugger ?= gdb
|
||||
+
|
||||
+CMD=sh -c
|
||||
+CWD=$(shell pwd)
|
||||
+CP=cp
|
||||
+RM?=rm -f
|
||||
+RD?=rmdir
|
||||
+MD?=mkdir -p
|
||||
+NUL= /dev/null
|
||||
+SLASH=/
|
||||
+MAKE_VERSIONS=sh $(tbb_root)/build/version_info_linux.sh $(VERSION_FLAGS) >version_string.ver
|
||||
+MAKE_TBBVARS=sh $(tbb_root)/build/generate_tbbvars.sh
|
||||
+
|
||||
+ifdef LD_LIBRARY_PATH
|
||||
+ export LD_LIBRARY_PATH := .:$(LD_LIBRARY_PATH)
|
||||
+else
|
||||
+ export LD_LIBRARY_PATH := .
|
||||
+endif
|
||||
+
|
||||
+####### Build settings ########################################################
|
||||
+
|
||||
+OBJ = o
|
||||
+DLL = so
|
||||
+MALLOC_DLL?=$(DLL)
|
||||
+LIBEXT = so
|
||||
+SONAME_SUFFIX =$(shell grep TBB_COMPATIBLE_INTERFACE_VERSION $(tbb_root)/include/tbb/tbb_stddef.h | egrep -o [0-9.]+)
|
||||
+
|
||||
+ifeq ($(arch),ia64)
|
||||
+ def_prefix = lin64ipf
|
||||
+endif
|
||||
+ifneq (,$(findstring $(arch),sparc s390x))
|
||||
+ def_prefix = lin64
|
||||
+endif
|
||||
+ifeq ($(arch),armv7)
|
||||
+ def_prefix = lin32
|
||||
+endif
|
||||
+ifeq (,$(def_prefix))
|
||||
+ ifeq (64,$(findstring 64,$(arch)))
|
||||
+ def_prefix = lin64
|
||||
+ else
|
||||
+ def_prefix = lin32
|
||||
+ endif
|
||||
+endif
|
||||
+TBB.LST = $(tbb_root)/src/tbb/$(def_prefix)-tbb-export.lst
|
||||
+TBB.DEF = $(TBB.LST:.lst=.def)
|
||||
+
|
||||
+TBB.DLL = $(TBB_NO_VERSION.DLL).$(SONAME_SUFFIX)
|
||||
+TBB.LIB = $(TBB.DLL)
|
||||
+TBB_NO_VERSION.DLL=libtbb$(CPF_SUFFIX)$(DEBUG_SUFFIX).$(DLL)
|
||||
+LINK_TBB.LIB = $(TBB_NO_VERSION.DLL)
|
||||
+
|
||||
+MALLOC_NO_VERSION.DLL = libtbbmalloc$(DEBUG_SUFFIX).$(MALLOC_DLL)
|
||||
+MALLOC.DEF = $(MALLOC_ROOT)/$(def_prefix)-tbbmalloc-export.def
|
||||
+MALLOC.DLL = $(MALLOC_NO_VERSION.DLL).$(SONAME_SUFFIX)
|
||||
+MALLOC.LIB = $(MALLOC_NO_VERSION.DLL)
|
||||
+LINK_MALLOC.LIB = $(MALLOC_NO_VERSION.DLL)
|
||||
+
|
||||
+MALLOCPROXY_NO_VERSION.DLL = libtbbmalloc_proxy$(DEBUG_SUFFIX).$(DLL)
|
||||
+MALLOCPROXY.DEF = $(MALLOC_ROOT)/$(def_prefix)-proxy-export.def
|
||||
+MALLOCPROXY.DLL = $(MALLOCPROXY_NO_VERSION.DLL).$(SONAME_SUFFIX)
|
||||
+MALLOCPROXY.LIB = $(MALLOCPROXY_NO_VERSION.DLL)
|
||||
+LINK_MALLOCPROXY.LIB = $(MALLOCPROXY.LIB)
|
||||
+
|
||||
+RML_NO_VERSION.DLL = libirml$(DEBUG_SUFFIX).$(DLL)
|
||||
+RML.DEF = $(RML_SERVER_ROOT)/lin-rml-export.def
|
||||
+RML.DLL = $(RML_NO_VERSION.DLL).1
|
||||
+RML.LIB = $(RML_NO_VERSION.DLL)
|
||||
+
|
||||
+TEST_LAUNCHER=sh $(tbb_root)/build/test_launcher.sh $(largs)
|
||||
+
|
||||
+OPENCL.LIB = -lOpenCL
|
||||
diff --git a/examples/parallel_for/tachyon/src/types.h b/examples/parallel_for/tachyon/src/types.h
|
||||
index 8686e83..1bee851 100644
|
||||
--- a/examples/parallel_for/tachyon/src/types.h
|
||||
+++ b/examples/parallel_for/tachyon/src/types.h
|
||||
@@ -52,7 +52,7 @@
|
||||
#elif _WIN32
|
||||
#include <malloc.h>
|
||||
#define alloca _alloca
|
||||
-#elif __FreeBSD__||__NetBSD__
|
||||
+#elif __FreeBSD__||__NetBSD__||__HAIKU__
|
||||
#include <stdlib.h>
|
||||
#else
|
||||
#include <alloca.h>
|
||||
diff --git a/include/tbb/machine/linux_common.h b/include/tbb/machine/linux_common.h
|
||||
index 364bad2..3be2493 100644
|
||||
--- a/include/tbb/machine/linux_common.h
|
||||
+++ b/include/tbb/machine/linux_common.h
|
||||
@@ -26,8 +26,11 @@
|
||||
#define __TBB_Yield() sched_yield()
|
||||
|
||||
#include <unistd.h>
|
||||
+
|
||||
+#ifndef __HAIKU__
|
||||
/* Futex definitions */
|
||||
#include <sys/syscall.h>
|
||||
+#endif
|
||||
|
||||
#if defined(SYS_futex)
|
||||
|
||||
diff --git a/include/tbb/tbb_config.h b/include/tbb/tbb_config.h
|
||||
index b1c9f20..f4170df 100644
|
||||
--- a/include/tbb/tbb_config.h
|
||||
+++ b/include/tbb/tbb_config.h
|
||||
@@ -478,7 +478,7 @@ There are four cases that are supported:
|
||||
|
||||
/** __TBB_WEAK_SYMBOLS_PRESENT denotes that the system supports the weak symbol mechanism **/
|
||||
#ifndef __TBB_WEAK_SYMBOLS_PRESENT
|
||||
-#define __TBB_WEAK_SYMBOLS_PRESENT ( !_WIN32 && !__APPLE__ && !__sun && (__TBB_GCC_VERSION >= 40000 || __INTEL_COMPILER ) )
|
||||
+#define __TBB_WEAK_SYMBOLS_PRESENT ( !__HAIKU__ && !_WIN32 && !__APPLE__ && !__sun && (__TBB_GCC_VERSION >= 40000 || __INTEL_COMPILER ) )
|
||||
#endif
|
||||
|
||||
/** __TBB_DYNAMIC_LOAD_ENABLED describes the system possibility to load shared libraries at run time **/
|
||||
diff --git a/include/tbb/tbb_machine.h b/include/tbb/tbb_machine.h
|
||||
index be965df..33e9b8e 100644
|
||||
--- a/include/tbb/tbb_machine.h
|
||||
+++ b/include/tbb/tbb_machine.h
|
||||
@@ -227,7 +227,7 @@ template<> struct atomic_selector<8> {
|
||||
#include "machine/linux_intel64.h"
|
||||
#endif
|
||||
|
||||
-#elif __linux__ || __FreeBSD__ || __NetBSD__
|
||||
+#elif __linux__ || __FreeBSD__ || __NetBSD__ || __HAIKU__
|
||||
|
||||
#if (TBB_USE_GCC_BUILTINS && __TBB_GCC_BUILTIN_ATOMICS_PRESENT)
|
||||
#include "machine/gcc_generic.h"
|
||||
diff --git a/src/perf/perf.cpp b/src/perf/perf.cpp
|
||||
index d9910cc..0d88b58 100644
|
||||
--- a/src/perf/perf.cpp
|
||||
+++ b/src/perf/perf.cpp
|
||||
@@ -36,7 +36,7 @@
|
||||
#include "tbb/task.h"
|
||||
#include "tbb/atomic.h"
|
||||
|
||||
-#if __linux__ || __APPLE__ || __FreeBSD__ || __NetBSD__
|
||||
+#if __linux__ || __APPLE__ || __FreeBSD__ || __NetBSD__ || __HAIKU__
|
||||
#include <sys/resource.h>
|
||||
#endif
|
||||
|
||||
diff --git a/src/rml/client/rml_factory.h b/src/rml/client/rml_factory.h
|
||||
index 5461f7c..5a43eb2 100644
|
||||
--- a/src/rml/client/rml_factory.h
|
||||
+++ b/src/rml/client/rml_factory.h
|
||||
@@ -33,7 +33,7 @@
|
||||
#define RML_SERVER_NAME "libirml" DEBUG_SUFFIX ".dylib"
|
||||
#elif __linux__
|
||||
#define RML_SERVER_NAME "libirml" DEBUG_SUFFIX ".so.1"
|
||||
-#elif __FreeBSD__ || __NetBSD__ || __sun || _AIX
|
||||
+#elif __FreeBSD__ || __NetBSD__ || __sun || _AIX || __HAIKU__
|
||||
#define RML_SERVER_NAME "libirml" DEBUG_SUFFIX ".so"
|
||||
#else
|
||||
#error Unknown OS
|
||||
diff --git a/src/tbb/cache_aligned_allocator.cpp b/src/tbb/cache_aligned_allocator.cpp
|
||||
index 99e8bd7..c51a525 100644
|
||||
--- a/src/tbb/cache_aligned_allocator.cpp
|
||||
+++ b/src/tbb/cache_aligned_allocator.cpp
|
||||
@@ -104,7 +104,7 @@ static const dynamic_link_descriptor MallocLinkTable[] = {
|
||||
#define MALLOCLIB_NAME "tbbmalloc" DEBUG_SUFFIX ".dll"
|
||||
#elif __APPLE__
|
||||
#define MALLOCLIB_NAME "libtbbmalloc" DEBUG_SUFFIX ".dylib"
|
||||
-#elif __FreeBSD__ || __NetBSD__ || __sun || _AIX || __ANDROID__
|
||||
+#elif __FreeBSD__ || __NetBSD__ || __sun || _AIX || __ANDROID__ || __HAIKU__
|
||||
#define MALLOCLIB_NAME "libtbbmalloc" DEBUG_SUFFIX ".so"
|
||||
#elif __linux__ // Note that order of these #elif's is important!
|
||||
#define MALLOCLIB_NAME "libtbbmalloc" DEBUG_SUFFIX __TBB_STRING(.so.TBB_COMPATIBLE_INTERFACE_VERSION)
|
||||
diff --git a/src/tbb/tbb_misc.h b/src/tbb/tbb_misc.h
|
||||
index 6d1adb3..43a9c1b 100644
|
||||
--- a/src/tbb/tbb_misc.h
|
||||
+++ b/src/tbb/tbb_misc.h
|
||||
@@ -25,7 +25,7 @@
|
||||
#include "tbb/tbb_machine.h"
|
||||
#include "tbb/atomic.h" // For atomic_xxx definitions
|
||||
|
||||
-#if __linux__ || __FreeBSD__
|
||||
+#if __linux__ || __FreeBSD__ || __HAIKU__
|
||||
#include <sys/param.h> // __FreeBSD_version
|
||||
#if __FreeBSD_version >= 701000
|
||||
#include <sys/cpuset.h>
|
||||
diff --git a/src/tbbmalloc/MapMemory.h b/src/tbbmalloc/MapMemory.h
|
||||
index f1ef541..4f8492a 100644
|
||||
--- a/src/tbbmalloc/MapMemory.h
|
||||
+++ b/src/tbbmalloc/MapMemory.h
|
||||
@@ -32,7 +32,7 @@ void *ErrnoPreservingMalloc(size_t bytes)
|
||||
return ret;
|
||||
}
|
||||
|
||||
-#if __linux__ || __APPLE__ || __sun || __FreeBSD__
|
||||
+#if __linux__ || __APPLE__ || __sun || __FreeBSD__ || __HAIKU__
|
||||
|
||||
#if __sun && !defined(_XPG4_2)
|
||||
// To have void* as mmap's 1st argument
|
||||
diff --git a/src/tbbmalloc/frontend.cpp b/src/tbbmalloc/frontend.cpp
|
||||
index 5a987d2..6a5bc01 100644
|
||||
--- a/src/tbbmalloc/frontend.cpp
|
||||
+++ b/src/tbbmalloc/frontend.cpp
|
||||
@@ -748,7 +748,7 @@ static inline unsigned int highestBitPos(unsigned int n)
|
||||
unsigned int pos;
|
||||
#if __ARCH_x86_32||__ARCH_x86_64
|
||||
|
||||
-# if __linux__||__APPLE__||__FreeBSD__||__NetBSD__||__sun||__MINGW32__
|
||||
+# if __linux__||__APPLE__||__FreeBSD__||__NetBSD__||__sun||__MINGW32__||__HAIKU__
|
||||
__asm__ ("bsr %1,%0" : "=r"(pos) : "r"(n));
|
||||
# elif (_WIN32 && (!_WIN64 || __INTEL_COMPILER))
|
||||
__asm
|
||||
diff --git a/src/tbbmalloc/proxy.h b/src/tbbmalloc/proxy.h
|
||||
index b92a396..9321363 100644
|
||||
--- a/src/tbbmalloc/proxy.h
|
||||
+++ b/src/tbbmalloc/proxy.h
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
// MALLOC_UNIXLIKE_OVERLOAD_ENABLED depends on MALLOC_CHECK_RECURSION stuff
|
||||
// TODO: limit MALLOC_CHECK_RECURSION to *_OVERLOAD_ENABLED only
|
||||
-#if __linux__ || __APPLE__ || __sun || __FreeBSD__ || MALLOC_UNIXLIKE_OVERLOAD_ENABLED
|
||||
+#if __linux__ || __APPLE__ || __sun || __FreeBSD__ || MALLOC_UNIXLIKE_OVERLOAD_ENABLED || __HAIKU__
|
||||
#define MALLOC_CHECK_RECURSION 1
|
||||
#endif
|
||||
|
||||
diff --git a/src/tbbmalloc/tbbmalloc.cpp b/src/tbbmalloc/tbbmalloc.cpp
|
||||
index d2135a9..92179d9 100644
|
||||
--- a/src/tbbmalloc/tbbmalloc.cpp
|
||||
+++ b/src/tbbmalloc/tbbmalloc.cpp
|
||||
@@ -45,7 +45,7 @@ namespace internal {
|
||||
#define MALLOCLIB_NAME "tbbmalloc" DEBUG_SUFFIX ".dll"
|
||||
#elif __APPLE__
|
||||
#define MALLOCLIB_NAME "libtbbmalloc" DEBUG_SUFFIX ".dylib"
|
||||
-#elif __FreeBSD__ || __NetBSD__ || __sun || _AIX || __ANDROID__
|
||||
+#elif __FreeBSD__ || __NetBSD__ || __sun || _AIX || __ANDROID__ || __HAIKU__
|
||||
#define MALLOCLIB_NAME "libtbbmalloc" DEBUG_SUFFIX ".so"
|
||||
#elif __linux__
|
||||
#define MALLOCLIB_NAME "libtbbmalloc" DEBUG_SUFFIX __TBB_STRING(.so.TBB_COMPATIBLE_INTERFACE_VERSION)
|
||||
diff --git a/src/test/harness_dynamic_libs.h b/src/test/harness_dynamic_libs.h
|
||||
index 90342a0..e4e2b52 100644
|
||||
--- a/src/test/harness_dynamic_libs.h
|
||||
+++ b/src/test/harness_dynamic_libs.h
|
||||
@@ -50,7 +50,7 @@ namespace Harness {
|
||||
#if __APPLE__
|
||||
#define EXT ".dylib"
|
||||
// Android SDK build system does not support .so file name versioning
|
||||
-#elif __FreeBSD__ || __NetBSD__ || __sun || _AIX || __ANDROID__
|
||||
+#elif __FreeBSD__ || __NetBSD__ || __sun || _AIX || __ANDROID__ || __HAIKU__
|
||||
#define EXT ".so"
|
||||
#elif __linux__ // Order of these elif's matters!
|
||||
#define EXT __TBB_STRING(.so.TBB_COMPATIBLE_INTERFACE_VERSION)
|
||||
--
|
||||
2.21.0
|
||||
|
||||
|
||||
From 8dee260a0e1d1647903551c19a2d1f089c8e3047 Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Duval <jerome.duval@gmail.com>
|
||||
Date: Wed, 30 Oct 2019 19:18:26 +0100
|
||||
Subject: Haiku fixes.
|
||||
|
||||
|
||||
diff --git a/build/haiku.gcc.inc b/build/haiku.gcc.inc
|
||||
index 96a0809..1a89d75 100644
|
||||
--- a/build/haiku.gcc.inc
|
||||
+++ b/build/haiku.gcc.inc
|
||||
@@ -28,38 +28,16 @@ WARNING_KEY = -Wall
|
||||
TEST_WARNING_KEY = -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor
|
||||
|
||||
WARNING_SUPPRESS = -Wno-parentheses -Wno-non-virtual-dtor
|
||||
-DYLIB_KEY = -shared
|
||||
+DYLIB_KEY = -shared -Wl,-soname=$(BUILDING_LIBRARY)
|
||||
EXPORT_KEY = -Wl,--version-script,
|
||||
LIBDL =
|
||||
|
||||
CPLUS = g++
|
||||
CONLY = gcc
|
||||
-LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY)
|
||||
+LIB_LINK_FLAGS = -shared
|
||||
LIBS += -lpthread
|
||||
-LINK_FLAGS = -Wl,-rpath-link=.
|
||||
C_FLAGS = $(CPLUS_FLAGS)
|
||||
|
||||
-# gcc 4.2 and higher support OpenMP
|
||||
-ifneq (,$(shell gcc -dumpversion | egrep "^(4\.[2-9]|[5-9])"))
|
||||
- OPENMP_FLAG = -fopenmp
|
||||
-endif
|
||||
-
|
||||
-# gcc 4.8 and later support RTM intrinsics, but require command line switch to enable them
|
||||
-ifneq (,$(shell gcc -dumpversion | egrep "^(4\.[8-9]|[5-9])"))
|
||||
- RTM_KEY = -mrtm
|
||||
-endif
|
||||
-
|
||||
-# gcc 4.0 and later have -Wextra that is used by some our customers.
|
||||
-ifneq (,$(shell gcc -dumpversion | egrep "^([4-9])"))
|
||||
- TEST_WARNING_KEY += -Wextra
|
||||
-endif
|
||||
-
|
||||
-# gcc 5.0 and later have -Wsuggest-override option
|
||||
-# enable it via a pre-included header in order to limit to C++11 and above
|
||||
-ifneq (,$(shell gcc -dumpversion | egrep "^([5-9])"))
|
||||
- INCLUDE_TEST_HEADERS = -include $(tbb_root)/src/test/harness_preload.h
|
||||
-endif
|
||||
-
|
||||
# gcc 6.0 and later have -flifetime-dse option that controls
|
||||
# elimination of stores done outside the object lifetime
|
||||
ifneq (,$(shell gcc -dumpversion | egrep "^([6-9])"))
|
||||
@@ -68,58 +46,25 @@ ifneq (,$(shell gcc -dumpversion | egrep "^([6-9])"))
|
||||
endif
|
||||
|
||||
ifeq ($(cfg), release)
|
||||
- CPLUS_FLAGS = $(ITT_NOTIFY) -g -O2 -DUSE_PTHREAD
|
||||
+ CPLUS_FLAGS = -g -O2 -DUSE_PTHREAD
|
||||
endif
|
||||
ifeq ($(cfg), debug)
|
||||
- CPLUS_FLAGS = -DTBB_USE_DEBUG $(ITT_NOTIFY) -g -O0 -DUSE_PTHREAD
|
||||
+ CPLUS_FLAGS = -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD
|
||||
endif
|
||||
|
||||
TBB_ASM.OBJ=
|
||||
MALLOC_ASM.OBJ=
|
||||
|
||||
-ifeq (ia64,$(arch))
|
||||
-# Position-independent code (PIC) is a must on IA-64 architecture, even for regular (not shared) executables
|
||||
- CPLUS_FLAGS += $(PIC_KEY)
|
||||
-endif
|
||||
-
|
||||
ifeq (intel64,$(arch))
|
||||
- ITT_NOTIFY = -DDO_ITT_NOTIFY
|
||||
- CPLUS_FLAGS += -m64 $(RTM_KEY)
|
||||
- LIB_LINK_FLAGS += -m64
|
||||
-endif
|
||||
-
|
||||
-ifeq (ia32,$(arch))
|
||||
- ITT_NOTIFY = -DDO_ITT_NOTIFY
|
||||
- CPLUS_FLAGS += -m32 -march=pentium4 $(RTM_KEY)
|
||||
- LIB_LINK_FLAGS += -m32
|
||||
-endif
|
||||
-
|
||||
-ifeq (ppc64,$(arch))
|
||||
CPLUS_FLAGS += -m64
|
||||
LIB_LINK_FLAGS += -m64
|
||||
endif
|
||||
|
||||
-ifeq (ppc32,$(arch))
|
||||
+ifeq (ia32,$(arch))
|
||||
CPLUS_FLAGS += -m32
|
||||
LIB_LINK_FLAGS += -m32
|
||||
endif
|
||||
|
||||
-ifeq (bg,$(arch))
|
||||
- CPLUS = $(firstword $(notdir $(shell which powerpc{64,32,}-bg{z..a}-linux-g++ 2>/dev/null)))
|
||||
- CONLY = $(firstword $(notdir $(shell which powerpc{64,32,}-bg{z..a}-linux-gcc 2>/dev/null)))
|
||||
-endif
|
||||
-
|
||||
-# for some gcc versions on Solaris, -m64 may imply V9, but perhaps not everywhere (TODO: verify)
|
||||
-ifeq (sparc,$(arch))
|
||||
- CPLUS_FLAGS += -mcpu=v9 -m64
|
||||
- LIB_LINK_FLAGS += -mcpu=v9 -m64
|
||||
-endif
|
||||
-
|
||||
-# automatically generate "IT" instructions when compiling for Thumb ISA
|
||||
-ifeq (armv7,$(arch))
|
||||
- CPLUS_FLAGS += -Wa,-mimplicit-it=thumb
|
||||
-endif
|
||||
-
|
||||
#------------------------------------------------------------------------------
|
||||
# Setting assembler data.
|
||||
#------------------------------------------------------------------------------
|
||||
@@ -135,11 +80,6 @@ ifeq ($(cfg),debug)
|
||||
endif
|
||||
|
||||
ASSEMBLY_SOURCE=$(arch)-gas
|
||||
-ifeq (ia64,$(arch))
|
||||
- ASM_FLAGS += -xexplicit
|
||||
- TBB_ASM.OBJ += atomic_support.o lock_byte.o log2.o pause.o ia64_misc.o
|
||||
- MALLOC_ASM.OBJ += atomic_support.o lock_byte.o pause.o log2.o
|
||||
-endif
|
||||
#------------------------------------------------------------------------------
|
||||
# End of setting assembler data.
|
||||
#------------------------------------------------------------------------------
|
||||
diff --git a/build/haiku.inc b/build/haiku.inc
|
||||
index daeaaf9..9c0f424 100644
|
||||
--- a/build/haiku.inc
|
||||
+++ b/build/haiku.inc
|
||||
@@ -18,53 +18,21 @@
|
||||
|
||||
####### Detections and Commands ###############################################
|
||||
|
||||
-ifeq (icc,$(compiler))
|
||||
- export COMPILER_VERSION := ICC: $(shell icc -V </dev/null 2>&1 | grep 'Version')
|
||||
- ifneq (,$(findstring running on IA-32, $(COMPILER_VERSION)))
|
||||
- export arch:=ia32
|
||||
- else
|
||||
- ifneq (,$(findstring running on Intel(R) 64, $(COMPILER_VERSION)))
|
||||
- export arch:=intel64
|
||||
- else
|
||||
- ifneq (,$(findstring IA-64, $(COMPILER_VERSION)))
|
||||
- export arch:=ia64
|
||||
- endif
|
||||
- endif
|
||||
- endif
|
||||
- ifeq (,$(arch))
|
||||
- $(warning "Unknown Intel compiler")
|
||||
- endif
|
||||
-endif
|
||||
-
|
||||
ifndef arch
|
||||
uname_m:=$(shell uname -m)
|
||||
- ifeq ($(uname_m),i686)
|
||||
+ ifeq ($(uname_m),BePC)
|
||||
export arch:=ia32
|
||||
endif
|
||||
- ifeq ($(uname_m),ia64)
|
||||
- export arch:=ia64
|
||||
- endif
|
||||
ifeq ($(uname_m),x86_64)
|
||||
export arch:=intel64
|
||||
endif
|
||||
- ifeq ($(uname_m),sparc64)
|
||||
- export arch:=sparc
|
||||
- endif
|
||||
- ifeq ($(uname_m),armv7l)
|
||||
- export arch:=armv7
|
||||
- endif
|
||||
- ifndef arch
|
||||
- export arch:=$(uname_m)
|
||||
- endif
|
||||
endif
|
||||
|
||||
ifndef runtime
|
||||
export gcc_version:=$(shell gcc -dumpversion)
|
||||
os_version:=$(shell uname -r)
|
||||
os_kernel_version:=$(shell uname -r | sed -e 's/-.*$$//')
|
||||
- export os_glibc_version_full:=$(shell getconf GNU_LIBC_VERSION | grep glibc | sed -e 's/^glibc //')
|
||||
- os_glibc_version:=$(shell echo "$(os_glibc_version_full)" | sed -e '2,$$d' -e 's/-.*$$//')
|
||||
- export runtime:=cc$(gcc_version)_libc$(os_glibc_version)_kernel$(os_kernel_version)
|
||||
+ export runtime:=cc$(gcc_version)_kernel$(os_kernel_version)
|
||||
endif
|
||||
|
||||
native_compiler := gcc
|
||||
@@ -79,13 +47,13 @@ RD?=rmdir
|
||||
MD?=mkdir -p
|
||||
NUL= /dev/null
|
||||
SLASH=/
|
||||
-MAKE_VERSIONS=sh $(tbb_root)/build/version_info_linux.sh $(VERSION_FLAGS) >version_string.ver
|
||||
+MAKE_VERSIONS=sh $(tbb_root)/build/version_info_haiku.sh $(VERSION_FLAGS) >version_string.ver
|
||||
MAKE_TBBVARS=sh $(tbb_root)/build/generate_tbbvars.sh
|
||||
|
||||
-ifdef LD_LIBRARY_PATH
|
||||
- export LD_LIBRARY_PATH := .:$(LD_LIBRARY_PATH)
|
||||
+ifdef LIBRARY_PATH
|
||||
+ export LIBRARY_PATH := .:$(LIBRARY_PATH)
|
||||
else
|
||||
- export LD_LIBRARY_PATH := .
|
||||
+ export LIBRARY_PATH := .
|
||||
endif
|
||||
|
||||
####### Build settings ########################################################
|
||||
@@ -96,24 +64,8 @@ MALLOC_DLL?=$(DLL)
|
||||
LIBEXT = so
|
||||
SONAME_SUFFIX =$(shell grep TBB_COMPATIBLE_INTERFACE_VERSION $(tbb_root)/include/tbb/tbb_stddef.h | egrep -o [0-9.]+)
|
||||
|
||||
-ifeq ($(arch),ia64)
|
||||
- def_prefix = lin64ipf
|
||||
-endif
|
||||
-ifneq (,$(findstring $(arch),sparc s390x))
|
||||
- def_prefix = lin64
|
||||
-endif
|
||||
-ifeq ($(arch),armv7)
|
||||
- def_prefix = lin32
|
||||
-endif
|
||||
-ifeq (,$(def_prefix))
|
||||
- ifeq (64,$(findstring 64,$(arch)))
|
||||
- def_prefix = lin64
|
||||
- else
|
||||
- def_prefix = lin32
|
||||
- endif
|
||||
-endif
|
||||
-TBB.LST = $(tbb_root)/src/tbb/$(def_prefix)-tbb-export.lst
|
||||
-TBB.DEF = $(TBB.LST:.lst=.def)
|
||||
+TBB.LST =
|
||||
+TBB.DEF =
|
||||
|
||||
TBB.DLL = $(TBB_NO_VERSION.DLL).$(SONAME_SUFFIX)
|
||||
TBB.LIB = $(TBB.DLL)
|
||||
@@ -121,22 +73,13 @@ TBB_NO_VERSION.DLL=libtbb$(CPF_SUFFIX)$(DEBUG_SUFFIX).$(DLL)
|
||||
LINK_TBB.LIB = $(TBB_NO_VERSION.DLL)
|
||||
|
||||
MALLOC_NO_VERSION.DLL = libtbbmalloc$(DEBUG_SUFFIX).$(MALLOC_DLL)
|
||||
-MALLOC.DEF = $(MALLOC_ROOT)/$(def_prefix)-tbbmalloc-export.def
|
||||
MALLOC.DLL = $(MALLOC_NO_VERSION.DLL).$(SONAME_SUFFIX)
|
||||
MALLOC.LIB = $(MALLOC_NO_VERSION.DLL)
|
||||
LINK_MALLOC.LIB = $(MALLOC_NO_VERSION.DLL)
|
||||
|
||||
MALLOCPROXY_NO_VERSION.DLL = libtbbmalloc_proxy$(DEBUG_SUFFIX).$(DLL)
|
||||
-MALLOCPROXY.DEF = $(MALLOC_ROOT)/$(def_prefix)-proxy-export.def
|
||||
MALLOCPROXY.DLL = $(MALLOCPROXY_NO_VERSION.DLL).$(SONAME_SUFFIX)
|
||||
MALLOCPROXY.LIB = $(MALLOCPROXY_NO_VERSION.DLL)
|
||||
LINK_MALLOCPROXY.LIB = $(MALLOCPROXY.LIB)
|
||||
|
||||
-RML_NO_VERSION.DLL = libirml$(DEBUG_SUFFIX).$(DLL)
|
||||
-RML.DEF = $(RML_SERVER_ROOT)/lin-rml-export.def
|
||||
-RML.DLL = $(RML_NO_VERSION.DLL).1
|
||||
-RML.LIB = $(RML_NO_VERSION.DLL)
|
||||
-
|
||||
TEST_LAUNCHER=sh $(tbb_root)/build/test_launcher.sh $(largs)
|
||||
-
|
||||
-OPENCL.LIB = -lOpenCL
|
||||
diff --git a/build/version_info_haiku.sh b/build/version_info_haiku.sh
|
||||
new file mode 100644
|
||||
index 0000000..0a88119
|
||||
--- /dev/null
|
||||
+++ b/build/version_info_haiku.sh
|
||||
@@ -0,0 +1,34 @@
|
||||
+#!/bin/sh
|
||||
+#
|
||||
+# Copyright (c) 2005-2018 Intel Corporation
|
||||
+#
|
||||
+# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
+# you may not use this file except in compliance with the License.
|
||||
+# You may obtain a copy of the License at
|
||||
+#
|
||||
+# http://www.apache.org/licenses/LICENSE-2.0
|
||||
+#
|
||||
+# Unless required by applicable law or agreed to in writing, software
|
||||
+# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
+# See the License for the specific language governing permissions and
|
||||
+# limitations under the License.
|
||||
+#
|
||||
+#
|
||||
+#
|
||||
+#
|
||||
+
|
||||
+# Script used to generate version info string
|
||||
+echo "#define __TBB_VERSION_STRINGS(N) \\"
|
||||
+echo '#N": BUILD_HOST'"\t\t"`hostname`" ("`uname -m`")"'" ENDL \'
|
||||
+# find OS name in *-release and issue* files by filtering blank lines and lsb-release content out
|
||||
+echo '#N": BUILD_OS'"\t\t"`lsb_release -sd 2>/dev/null | grep -ih '[a-z] ' - /etc/*release /etc/issue 2>/dev/null | head -1 | sed -e 's/["\\\\]//g'`'" ENDL \'
|
||||
+echo '#N": BUILD_KERNEL'"\t"`uname -srv`'" ENDL \'
|
||||
+echo '#N": BUILD_GCC'"\t\t"`g++ --version </dev/null 2>&1 | grep 'g++'`'" ENDL \'
|
||||
+[ -z "$COMPILER_VERSION" ] || echo '#N": BUILD_COMPILER'"\t"$COMPILER_VERSION'" ENDL \'
|
||||
+echo '#N": BUILD_LIBC'"\t"'" ENDL \'
|
||||
+echo '#N": BUILD_LD'"\t\t"`ld -v 2>&1 | grep 'version'`'" ENDL \'
|
||||
+echo '#N": BUILD_TARGET'"\t$arch on $runtime"'" ENDL \'
|
||||
+echo '#N": BUILD_COMMAND'"\t"$*'" ENDL \'
|
||||
+echo ""
|
||||
+echo "#define __TBB_DATETIME \""`date -u`"\""
|
||||
--
|
||||
2.21.0
|
||||
|
||||
Reference in New Issue
Block a user