Skip site navigation (1)Skip section navigation (2)
Date:      3 Mar 2009 21:05:56 -0300
From:      Mario Sergio Fujikawa Ferreira <lioux@FreeBSD.org>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        stas@FreeBSD.org
Subject:   ports/132293: [PATCH] lang/ruby19: Add option to build with Profile-Guided Optimization
Message-ID:  <20090304000556.67674.qmail@exxodus.fedaykin.here>
Resent-Message-ID: <200903040010.n240A2Zc065220@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         132293
>Category:       ports
>Synopsis:       [PATCH] lang/ruby19: Add option to build with Profile-Guided Optimization
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Wed Mar 04 00:10:02 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator:     Mario Sergio Fujikawa Ferreira
>Release:        FreeBSD 7.1-STABLE i386
>Organization:
>Environment:
System: FreeBSD exxodus.fedaykin.here 7.1-STABLE FreeBSD 7.1-STABLE #57: Tue Feb 24 03:51:58 BRT 2009
>Description:
- Add WITH_PGO to build with Profile-Guided Optimization
- Add a validate target like the one from lang/ruby18/Makefile

Port maintainer (stas@FreeBSD.org) is cc'd.

Generated with FreeBSD Port Tools 0.77
>How-To-Repeat:
>Fix:

--- ruby-1.9.1.0_1,1.patch begins here ---
Index: Makefile
===================================================================
RCS file: /home/pcvs/ports/lang/ruby19/Makefile,v
retrieving revision 1.4
diff -d -u -u -r1.4 Makefile
--- Makefile	9 Feb 2009 17:49:50 -0000	1.4
+++ Makefile	4 Mar 2009 00:04:35 -0000
@@ -42,7 +42,8 @@
 
 NO_LATEST_LINK=	yes
 
-OPTIONS=	RDOC "Build and install Rdoc indexes" off \
+OPTIONS=	PGO "Enable Profile-Guided Optimization" off \
+		RDOC "Build and install Rdoc indexes" off \
 		DEBUG "Compile-in debug info" off
 
 .include <bsd.port.pre.mk>
@@ -75,8 +76,14 @@
 CONFIGURE_ARGS+=	--disable-install-doc
 .endif
 
+.if defined(WITH_PGO)
+CONFIGURE_ENV=	CFLAGS="${CFLAGS} -fprofile-generate" \
+		LDFLAGS="-fprofile-generate" \
+		LIBS="${LDFLAGS}"
+.else
 CONFIGURE_ENV=	CFLAGS="${CFLAGS}" \
 		LIBS="${LDFLAGS}"
+.endif
 
 .if ${RUBY_VER} == ${RUBY_DEFAULT_VER}
 MLINKS=		${RUBY_NAME}.1 ruby.1
@@ -133,6 +140,13 @@
 	${MV} ${BUILD_WRKSRC}/ext/${d} ${WRKDIR}/
 .endfor
 
+.if defined(WITH_PGO)
+.if target(pre-build)
+.error Makefile error since pre-build target has already been defined
+.endif
+pre-build: pgo
+.endif
+
 post-build:
 #
 # Hack to allow modules to be installed into separate PREFIX and/or under user
@@ -288,4 +302,42 @@
 test:
 	@(cd ${WRKSRC}; ${MAKE} test)
 
+validate::
+	@(cd ${WRKSRC}; ${MAKE} update-rubyspec test-rubyspec)
+
+.if defined(WITH_PGO)
+pgo: pgo-pre-build pgo-build pgo-run pgo-post-run pgo-clean
+
+pgo-pre-build:
+	@${FIND} ${BUILD_WRKSRC} -type f -name Makefile -exec \
+		${REINPLACE_CMD} -E \
+			-e 's,^(((C|LD)FLAGS|LDSHARED|ldflags)[[:space:]]*=.*)-fprofile-generate,\1,' \
+			-e 's,^(CFLAGS[[:space:]]*=.*)-fprofile-use,\1,' \
+			-e 's,^(((C|LD)FLAGS|LDSHARED|ldflags)[[:space:]]*=.*)$$,\1 -fprofile-generate,' \
+			{} \;
+
+pgo-build:
+	@(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} ${ALL_TARGET})
+
+pgo-run:
+# Check everything to generate profiling information.
+# Everything runs so slowly that thread tests break on timing issues
+# so we will have to "trust" it just works during the profiling phase.
+	@-(cd ${BUILD_WRKSRC}; ${MAKE} test)
+
+pgo-post-run:
+	@${FIND} ${BUILD_WRKSRC} -type f -name Makefile -exec \
+		${REINPLACE_CMD} -E \
+			-e 's,^(((C|LD)FLAGS|LDSHARED|ldflags)[[:space:]]*=.*)-fprofile-generate,\1,' \
+			-e 's,^(CFLAGS[[:space:]]*=.*)-fprofile-use,\1,' \
+			-e 's,^(CFLAGS[[:space:]]*=.*)$$,\1 -fprofile-use,' \
+			{} \;
+	@${REINPLACE_CMD} -E \
+		-e 's,-fprofile-generate,-fprofile-use,g' \
+		${CONFIGURE_WRKSRC}/config.status
+
+pgo-clean:
+	@(cd ${BUILD_WRKSRC}; ${MAKE} clean)
+.endif # if defined(WITH_PGO)
+
 .include <bsd.port.post.mk>
--- ruby-1.9.1.0_1,1.patch ends here ---

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090304000556.67674.qmail>