From 0af58e872570afe3007395d19419fc422f6cd94f Mon Sep 17 00:00:00 2001
From: Alexander Leidinger <netchild@FreeBSD.org>
Date: Mon, 22 Dec 2003 15:28:18 +0000
Subject: Second part of the stlport-icc fix for 4.x. [1]

This patch modifies some gcc parts too, but basically it makes the port
respect CFLAGS. Because of bugs in combination with gcc 3.x and some
optimization options the CFLAGS are hardcoded (better safe than sorry).

I've tested the gcc part of the fix on 4-stable and two 5.x systems.

Submitted by:	Marius Strobl <marius@alchemy.franken.de> [1]
Approved by:	maintainer timeout (for devel/stlport)
---
 devel/stlport/Makefile                             | 20 ++++++-----
 devel/stlport/files/patch-src::gcc-freebsd.mak     | 12 +++----
 .../stlport/files/patch-test::eh::gcc-freebsd.mak  |  6 ++--
 devel/stlport/files/src::icc-freebsd.mak           | 20 ++++++-----
 devel/stlport/files/stlport::stl_icc.h             | 42 ++++++++++++++++++----
 devel/stlport/files/test::eh::icc-freebsd.mak      | 14 ++++----
 6 files changed, 76 insertions(+), 38 deletions(-)

(limited to 'devel/stlport')

diff --git a/devel/stlport/Makefile b/devel/stlport/Makefile
index 5dd7c2f5c875..ae8bfcfb0075 100644
--- a/devel/stlport/Makefile
+++ b/devel/stlport/Makefile
@@ -8,7 +8,7 @@
 
 PORTNAME=	stlport
 PORTVERSION=	4.5.3
-PORTREVISION=	1
+PORTREVISION?=	1
 CATEGORIES=	devel
 MASTER_SITES=	http://www.stlport.com/archive/
 PKGNAMESUFFIX=	-${COMPILER}
@@ -28,9 +28,10 @@ PATCH_WRKSRC=	${WRKDIR}/STLport-${PORTVERSION:S/.b/b/}
 USE_GMAKE=	yes
 COMPILER?=	gcc
 MAKEFILE=	${COMPILER}-freebsd.mak
+MAKE_ENV+=	CC=${CC} CXX=${CXX}
 MAKE_ARGS+=	INSTALLDIR=${PREFIX} PTHREAD_CFLAGS=${PTHREAD_CFLAGS} \
 		PTHREAD_LIBS=${PTHREAD_LIBS}
-PLIST_SUB=	COMPILER=${COMPILER}
+PLIST_SUB+=	COMPILER=${COMPILER}
 
 INSTALL_TARGET=	install_unix
 INSTALLS_SHLIB=	yes
@@ -40,8 +41,13 @@ BROKEN=		"Not supported on systems prior to FreeBSD 4.4"
 .endif
 
 .if ${COMPILER} == icc
-CC=	icc
-CXX=	icpc
+CC=		icc
+CXX=		icpc
+CFLAGS=		-O -ip -axiMKW
+CXXFLAGS=	${CFLAGS}
+.else
+CFLAGS=
+CXXFLAGS=
 .endif
 
 .if ${COMPILER} == gcc && ${OSVERSION} < 460000
@@ -73,9 +79,7 @@ post-build:	test
 .endif
 
 test:	do-build
-	cd ${WRKSRC}/../test/eh && ${SETENV} CC=${CC} CXX=${CXX} \
-	${GMAKE} -f ${MAKEFILE} PTHREAD_CFLAGS=${PTHREAD_CFLAGS} \
-	PTHREAD_LIBS=${PTHREAD_LIBS} PTHREAD_CFLAGS=${PTHREAD_CFLAGS} \
-	PTHREAD_LIBS=${PTHREAD_LIBS} CC=${CC} CXX=${CXX}
+	@cd ${WRKSRC}/../test/eh && ${SETENV} ${MAKE_ENV} \
+		${GMAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} check_d
 
 .include <bsd.port.post.mk>
diff --git a/devel/stlport/files/patch-src::gcc-freebsd.mak b/devel/stlport/files/patch-src::gcc-freebsd.mak
index faf6f4d0be3e..d55cc5682a96 100644
--- a/devel/stlport/files/patch-src::gcc-freebsd.mak
+++ b/devel/stlport/files/patch-src::gcc-freebsd.mak
@@ -6,8 +6,8 @@
  #
 -CC = gcc -pthread
 -CXX = c++ -pthread -fexceptions
