[Ffmpeg-devel] Patch to allow cross-compile with MacOS X

Måns Rullgård mru
Mon Jul 10 22:33:51 CEST 2006

Graham Booker <ffmpeglist at cod3r.com> writes:

> I sent this patch before, but it received no response.  It was
> neither rejected nor commented on, so I must assumed it was missed.
> The problem:
> In order to do cross development on MacOS X, one has to tell gcc to
> use a different set of libraries, headers, etc...  In Apple's gcc,
> this is done by the -isysroot option.
> The configure command we use on ppc to build for i368 is:
> configure" --cross-compile --cpu=x86 --enable-pp --enable-gpl --extra-
> cflags='-arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk' --extra-
> ldflags='-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386'
> And the config.err file ends with:
> BEGIN /tmp/ffmpeg-conf-13958-3900-1136.c
>       1	int main(){
>       2	    return 0;
>       3	}
> END /tmp/ffmpeg-conf-13958-3900-1136.c
> cc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -no-cpp-
> precomp -pipe -fomit-frame-pointer -force_cpusubtype_ALL -Wno-sign-
> compare -Wl,-dynamic,-search_paths_first -isysroot /Developer/SDKs/
> MacOSX10.4u.sdk -arch i386 -o /tmp/ffmpeg-conf-23951-3900-23211 /tmp/
> ffmpeg-conf-13958-3900-1136.c
> /usr/bin/ld: -syslibroot: multiply specified
> collect2: ld returned 1 exit status
> C compiler test failed.
> The problem is that the -isysroot must be given to both the compile
> and link stages, but the configure tests doing both in the same
> stage.  The error message "-syslibroot: multiply specified" clearly
> indicates that this option can only be specified once (even if it is
> the same).  The solution is to separate the compile and link stages
> in the configure, which is all that the following patch does.

No changes needed to makefiles?

> It was created against svn 5649, but still applies to svn 5706.  I am
> including the text of the patch here because it is short and the list
> stripped the attachment the first time I tried to send it:
> Index: configure
> ===================================================================
> --- configure	(revision 5649)
> +++ configure	(working copy)
> @@ -226,8 +226,10 @@
>       log check_ld "$@"
>       cat >$TMPC
>       log_file $TMPC
> -    log $cc $CFLAGS $LDFLAGS "$@" -o $TMPE $TMPC $extralibs
> -    $cc $CFLAGS $LDFLAGS "$@" -o $TMPE $TMPC $extralibs >>$logfile 2>&1
> +    log $cc $CFLAGS "$@" -c -o $TMPO $TMPC >>$logfile 2>&1
> +    $cc $CFLAGS "$@" -c -o $TMPO $TMPC >>$logfile 2>&1
> +    log $cc $LDFLAGS "$@" -o $TMPE $TMPO $extralibs >>$logfile 2>&1
> +    $cc $LDFLAGS "$@" -o $TMPE $TMPO $extralibs >>$logfile 2>&1
> }
> check_cflags(){

The problem with this is that some tests pass linker flags to the
check_ld function, and passing linker flags when only compiling (as
this would do) makes the compiler complain.

Use --cc='gcc -isysroot whatever' until we think of something better.

Visiting whoever designed that option handling with a large cluebat
would be something to start with.

M?ns Rullg?rd
mru at inprovide.com

More information about the ffmpeg-devel mailing list