ports/160598: [PATCH]x11-toolkits/scintilla: fix linking, sparc64 build, respect LDFLAGS, trim patch

bf bf at FreeBSD.org
Fri Sep 9 20:10:03 UTC 2011


>Number:         160598
>Category:       ports
>Synopsis:       [PATCH]x11-toolkits/scintilla: fix linking, sparc64 build, respect LDFLAGS, trim patch
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Sep 09 20:10:02 UTC 2011
>Closed-Date:
>Last-Modified:
>Originator:     bf
>Release:        
>Organization:
-
>Environment:
>Description:
--Remove USE_GCC=4.2+ which is satisfied by all supported versions of FreeBSD, and prevents builds with later versions of GCC.

--Pass LDFLAGS to build, and use them and CXXFLAGS in linking -- some flags requires this.

--Fix typo in PICFLAG -- sparc64 has none(it should use -fPIC), and other archs are assigned both -fPIC and -fpic(they should just use -fpic). Pass to build in the standard way via CFLAGS (added to CXXFLAGS by default).

--Trim the patch a bit -- remove some lines rather than commenting them out (they're still in the body of the patch for reference)

--Since we're already altering the CXXFLAGS line, just use the patch to get rid of -Os, eliminating the extra sed pattern 

--Fix linking:

define and use a CONFIGLIBS variable -- the $(CONFIGFLAGS:cflags=libs) construct isn't working, because substitution is occurring too late, as can be seen in build logs -- for example:

http://pointyhat.freebsd.org/errorlogs/amd64-9-latest-logs/scintilla-2.28.log

meaning that the resulting libraries are missing all of the ELF DT_NEEDED flags for gtk, etc.

Re-order link lines, so that they are in proper link order, and add --as-needed.  This can of course cause problems if there are unresolved symbols in any of the gtk libraries, or problems with link order in the pkg-config output, which is why it is not turned on by default everywhere, but on the other hand it can trim many unneeded dependencies, and is currently being used without problems on the same libraries in the associated port editors/scite.  But if there are some doubts about this part of the patch, I'll remove --as-needed.






>How-To-Repeat:

>Fix:


Patch attached with submission follows:

Index: Makefile
===================================================================
RCS file: /home/pcvs/ports/x11-toolkits/scintilla/Makefile,v
retrieving revision 1.64
diff -u -r1.64 Makefile
--- Makefile	5 Sep 2011 15:33:27 -0000	1.64
+++ Makefile	7 Sep 2011 05:49:36 -0000
@@ -7,6 +7,7 @@
 
 PORTNAME=	scintilla
 PORTVERSION=	2.28
+PORTREVISION=	1
 CATEGORIES=	x11-toolkits
 MASTER_SITES=	SF/scintilla/SciTE/${PORTVERSION}
 DISTNAME=	scite${PORTVERSION:S/.//g}
@@ -22,20 +23,21 @@
 MAKEFILE=	makefile
 USE_LDCONFIG=	yes
 USE_GNOME=	gtk20
-USE_GCC=	4.2+
 MAKE_JOBS_SAFE=	yes
+MAKE_ENV+=	LDFLAGS="${LDFLAGS}"
+CFLAGS+=	-DPIC ${PICFLAG}
 
 .include <bsd.port.pre.mk>
 
 .if ${ARCH} == "sparc64"
-MAKE_ARGS+=	PICFLAGS=-DPIC
+PICFLAG?=	-fPIC
 .else
-MAKE_ARGS+=	PICFLAGS="-DPIC -fPIC -fpic"
+PICFLAG?=	-fpic
 .endif
 
 post-patch:
-	@${REINPLACE_CMD} -e 's|[(]CC[)]|(CXX)|g ; s|[(]CCOMP[)]|(CC)|g ; \
-		s| -Os||g' ${WRKSRC}/makefile
+	@${REINPLACE_CMD} -e 's|[(]CC[)]|(CXX)|g ; s|[(]CCOMP[)]|(CC)|g' \
+		${WRKSRC}/makefile
 
 do-install:
 	${MKDIR} ${PREFIX}/include/scintilla
Index: files/patch-aa
===================================================================
RCS file: /home/pcvs/ports/x11-toolkits/scintilla/files/patch-aa,v
retrieving revision 1.26
diff -u -r1.26 patch-aa
--- files/patch-aa	4 Jul 2011 18:25:04 -0000	1.26
+++ files/patch-aa	7 Sep 2011 01:50:25 -0000
@@ -1,6 +1,6 @@
---- makefile.orig	2011-05-02 05:11:17.000000000 -0400
-+++ makefile	2011-07-03 21:09:17.000000000 -0400
-@@ -7,14 +7,14 @@
+--- makefile.orig	2011-07-31 22:49:04.000000000 -0400
++++ makefile	2011-09-06 20:44:00.000000000 -0400
+@@ -7,14 +7,7 @@
  # Also works with ming32-make on Windows.
  
  .SUFFIXES: .cxx .c .o .h .a
@@ -12,18 +12,11 @@
 -CCOMP = gcc
 -endif
 -AR = ar
-+#ifdef CLANG
-+#CC = clang
-+#CCOMP = clang
-+#else
-+#CC = g++
-+#CCOMP = gcc
-+#endif
-+AR = $(CXX) -shared
++AR = $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared
  RANLIB = touch
  
  ifdef GTK3
-@@ -36,7 +36,8 @@
+@@ -36,7 +29,8 @@
  COMPLIB=..\bin\scintilla.a
  else
  DEL = rm -f
@@ -33,7 +26,7 @@
  endif
  
  vpath %.h ../src ../include ../lexlib
-@@ -55,24 +56,24 @@
+@@ -55,14 +49,15 @@
  endif
  
  ifdef DEBUG
@@ -41,21 +34,17 @@
 +CXXFLAGS+=-DDEBUG -g $(CXXBASEFLAGS) $(THREADFLAGS)
  else
 -CXXFLAGS=-DNDEBUG -Os $(CXXBASEFLAGS) $(THREADFLAGS)
-+CXXFLAGS+=-DNDEBUG -Os $(CXXBASEFLAGS) $(THREADFLAGS)
++CXXFLAGS+=-DNDEBUG $(CXXBASEFLAGS) $(THREADFLAGS)
  endif
  
  CFLAGS:=$(CXXFLAGS)
  
--CONFIGFLAGS:=$(shell pkg-config --cflags $(GTKVERSION))
-+CONFIGFLAGS:=$(shell pkg-config --cflags gtk+-2.0 gthread-2.0)
+ CONFIGFLAGS:=$(shell pkg-config --cflags $(GTKVERSION))
++CONFIGLIBS:=$(shell pkg-config --libs $(GTKVERSION))
  MARSHALLER=scintilla-marshal.o
  
  .cxx.o:
--	$(CC) $(CONFIGFLAGS) $(CXXFLAGS) -c $<
-+	$(CC) $(PICFLAGS) $(CONFIGFLAGS) $(CXXFLAGS) -c $<
- .c.o:
--	$(CCOMP) $(CONFIGFLAGS) $(CFLAGS) -w -c $<
-+	$(CCOMP) $(PICFLAGS) $(CONFIGFLAGS) $(CFLAGS) -w -c $<
+@@ -72,7 +67,7 @@
  
  LEXOBJS:=$(addsuffix .o,$(basename $(notdir $(wildcard ../lexers/Lex*.cxx))))
  
@@ -64,7 +53,7 @@
  
  clean:
  	$(DEL) *.o $(COMPLIB)
-@@ -85,9 +86,11 @@
+@@ -85,9 +80,11 @@
  	ScintillaBase.o ContractionState.o Editor.o ExternalLexer.o PropSetSimple.o PlatGTK.o \
  	KeyMap.o LineMarker.o PositionCache.o ScintillaGTK.o CellBuffer.o ViewStyle.o \
  	RESearch.o RunStyles.o Selection.o Style.o Indicator.o AutoComplete.o UniConversion.o XPM.o \
@@ -72,10 +61,10 @@
 -	$(AR) rc $@ $^
 -	$(RANLIB) $@
 +	$(MARSHALLER)
-+	$(AR) $(CONFIGFLAGS:cflags=libs) -o $@ $^
++	$(AR) -o $@ $^ -Wl,--as-needed $(CONFIGLIBS)
 +
 +$(LEXRLIB): $(LEXOBJS)
-+	$(AR) $(CONFIGFLAGS:cflags=libs) -o $@ $^
++	$(AR) -o $@ $^ -Wl,--as-needed $(CONFIGLIBS)
  
  # Automatically generate header dependencies with "make deps"
  include deps.mak


>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list