threadingbuildingblocks: Clean up config to allow normal building with gcc.

Copy the FreeBSD config, slightly modified, to allow normal building with
gcc. Kills off the pkglint warnings.
This commit is contained in:
Paul Ripke 2020-10-27 13:32:08 +11:00
parent 3f344a185f
commit c4999c6351
4 changed files with 129 additions and 10 deletions

View File

@ -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}; \

View File

@ -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

View File

@ -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.
#------------------------------------------------------------------------------

View File

@ -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