# HG changeset patch # User John W. Eaton # Date 1314632970 14400 # Node ID f3c53fea9fb528576739bb890982bb87019050f5 # Parent 7d1e11d922aa7e2b6407eb6d15bd8d3a67511a96 maint: more linking tweaks * configure.ac (--enable-link-all-dependencies): New option. (--enable-no-undefined): New option. Don't set NO_UNDEFINED_LDFLAG specially on Windows systems. * liboctave/link-deps.mk (LIBOCTAVE_LINK_DEPS): Include $(LAPACK_LIBS), $(BLAS_LIBS) and $(LIBS) in the list. * config-modules.awk: Add $(NO_UNDEFINED_LDFLAG) to LDFLAGS variables. * src/link-deps.mk (OCT_LINK_DEPS): Remove $(NO_UNDEFINED_LDFLAG from the list. * src/mkoctfile.cc.in, mkoctfile.in: Always link files with -loctinterp, -loctave, and -lcruft. diff -r 7d1e11d922aa -r f3c53fea9fb5 configure.ac --- a/configure.ac Mon Aug 29 10:53:07 2011 -0400 +++ b/configure.ac Mon Aug 29 11:49:30 2011 -0400 @@ -1458,28 +1458,41 @@ AC_CHECK_FUNCS(getpwnam, [], [AC_CHECK_LIB(sun, getpwnam)]) -NO_UNDEFINED_LDFLAG= case "$canonical_host_type" in *-*-mingw*) if test "$have_msvc" = "yes"; then AC_CHECK_LIB(dirent, opendir) LIBS="$LIBS -ladvapi32 -lgdi32 -lws2_32 -luser32 -lkernel32" - NO_UNDEFINED_LDFLAG=-no-undefined else LIBS="$LIBS -lgdi32 -lws2_32 -luser32 -lkernel32" - NO_UNDEFINED_LDFLAG=-no-undefined fi LIBS="$LIBS -lgdi32 -lws2_32 -luser32 -lkernel32" - NO_UNDEFINED_LDFLAG=-no-undefined ;; *-*-msdosmsvc*) AC_CHECK_LIB(dirent, opendir) LIBS="$LIBS -ladvapi32 -lgdi32 -lws2_32 -luser32 -lkernel32" - NO_UNDEFINED_LDFLAG=-no-undefined ;; esac + +AC_ARG_ENABLE([no-undefined], + [AS_HELP_STRING([--enable-no-undefined], + [pass -no-undefined to libtool when linking linking Octave and its shared libraries (on by default)])], + [case "${enableval}" in + yes) NO_UNDEFINED_LDFLAG="-no-undefined" ;; + no) NO_UNDEFINED_LDFLAG="" ;; + *) AC_MSG_ERROR([bad value ${enableval} for --enable-link-all-depenencies]) ;; + esac], [NO_UNDEFINED_LDFLAG="-no-undefined"]) AC_SUBST(NO_UNDEFINED_LDFLAG) -AM_CONDITIONAL([AMCOND_LINK_ALL_DEPS], [test -n "$NO_UNDEFINED_LDFLAG"]) + +AC_ARG_ENABLE([link-all-dependencies], + [AS_HELP_STRING([--enable-link-all-dependencies], + [link Octave and its shared libraries with all dependencies, not just those immediately referenced (should not be needed on most systems)])], + [case "${enableval}" in + yes) link_all_deps=true ;; + no) link_all_deps=false ;; + *) AC_MSG_ERROR([bad value ${enableval} for --enable-link-all-depenencies]) ;; + esac], [link_all_deps=false]) +AM_CONDITIONAL([AMCOND_LINK_ALL_DEPS], [test x$link_all_deps = xtrue]) ### Type stuff. diff -r 7d1e11d922aa -r f3c53fea9fb5 liboctave/link-deps.mk --- a/liboctave/link-deps.mk Mon Aug 29 10:53:07 2011 -0400 +++ b/liboctave/link-deps.mk Mon Aug 29 11:49:30 2011 -0400 @@ -5,12 +5,15 @@ $(ARPACK_LIBS) \ $(QRUPDATE_LIBS) \ $(FFTW_XLIBS) \ + $(LAPACK_LIBS) \ + $(BLAS_LIBS) \ $(READLINE_LIBS) \ $(TERM_LIBS) \ $(LIBGLOB) \ $(REGEX_LIBS) \ $(DL_LIBS) \ - $(PTHREAD_LIBS) + $(PTHREAD_LIBS) \ + $(LIBS) LIBOCTAVE_LINK_OPTS = \ $(SPARSE_XLDFLAGS) \ diff -r 7d1e11d922aa -r f3c53fea9fb5 src/DLD-FUNCTIONS/config-module.awk --- a/src/DLD-FUNCTIONS/config-module.awk Mon Aug 29 10:53:07 2011 -0400 +++ b/src/DLD-FUNCTIONS/config-module.awk Mon Aug 29 11:49:30 2011 -0400 @@ -68,7 +68,7 @@ printf ("DLD_FUNCTIONS_%s_la_CPPFLAGS = $(AM_CPPFLAGS) %s\n", basename, cppflags[i]); } - printf ("DLD_FUNCTIONS_%s_la_LDFLAGS = -avoid-version -module %s $(OCT_LINK_OPTS)\n", + printf ("DLD_FUNCTIONS_%s_la_LDFLAGS = -avoid-version -module $(NO_UNDEFINED_LDFLAG) %s $(OCT_LINK_OPTS)\n", basename, ldflags[i]); printf ("DLD_FUNCTIONS_%s_la_LIBADD = liboctinterp.la ../liboctave/liboctave.la ../libcruft/libcruft.la %s $(OCT_LINK_DEPS)\n", basename, libraries[i]); diff -r 7d1e11d922aa -r f3c53fea9fb5 src/Makefile.am --- a/src/Makefile.am Mon Aug 29 10:53:07 2011 -0400 +++ b/src/Makefile.am Mon Aug 29 11:49:30 2011 -0400 @@ -535,7 +535,9 @@ ../libcruft/libcruft.la \ $(OCTAVE_LINK_DEPS) -octave_LDFLAGS = $(OCTAVE_LINK_OPTS) +octave_LDFLAGS = \ + $(NO_UNDEFINED_LDFLAG) \ + $(OCTAVE_LINK_OPTS) ## Section for defining and creating DEF_FILES SRC_DEF_FILES := $(shell $(srcdir)/find-defun-files.sh "$(srcdir)" $(DIST_SRC)) diff -r 7d1e11d922aa -r f3c53fea9fb5 src/link-deps.mk --- a/src/link-deps.mk Mon Aug 29 10:53:07 2011 -0400 +++ b/src/link-deps.mk Mon Aug 29 11:49:30 2011 -0400 @@ -24,9 +24,7 @@ OCT_LINK_DEPS = -OCT_LINK_OPTS = \ - $(NO_UNDEFINED_LDFLAG) \ - $(LDFLAGS) +OCT_LINK_OPTS = $(LDFLAGS) if AMCOND_LINK_ALL_DEPS LIBOCTINTERP_LINK_DEPS += $(LIBOCTAVE_LINK_DEPS) diff -r 7d1e11d922aa -r f3c53fea9fb5 src/mkoctfile.cc.in --- a/src/mkoctfile.cc.in Mon Aug 29 10:53:07 2011 -0400 +++ b/src/mkoctfile.cc.in Mon Aug 29 11:49:30 2011 -0400 @@ -751,7 +751,8 @@ + vars["ALL_CXXFLAGS"] + " " + vars["RDYNAMIC_FLAG"] + " " + vars["ALL_LDFLAGS"] + " " + pass_on_options + " " + output_option + " " + objfiles + " " + libfiles - + " " + ldflags + " " + vars["LFLAGS"] + " " + + " " + ldflags + " " + vars["LFLAGS"] + + " -loctinterp -loctave -lcruft " + " " + vars["OCT_LINK_OPTS"] + " " + vars["OCTAVE_LINK_DEPS"]; result = run_command (cmd); @@ -767,7 +768,8 @@ { string cmd = vars["DL_LD"] + " " + vars["DL_LDFLAGS"] + " " + pass_on_options + " -o " + octfile + " " + objfiles + " " - + libfiles + " " + ldflags + " " + vars["LFLAGS"] + " " + + libfiles + " " + ldflags + " " + vars["LFLAGS"] + + " -loctinterp -loctave -lcruft " + vars["OCT_LINK_OPTS"] + " " + vars["OCT_LINK_DEPS"]; result = run_command (cmd); } diff -r 7d1e11d922aa -r f3c53fea9fb5 src/mkoctfile.in --- a/src/mkoctfile.in Mon Aug 29 10:53:07 2011 -0400 +++ b/src/mkoctfile.in Mon Aug 29 11:49:30 2011 -0400 @@ -101,8 +101,8 @@ : ${FLIBS=%OCTAVE_CONF_FLIBS%} : ${OCTAVE_LINK_DEPS=%OCTAVE_CONF_OCTAVE_LINK_DEPS%} : ${OCTAVE_LINK_DEPS=%OCTAVE_CONF_OCTAVE_LINK_OPTS%} -: ${OCT_LINK_DEPS=%OCTAVE_CONF_OCT_LINK_DEPS%} -: ${OCT_LINK_DEPS=%OCTAVE_CONF_OCT_LINK_OPTS%} +: ${OCT_LINK_DEPS=%OCTAVE_CONF_MKOCTFILE_OCT_LINK_DEPS%} +: ${OCT_LINK_DEPS=%OCTAVE_CONF_MKOCTFILE_OCT_LINK_OPTS%} : ${LD_CXX=%OCTAVE_CONF_LD_CXX%} : ${LDFLAGS=%OCTAVE_CONF_LDFLAGS%} : ${LD_STATIC_FLAG=%OCTAVE_CONF_LD_STATIC_FLAG%} @@ -534,7 +534,7 @@ if $link && [ -n "$objfiles" ]; then if $link_stand_alone; then if [ -n "$LD_CXX" ]; then - cmd="$LD_CXX $CPPFLAGS $ALL_CXXFLAGS $RDYNAMIC_FLAG $ALL_LDFLAGS $pass_on_options $output_option $objfiles $libfiles $ldflags $LFLAGS $RLD_FLAG $OCTAVE_LINK_OPTS $OCTAVE_LINK_DEPS" + cmd="$LD_CXX $CPPFLAGS $ALL_CXXFLAGS $RDYNAMIC_FLAG $ALL_LDFLAGS $pass_on_options $output_option $objfiles $libfiles $ldflags $LFLAGS -loctinterp -loctave -lcruft $RLD_FLAG $OCTAVE_LINK_OPTS $OCTAVE_LINK_DEPS" $dbg $cmd eval $cmd else @@ -542,7 +542,7 @@ exit 1 fi else - cmd="$DL_LD $DL_LDFLAGS $pass_on_options -o $octfile $objfiles $libfiles $ldflags $LFLAGS $OCT_LINK_OPTS $OCT_LINK_DEPS" + cmd="$DL_LD $DL_LDFLAGS $pass_on_options -o $octfile $objfiles $libfiles $ldflags $LFLAGS -loctinterp -loctave -lcruft $OCT_LINK_OPTS $OCT_LINK_DEPS" $dbg $cmd eval $cmd fi