-+CC+= ${PTHREAD_CFLAGS} -D_REENTRANT
-+CXX+= ${PTHREAD_CFLAGS} -D_REENTRANT -fexceptions
++CC+= $(PTHREAD_CFLAGS) -D_REENTRANT
++CXX+= $(PTHREAD_CFLAGS) -D_REENTRANT -fexceptions
  
  #
  # Basename for libraries
@@ -16,18 +16,18 @@
  LINK=ar cr
  # 2.95 flag
 -DYN_LINK=c++ -pthread -fexceptions -shared -o
-+DYN_LINK=$(CXX) ${PTHREAD_LIBS} -shared -o
++DYN_LINK=$(CXX) $(PTHREAD_LIBS) -shared -o
  
  OBJEXT=o
  DYNEXT=so
 @@ -41,8 +41,8 @@
  
- CXXFLAGS_COMMON = -I${STLPORT_DIR} ${WARNING_FLAGS}
+ CXXFLAGS_COMMON = -I$(STLPORT_DIR) $(WARNING_FLAGS)
  
 -CXXFLAGS_RELEASE_static = $(CXXFLAGS_COMMON) -O2
 -CXXFLAGS_RELEASE_dynamic = $(CXXFLAGS_COMMON) -O2 -fPIC
-+CXXFLAGS_RELEASE_static = $(CXXFLAGS_COMMON) ${CXXFLAGS}
-+CXXFLAGS_RELEASE_dynamic = $(CXXFLAGS_COMMON) ${CXXFLAGS} -fPIC
++CXXFLAGS_RELEASE_static = $(CXXFLAGS_COMMON) $(CXXFLAGS)
++CXXFLAGS_RELEASE_dynamic = $(CXXFLAGS_COMMON) $(CXXFLAGS) -fPIC
  
  CXXFLAGS_DEBUG_static = $(CXXFLAGS_COMMON) -O -g
  CXXFLAGS_DEBUG_dynamic = $(CXXFLAGS_COMMON) -O -g -fPIC
diff --git a/devel/stlport/files/patch-test::eh::gcc-freebsd.mak b/devel/stlport/files/patch-test::eh::gcc-freebsd.mak
index 9672b4131b60..ca089998af55 100644
--- a/devel/stlport/files/patch-test::eh::gcc-freebsd.mak
+++ b/devel/stlport/files/patch-test::eh::gcc-freebsd.mak
@@ -11,12 +11,12 @@
  # also, test_slist won't compile with -O3/-O2 when targeting PPC. It fails 
  # in the assembler with 'invalid relocation type'
 -CXXFLAGS = -Wall -g -O ${STL_INCL} -I. ${CXX_EXTRA_FLAGS} -DEH_VECTOR_OPERATOR_NEW
-+CXXFLAGS= $(PTHREAD_CFLAGS) -D_REENTRANT -Wall -g -O ${STL_INCL} -I. ${CXX_EXTRA_FLAGS} -DEH_VECTOR_OPERATOR_NEW -DEH_DELETE_HAS_THROW_SPEC
++CXXFLAGS += $(PTHREAD_CFLAGS) -D_REENTRANT -fexceptions -Wall $(STL_INCL) -I. $(CXX_EXTRA_FLAGS) -DEH_VECTOR_OPERATOR_NEW -DEH_DELETE_HAS_THROW_SPEC
  
 -D_CXXFLAGS = -Wall -g -O ${STL_INCL} -I. ${CXX_EXTRA_FLAGS} -DEH_VECTOR_OPERATOR_NEW -D_STLP_DEBUG -D_STLP_USE_STATIC_LIB
 -NOSGI_CXXFLAGS = -Wall -g -O2 ${STL_INCL} -I. ${CXX_EXTRA_FLAGS} -D_STLP_NO_OWN_IOSTREAMS -D_STLP_DEBUG_UNINITIALIZED -DEH_VECTOR_OPERATOR_NEW
-+D_CXXFLAGS = $(PTHREAD_CFLAGS) -D_REENTRANT -Wall -g -O ${STL_INCL} -I. ${CXX_EXTRA_FLAGS} -DEH_VECTOR_OPERATOR_NEW -DEH_DELETE_HAS_THROW_SPEC -D_STLP_DEBUG -D_STLP_USE_STATIC_LIB
-+NOSGI_CXXFLAGS = $(PTHREAD_CFLAGS) -D_REENTRANT -Wall -g -O2 ${STL_INCL} -I. ${CXX_EXTRA_FLAGS} -D_STLP_NO_OWN_IOSTREAMS -D_STLP_DEBUG_UNINITIALIZED -DEH_VECTOR_OPERATOR_NEW -DEH_DELETE_HAS_THROW_SPEC
++D_CXXFLAGS = $(CXXFLAGS) -g -D_STLP_DEBUG
++NOSGI_CXXFLAGS = $(CXXFLAGS) -D_STLP_NO_OWN_IOSTREAMS -D_STLP_DEBUG_UNINITIALIZED
  
  check: $(TEST)
  
