Index: head/CHANGES =================================================================== --- head/CHANGES +++ head/CHANGES @@ -10,6 +10,18 @@ All ports committers are allowed to commit to this file. +20160416: +AUTHOR: jbeich@FreeBSD.org + + Introducing CONFIGURE_OUTSOURCE. It changes HAS_CONFIGURE and GNU_CONFIGURE + by invoking configure, build and install stage outside of source tree e.g., + + $ mkdir ../.build + $ cd ../.build + $ ${OLDPWD}/configure + $ gmake + $ gmake install + 20160402: AUTHOR: bapt@FreeBSD.org Index: head/Mk/bsd.port.mk =================================================================== --- head/Mk/bsd.port.mk +++ head/Mk/bsd.port.mk @@ -780,6 +780,8 @@ # configure stage will not do anything if this is not set. # GNU_CONFIGURE - If set, you are using GNU configure (optional). Implies # HAS_CONFIGURE. +# CONFIGURE_OUTSOURCE - If set, this port builds in an empty ${CONFIGURE_WRKSRC} +# not being under ${WRKSRC}. # CONFIGURE_WRKSRC # - Directory to run configure in. # Default: ${WRKSRC} @@ -1554,6 +1556,14 @@ WRKSRC:= ${WRKSRC}/${WRKSRC_SUBDIR} .endif +.if defined(CONFIGURE_OUTSOURCE) +CONFIGURE_CMD?= ${WRKSRC}/${CONFIGURE_SCRIPT} +CONFIGURE_WRKSRC?= ${WRKDIR}/.build +BUILD_WRKSRC?= ${CONFIGURE_WRKSRC} +INSTALL_WRKSRC?= ${CONFIGURE_WRKSRC} +TEST_WRKSRC?= ${CONFIGURE_WRKSRC} +.endif + PATCH_WRKSRC?= ${WRKSRC} CONFIGURE_WRKSRC?= ${WRKSRC} BUILD_WRKSRC?= ${WRKSRC} @@ -3334,6 +3344,7 @@ done .endif .if defined(HAS_CONFIGURE) + @${MKDIR} ${CONFIGURE_WRKSRC} @(cd ${CONFIGURE_WRKSRC} && \ ${SET_LATE_CONFIGURE_ARGS} \ if ! ${SETENV} CC="${CC}" CPP="${CPP}" CXX="${CXX}" \