pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

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



Module Name:	pkgsrc-wip
Committed By:	Paul Ripke <stix%stix.id.au@localhost>
Pushed By:	stix
Date:		Tue Oct 27 13:32:08 2020 +1100
Changeset:	c4999c6351c7801a1b62cf0774bd8e584c7f1b31

Modified Files:
	threadingbuildingblocks/Makefile
Added Files:
	threadingbuildingblocks/files/NetBSD.clang.inc
	threadingbuildingblocks/files/NetBSD.gcc.inc
	threadingbuildingblocks/files/NetBSD.inc

Log Message:
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.

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=c4999c6351c7801a1b62cf0774bd8e584c7f1b31

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 threadingbuildingblocks/Makefile               | 16 ++---
 threadingbuildingblocks/files/NetBSD.clang.inc | 17 +++++
 threadingbuildingblocks/files/NetBSD.gcc.inc   | 89 ++++++++++++++++++++++++++
 threadingbuildingblocks/files/NetBSD.inc       | 17 +++++
 4 files changed, 129 insertions(+), 10 deletions(-)

diffs:
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


Home | Main Index | Thread Index | Old Index