diff --git a/devel/stlport/files/src::icc-freebsd.mak b/devel/stlport/files/src::icc-freebsd.mak
index 619af0e3ee03..6300ce325340 100644
--- a/devel/stlport/files/src::icc-freebsd.mak
+++ b/devel/stlport/files/src::icc-freebsd.mak
@@ -1,12 +1,14 @@
 #
-# Note : this makefile is for Intel(R) C++ Compiler Version 6.0 !
+# Note : This makefile is for Intel(R) C++ Compiler
 #
 
 #
 # compiler
 #
-CC= icc
-CXX= icpc
+#CC= icc
+#CXX= icpc
+#CFLAGS= -O -ip -axiMKW
+#CXXFLAGS= -O -ip -axiMKW
 
 #
 # Basename for libraries
@@ -18,7 +20,9 @@ LIB_BASENAME = libstlport_icc
 #
 #
 LINK=ar cr
-DYN_LINK=$(CXX) -Qoption,ld,-BOOTSTRAPSTLPORT -mt -shared -o
+# Using icc here is a hack while icpc on FreeBSD is set up to automatically
+# link against libstlport_icc.
+DYN_LINK=$(CC) -mt -shared -o
 
 OBJEXT=o
 DYNEXT=so
@@ -38,13 +42,13 @@ include common_macros.mak
 
 WARNING_FLAGS= -w1
 
-CXXFLAGS_COMMON = -I${STLPORT_DIR} ${WARNING_FLAGS} ${PTHREAD_CFLAGS} -D_REENTRANT -mt
+CXXFLAGS_COMMON = -I$(STLPORT_DIR) $(WARNING_FLAGS) $(PTHREAD_CFLAGS) -D_REENTRANT
 
-CXXFLAGS_RELEASE_static = $(CXXFLAGS_COMMON) -O -ip -axiMKW
-CXXFLAGS_RELEASE_dynamic = $(CXXFLAGS_COMMON) -O -ip -axiMKW -KPIC
+CXXFLAGS_RELEASE_static = $(CXXFLAGS_COMMON) $(CXXFLAGS)
+CXXFLAGS_RELEASE_dynamic = $(CXXFLAGS_COMMON) $(CXXFLAGS) -KPIC
 
 CXXFLAGS_DEBUG_static = $(CXXFLAGS_COMMON) -O -g
-CXXFLAGS_DEBUG_dynamic = $(CXXFLAGS_COMMON) -O -g -KPIC
+CXXFLAGS_DEBUG_dynamic = $(CXXFLAGS_COMMON) -O -KPIC
 
 CXXFLAGS_STLDEBUG_static = $(CXXFLAGS_DEBUG_static) -D_STLP_DEBUG
 CXXFLAGS_STLDEBUG_dynamic = $(CXXFLAGS_DEBUG_dynamic) -D_STLP_DEBUG
diff --git a/devel/stlport/files/stlport::stl_icc.h b/devel/stlport/files/stlport::stl_icc.h
index 01d85c66a4ea..574af8a500f5 100644
--- a/devel/stlport/files/stlport::stl_icc.h
+++ b/devel/stlport/files/stlport::stl_icc.h
@@ -1,8 +1,38 @@
-/*
- * STLport configuration file
- * It is internal STLport header - DO NOT include it directly
- */
+// STLport configuration file
+// It is internal STLport header - DO NOT include it directly
+// A list of Intel compiler for Linux portion of STLport settings.
 
-#define	_STLP_NO_CSTD_FUNCTION_IMPORTS
+# define _STLP_LONG_LONG long long
 
