tbb: clean up haiku patches.

it produced broken libs on x86.
This commit is contained in:
Jerome Duval
2019-10-30 21:43:51 +01:00
parent b342c53bcf
commit 03b226d19c
2 changed files with 322 additions and 47 deletions

View File

@@ -1,31 +1,11 @@
From 5571b623b44a1821423e12ae0ac7bdc1c128bb6f Mon Sep 17 00:00:00 2001
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: [PATCH] Haiku patches
Subject: Haiku patches
---
build/common.inc | 3 +
build/haiku.gcc.inc | 155 ++++++++++++++++++++++++++++++
build/haiku.inc | 142 +++++++++++++++++++++++++++
examples/parallel_for/tachyon/src/types.h | 2 +-
include/tbb/machine/linux_common.h | 3 +
include/tbb/tbb_config.h | 2 +-
include/tbb/tbb_machine.h | 2 +-
src/perf/perf.cpp | 2 +-
src/rml/client/rml_factory.h | 2 +-
src/tbb/cache_aligned_allocator.cpp | 2 +-
src/tbb/tbb_misc.h | 2 +-
src/tbbmalloc/MapMemory.h | 2 +-
src/tbbmalloc/frontend.cpp | 2 +-
src/tbbmalloc/proxy.h | 2 +-
src/tbbmalloc/tbbmalloc.cpp | 2 +-
src/test/harness_dynamic_libs.h | 2 +-
16 files changed, 315 insertions(+), 12 deletions(-)
create mode 100644 build/haiku.gcc.inc
create mode 100644 build/haiku.inc
diff --git a/build/common.inc b/build/common.inc
index b2c20de..a5dd62c 100644
index fd29320..533d099 100644
--- a/build/common.inc
+++ b/build/common.inc
@@ -36,6 +36,9 @@ ifndef tbb_os
@@ -348,7 +328,7 @@ index 0000000..daeaaf9
+
+OPENCL.LIB = -lOpenCL
diff --git a/examples/parallel_for/tachyon/src/types.h b/examples/parallel_for/tachyon/src/types.h
index c32c8f7..8e8023a 100644
index 8686e83..1bee851 100644
--- a/examples/parallel_for/tachyon/src/types.h
+++ b/examples/parallel_for/tachyon/src/types.h
@@ -52,7 +52,7 @@
@@ -361,7 +341,7 @@ index c32c8f7..8e8023a 100644
#else
#include <alloca.h>
diff --git a/include/tbb/machine/linux_common.h b/include/tbb/machine/linux_common.h
index 4d2d355..c52b8b2 100644
index 364bad2..3be2493 100644
--- a/include/tbb/machine/linux_common.h
+++ b/include/tbb/machine/linux_common.h
@@ -26,8 +26,11 @@
@@ -377,10 +357,10 @@ index 4d2d355..c52b8b2 100644
#if defined(SYS_futex)
diff --git a/include/tbb/tbb_config.h b/include/tbb/tbb_config.h
index d8e0e20..6cf7dc1 100644
index b1c9f20..f4170df 100644
--- a/include/tbb/tbb_config.h
+++ b/include/tbb/tbb_config.h
@@ -463,7 +463,7 @@ There are four cases that are supported:
@@ -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
@@ -390,7 +370,7 @@ index d8e0e20..6cf7dc1 100644
/** __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 2857ea5..6f0522c 100644
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> {
@@ -403,7 +383,7 @@ index 2857ea5..6f0522c 100644
#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 36a3ba8..3888bc0 100644
index d9910cc..0d88b58 100644
--- a/src/perf/perf.cpp
+++ b/src/perf/perf.cpp
@@ -36,7 +36,7 @@
@@ -416,7 +396,7 @@ index 36a3ba8..3888bc0 100644
#endif
diff --git a/src/rml/client/rml_factory.h b/src/rml/client/rml_factory.h
index 0c4626a..c903436 100644
index 5461f7c..5a43eb2 100644
--- a/src/rml/client/rml_factory.h
+++ b/src/rml/client/rml_factory.h
@@ -33,7 +33,7 @@
@@ -429,7 +409,7 @@ index 0c4626a..c903436 100644
#else
#error Unknown OS
diff --git a/src/tbb/cache_aligned_allocator.cpp b/src/tbb/cache_aligned_allocator.cpp
index e1e8713..2e7085c 100644
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[] = {
@@ -442,7 +422,7 @@ index e1e8713..2e7085c 100644
#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 8a05197..53fb43a 100644
index 6d1adb3..43a9c1b 100644
--- a/src/tbb/tbb_misc.h
+++ b/src/tbb/tbb_misc.h
@@ -25,7 +25,7 @@
@@ -455,7 +435,7 @@ index 8a05197..53fb43a 100644
#if __FreeBSD_version >= 701000
#include <sys/cpuset.h>
diff --git a/src/tbbmalloc/MapMemory.h b/src/tbbmalloc/MapMemory.h
index 552917a..238ab1b 100644
index f1ef541..4f8492a 100644
--- a/src/tbbmalloc/MapMemory.h
+++ b/src/tbbmalloc/MapMemory.h
@@ -32,7 +32,7 @@ void *ErrnoPreservingMalloc(size_t bytes)
@@ -468,10 +448,10 @@ index 552917a..238ab1b 100644
#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 9aa9a13..eb5ceee 100644
index 5a987d2..6a5bc01 100644
--- a/src/tbbmalloc/frontend.cpp
+++ b/src/tbbmalloc/frontend.cpp
@@ -747,7 +747,7 @@ static inline unsigned int highestBitPos(unsigned int n)
@@ -748,7 +748,7 @@ static inline unsigned int highestBitPos(unsigned int n)
unsigned int pos;
#if __ARCH_x86_32||__ARCH_x86_64
@@ -481,7 +461,7 @@ index 9aa9a13..eb5ceee 100644
# elif (_WIN32 && (!_WIN64 || __INTEL_COMPILER))
__asm
diff --git a/src/tbbmalloc/proxy.h b/src/tbbmalloc/proxy.h
index 8db526c..1bc0478 100644
index b92a396..9321363 100644
--- a/src/tbbmalloc/proxy.h
+++ b/src/tbbmalloc/proxy.h
@@ -26,7 +26,7 @@
@@ -494,7 +474,7 @@ index 8db526c..1bc0478 100644
#endif
diff --git a/src/tbbmalloc/tbbmalloc.cpp b/src/tbbmalloc/tbbmalloc.cpp
index fa0e698..1b8cab5 100644
index d2135a9..92179d9 100644
--- a/src/tbbmalloc/tbbmalloc.cpp
+++ b/src/tbbmalloc/tbbmalloc.cpp
@@ -45,7 +45,7 @@ namespace internal {
@@ -507,7 +487,7 @@ index fa0e698..1b8cab5 100644
#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 dcf856a..baa9abd 100644
index 90342a0..e4e2b52 100644
--- a/src/test/harness_dynamic_libs.h
+++ b/src/test/harness_dynamic_libs.h
@@ -50,7 +50,7 @@ namespace Harness {
@@ -520,5 +500,302 @@ index dcf856a..baa9abd 100644
#elif __linux__ // Order of these elif's matters!
#define EXT __TBB_STRING(.so.TBB_COMPATIBLE_INTERFACE_VERSION)
--
2.15.0
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

View File

@@ -6,11 +6,11 @@ library manages and schedules threads to execute these tasks."
HOMEPAGE="https://www.threadingbuildingblocks.org/"
COPYRIGHT="2005-2018 Intel Corporation"
LICENSE="Apache v2"
REVISION="1"
REVISION="2"
SOURCE_URI="https://github.com/01org/tbb/archive/${portVersion/./_U}.tar.gz"
CHECKSUM_SHA256="c4c2896af527392496c5e01ef8579058a71b6eebbd695924cd138841c13f07be"
SOURCE_DIR="tbb-${portVersion/./_U}"
PATCHES="tbb-${portVersion/./_U}.patchset"
PATCHES="tbb-$portVersion.patchset"
ARCHITECTURES="!x86_gcc2 x86 x86_64"
SECONDARY_ARCHITECTURES="x86"
@@ -41,7 +41,9 @@ BUILD_REQUIRES="
BUILD_PREREQUIRES="
cmd:find
cmd:gcc$secondaryArchSuffix
cmd:grep
cmd:make
cmd:sed
"
defineDebugInfoPackage tbb$secondaryArchSuffix \
@@ -51,11 +53,7 @@ defineDebugInfoPackage tbb$secondaryArchSuffix \
BUILD()
{
if [ "$effectiveTargetArchitecture" != x86_64 ]; then
make arch=ia32 $jobArgs
else
make $jobArgs
fi
make $jobArgs
}
INSTALL()
@@ -83,5 +81,5 @@ INSTALL()
TEST()
{
make test
make $jobArgs test
}