On Sun, Jun 03, 2007, Anders F Björklund wrote:
> > I don't know of any linker option to have it look for static libs
> > (other than explicitly listing them by name), but either a wrapper
> > to the binary or even patching the source of the binary is doable.
>
> Reading through the source code I realize I didn't look *that* hard:
>
> "-search_paths_first
> By default when the -dynamic flag is in effect, the -lx and
> -weak-lx options first search for a file of the form
> `libx.dylib' in each directory in the library search path, then
> a file of the form `libx.a' is searched for in the library
> search paths. This option changes it so that in each path
> `libx.dylib' is searched for then `libx.a' before the next path
> in the library search path is searched."
>
> So appending "-Wl,-search_paths_first" to the LDFLAGS should work too.
Cool, that's it! If we now override the cc, gcc and ld commands under
Mac OS X and enfore this option, the various linking problems you have
observed should be gone. What about the following (untested) patch?
Index: openpkg.spec
===================================================================
RCS file: /v/openpkg/cvs/openpkg-src/openpkg/openpkg.spec,v
retrieving revision 1.589
diff -u -d -u -d -u -d -r1.589 openpkg.spec
--- openpkg.spec 3 Jun 2007 09:47:55 -0000 1.589
+++ openpkg.spec 3 Jun 2007 21:02:49 -0000
@@ -2437,6 +2437,29 @@
chmod 775 %{l_prefix}/lib/openpkg/override/install-info
fi
;;
+ *-*-macos10.* | *-*-darwin* )
+ gcc="`%{l_prefix}/lib/openpkg/shtool path gcc`"
+ cc="`%{l_prefix}/lib/openpkg/shtool path cc`"
+ ld="`%{l_prefix}/lib/openpkg/shtool path ld`"
+ if [ ".$gcc" != . -a ! -f %{l_prefix}/lib/openpkg/override/gcc ];
then
+ ( echo "#!/bin/sh"
+ echo "$gcc -Wl,-search_paths_first \"[EMAIL PROTECTED]""
+ ) >%{l_prefix}/lib/openpkg/override/gcc
+ chmod 775 %{l_prefix}/lib/openpkg/override/gcc
+ fi
+ if [ ".$cc" != . -a ! -f %{l_prefix}/lib/openpkg/override/cc ];
then
+ ( echo "#!/bin/sh"
+ echo "$cc -Wl,-search_paths_first \"[EMAIL PROTECTED]""
+ ) >%{l_prefix}/lib/openpkg/override/cc
+ chmod 775 %{l_prefix}/lib/openpkg/override/cc
+ fi
+ if [ ".$ld" != . -a ! -f %{l_prefix}/lib/openpkg/override/ld ];
then
+ ( echo "#!/bin/sh"
+ echo "$ld -search_paths_first \"[EMAIL PROTECTED]""
+ ) >%{l_prefix}/lib/openpkg/override/ld
+ chmod 775 %{l_prefix}/lib/openpkg/override/ld
+ fi
+ ;;
esac
# FIXME: hack to workaround problems in environments with too few
Ralf S. Engelschall
[EMAIL PROTECTED]
www.engelschall.com
______________________________________________________________________
OpenPKG http://openpkg.org
Developer Communication List [email protected]