-#define	_STLP_LONG_LONG long long
+// Edit relative path below (or put full path) to get native
+// compiler headers included. Default is "../include".
+// C headers may reside in different directory, so separate macro is provided.
+# if (__INTEL_COMPILER >= 800)
+
+# define _STLP_NATIVE_INCLUDE_PATH ../include/c++
+# define _STLP_NATIVE_C_INCLUDE_PATH ../include
+//# define _STLP_NATIVE_CPP_C_INCLUDE_PATH ../include
+
+# ifndef __GNUC__ 
+//  If GCC compatability is disabled (-no-gcc is specified) STD needs to be redefined.
+# define _STLP_REDEFINE_STD 1
+# endif /* __GNUC__ */
+
+//#define _STLP_HAS_NO_NEW_C_HEADERS 1
+
+# endif /* __INTEL_COMPILER >= 800 */
+
+#ifndef __FreeBSD__ // FreeBSD system headers use unsupported GCC extensions.
+# ifndef __GNUC__ 
+# define __GNUC__ 3
+# endif
+#endif
+
+# define _STLP_NO_NATIVE_WIDE_FUNCTIONS 1
+
+#ifdef __FreeBSD__
+# include <osreldate.h>
+# define _STLP_HAS_NATIVE_FLOAT_ABS
+# define _STLP_NO_CSTD_FUNCTION_IMPORTS
+# define _STLP_NO_LONG_DOUBLE
+#endif
diff --git a/devel/stlport/files/test::eh::icc-freebsd.mak b/devel/stlport/files/test::eh::icc-freebsd.mak
index 9494baef0b30..49469197653d 100644
--- a/devel/stlport/files/test::eh::icc-freebsd.mak
+++ b/devel/stlport/files/test::eh::icc-freebsd.mak
@@ -16,7 +16,7 @@ test_deque.cpp test_set.cpp test_map.cpp \
 test_hash_map.cpp  test_hash_set.cpp test_rope.cpp \
 test_string.cpp test_bitset.cpp test_valarray.cpp
 
-LIST=${AUX_LIST} ${TEST_LIST}
+LIST=$(AUX_LIST) $(TEST_LIST)
 
 OBJECTS = $(LIST:%.cpp=obj/%.o) $(STAT_MODULE)
 D_OBJECTS = $(LIST:%.cpp=d_obj/%.o) $(STAT_MODULE)
@@ -29,12 +29,12 @@ D_TEST_EXE = ./eh_test_d
 TEST  = ./eh_test.out
 D_TEST = ./eh_test_d.out
 
-CXXFLAGS= $(PTHREAD_CFLAGS) -D_REENTRANT -mt -w1 -g -O ${STL_INCL} -I. ${CXX_EXTRA_FLAGS} -DEH_VECTOR_OPERATOR_NEW -DEH_DELETE_HAS_THROW_SPEC
-D_CXXFLAGS = $(PTHREAD_CFLAGS) -D_REENTRANT -mt -w1 -g -O ${STL_INCL} -I. ${CXX_EXTRA_FLAGS} -DEH_VECTOR_OPERATOR_NEW -DEH_DELETE_HAS_THROW_SPEC -D_STLP_DEBUG -D_STLP_USE_STATIC_LIB
+CXXFLAGS += $(PTHREAD_CFLAGS) -D_REENTRANT -w1 $(STL_INCL) -I. $(CXX_EXTRA_FLAGS) -DEH_VECTOR_OPERATOR_NEW -DEH_DELETE_HAS_THROW_SPEC
+D_CXXFLAGS = $(CXXFLAGS) -g -D_STLP_DEBUG
 
 check: $(TEST)
 
-LIBS = -lm
+LIBS = -lm -mt
 D_LIBSTLPORT = -L../../lib -lstlport_icc_stldebug
 LIBSTLPORT = -L../../lib -lstlport_icc
 
@@ -52,10 +52,10 @@ $(D_OBJDIR):
 
 
 $(TEST_EXE) : $(OBJDIR) $(OBJECTS)
-	$(CXX) $(CXXFLAGS) $(OBJECTS) $(LIBSTLPORT) $(LIBS) -o $(TEST_EXE)
+	$(CC) $(CXXFLAGS) $(OBJECTS) $(LIBSTLPORT) $(LIBS) -o $(TEST_EXE)
 
 $(D_TEST_EXE) : $(D_OBJDIR) $(D_OBJECTS)
-	$(CXX) $(D_CXXFLAGS) $(D_OBJECTS) $(D_LIBSTLPORT) $(LIBS) -o $(D_TEST_EXE)
+	$(CC) $(D_CXXFLAGS) $(D_OBJECTS) $(D_LIBSTLPORT) $(LIBS) -o $(D_TEST_EXE)
 
 
 $(TEST) : $(TEST_EXE)
@@ -73,4 +73,4 @@ obj/%.o : %.cpp
 	$(CXX) $(CXXFLAGS) $< -c -o $@
 
 clean:
-	rm -rf ${TEST_EXE} *.o */*.o *.core
+	-rm -rf $(TEST_EXE) *.o */*.o *.core
-- 
cgit v1.2.3