diff --git a/threadingbuildingblocks/Makefile b/threadingbuildingblocks/Makefile index 75b38f9f1f..11d9e91fb7 100644 --- a/threadingbuildingblocks/Makefile +++ b/threadingbuildingblocks/Makefile @@ -20,14 +20,10 @@ USE_TOOLS+= gmake pax BUILD_TARGET= default TEST_TARGET= test -# Work around old TBB bug, we'll force using clang++, which appears to -# have less agressive Dead-Store Elimination (DSE). -# The makefiles already assume we're using clang, and hence fail to pass -# "-flifetime-dse=1" to g++. +# NOTE: TBB breaks with newer versions of gcc with aggressive DSE, and must +# be built with "-flifetime-dse=1". This should happen automatically, but +# has been found to be somewhat fragile. # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71388 -PKGSRC_COMPILER= clang -PKG_CC= clang -PKG_CXX= clang++ .include "../../mk/bsd.prefs.mk" @@ -44,9 +40,9 @@ INSTALLATION_DIRS= include/tbb lib #BUILD_DEPENDS+= doxygen-[0-9]*:../../devel/doxygen post-extract: - ${CP} ${WRKSRC}/build/FreeBSD.inc ${WRKSRC}/build/NetBSD.inc; \ - ${CP} ${WRKSRC}/build/FreeBSD.clang.inc ${WRKSRC}/build/NetBSD.clang.inc; \ - ${CP} ${WRKSRC}/build/FreeBSD.gcc.inc ${WRKSRC}/build/NetBSD.gcc.inc; + ${CP} ${FILESDIR}/NetBSD.inc ${WRKSRC}/build/NetBSD.inc; \ + ${CP} ${FILESDIR}/NetBSD.clang.inc ${WRKSRC}/build/NetBSD.clang.inc; \ + ${CP} ${FILESDIR}/NetBSD.gcc.inc ${WRKSRC}/build/NetBSD.gcc.inc; do-install: cd ${WRKSRC}; \ diff --git a/threadingbuildingblocks/files/NetBSD.clang.inc b/threadingbuildingblocks/files/NetBSD.clang.inc new file mode 100644 index 0000000000..f4cdf1287b --- /dev/null +++ b/threadingbuildingblocks/files/NetBSD.clang.inc @@ -0,0 +1,17 @@ +# Copyright (c) 2005-2020 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. + +include $(tbb_root)/build/BSD.clang.inc + +LIBS += -lrt diff --git a/threadingbuildingblocks/files/NetBSD.gcc.inc b/threadingbuildingblocks/files/NetBSD.gcc.inc new file mode 100644 index 0000000000..7bd8b07314 --- /dev/null +++ b/threadingbuildingblocks/files/NetBSD.gcc.inc @@ -0,0 +1,89 @@ +# Copyright (c) 2005-2020 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 +DYLIB_KEY = -shared +WARNING_SUPPRESS = -Wno-parentheses + +CPLUS = g++ +CONLY = gcc +LIB_LINK_FLAGS = -shared +LIBS = -lpthread +C_FLAGS = $(CPLUS_FLAGS) + +# gcc 6.0 and later have -flifetime-dse option that controls +# elimination of stores done outside the object lifetime +ifneq (,$(shell gcc -dumpfullversion -dumpversion | egrep "^([6-9]|1[0-9])")) + # keep pre-contruction stores for zero initialization + DSE_KEY = -flifetime-dse=1 +endif + +ifeq ($(cfg), release) + CPLUS_FLAGS = -g -O2 -DUSE_PTHREAD +endif +ifeq ($(cfg), debug) + CPLUS_FLAGS = -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD +endif + +ASM= +ASM_FLAGS= + +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)) + CPLUS_FLAGS += -m64 + LIB_LINK_FLAGS += -m64 +endif + +ifeq (ia32,$(arch)) + CPLUS_FLAGS += -m32 + LIB_LINK_FLAGS += -m32 +endif + +#------------------------------------------------------------------------------ +# Setting assembler data. +#------------------------------------------------------------------------------ +ASSEMBLY_SOURCE=$(arch)-gas +ifeq (ia64,$(arch)) + ASM=as + TBB_ASM.OBJ = atomic_support.o lock_byte.o log2.o pause.o + MALLOC_ASM.OBJ = atomic_support.o lock_byte.o pause.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/threadingbuildingblocks/files/NetBSD.inc b/threadingbuildingblocks/files/NetBSD.inc new file mode 100644 index 0000000000..3d07997f66 --- /dev/null +++ b/threadingbuildingblocks/files/NetBSD.inc @@ -0,0 +1,17 @@ +# Copyright (c) 2005-2020 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. + +compiler = ${PKGSRC_COMPILER} + +include $(tbb_root)/build/BSD.inc