Configure fails to find proper link command for Boost unit_test_framework

because it first tries to link this library statically, and when
that fails, it "forgets" to try linking it dynamically.  The reason
is that it has a bunch of nested loops to try multiple variations
on the library name and keeps track of which library names it has
tried so that it doesn't retry the same library name. The problem
is that one of the loop variables also governs whether it should
try static or dynamic liking, and if static linking fails, the
library name gets added to the exclusion list, which prevents it
from trying dynamic linking.  Fix by the value of the loop variable
$boost_rtopt_ to the key value into the list of library variations
to disambiguate the two cases so that linking both ways is tried.

Also move the location where $boost_failed_libs is set out by one
nesting level to prevent the same library name value from being added
to the list multiple times.

Get rid of .include <bsd.port.options.mk> and .if ${PORT_OPTIONS:MDOCS}
as suggested by mat@. Portlint whines about it but the Porters Handbook
says it is OK because the doc files are few and small.

Unmute ${INSTALL_DATA} as suggested by portlint.

PR:		195597
Differential Revision:	https://reviews.freebsd.org/D2279
Reviewed by:	kwm
Approved by:	mat (mentor)
This commit is contained in:
Don Lewis 2015-04-12 05:19:59 +00:00
parent 6bbdbbc328
commit 4b34a92461
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=383837
2 changed files with 24 additions and 9 deletions

View File

@ -36,20 +36,12 @@ GLIB_SCHEMAS= org.gnome.gnote.gschema.xml
DOCS= AUTHORS ChangeLog NEWS README TODO
.include <bsd.port.options.mk>
.if ${OSVERSION} < 900000
BROKEN= Fails to build
.endif
PLIST_SUB+= VERSION=${PORTVERSION}
post-install:
.if ${PORT_OPTIONS:MDOCS}
@${MKDIR} ${STAGEDIR}${DOCSDIR}
.for i in ${DOCS}
@${INSTALL_DATA} ${WRKSRC}/${i} ${STAGEDIR}${DOCSDIR}
${INSTALL_DATA} ${WRKSRC}/${i} ${STAGEDIR}${DOCSDIR}
.endfor
.endif
.include <bsd.port.mk>

View File

@ -0,0 +1,23 @@
--- configure.orig 2014-09-26 13:03:19.000000000 -0700
+++ configure 2014-12-02 16:43:13.000000000 -0800
@@ -17688,7 +17688,7 @@
do
# Avoid testing twice the same lib
case $boost_failed_libs in #(
- *@$boost_lib@*) continue;;
+ *@$boost_lib\ $boost_rtopt_@*) continue;;
esac
# If with_boost is empty, we'll search in /lib first, which is not quite
# right so instead we'll try to a location based on where the headers are.
@@ -17822,10 +17822,9 @@
boost_cv_lib_unit_test_framework_LDFLAGS="-L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath"
boost_cv_lib_unit_test_framework_LDPATH="$boost_ldpath"
break 6
- else
- boost_failed_libs="$boost_failed_libs@$boost_lib@"
fi
done
+ boost_failed_libs="$boost_failed_libs@$boost_lib $boost_rtopt_@"
done
done
done