Subject: Re: pkg/28647 devel/SDL on darwin needs -framework support in libtool
To: None <tv@netbsd.org, gnats-admin@netbsd.org, pkgsrc-bugs@netbsd.org>
From: Darrin B.Jewell <dbj@netbsd.org>
List: pkgsrc-bugs
Date: 01/21/2005 04:18:02
The following reply was made to PR pkg/28647; it has been noted by GNATS.

From: "Darrin B.Jewell" <dbj@netbsd.org>
To: gnats-bugs@netbsd.org
Cc: "Darrin B.Jewell" <dbj@netbsd.org>, pkgsrc-bugs@netbsd.org
Subject: Re: pkg/28647 devel/SDL on darwin needs -framework support in libtool
Date: 20 Jan 2005 23:12:41 -0500

 --=-=-=
 
 
 Here's an updated patch to solve this problem with
 libtool on the 2004Q4 branch.
 
 I think this patch probably will also apply to current
 since the libtool pkg has not had a major upgrade.
 
 It would be nice to get this pr resolved for the next pkgsrc branch
 so I don't have to manually patch my tree.
 
 Let me know if you'd like me to commit this and bump
 libtool's PKGREVISION.
 
 Thanks,
 Darrin
 
 
 --=-=-=
 Content-Type: text/x-patch
 Content-Disposition: attachment; filename=libtool.sdl.2004Q4.patch
 
 Index: pkgsrc/devel/libtool/patches/patch-ac
 ===================================================================
 RCS file: /u3/n/rsync/cvsroot/pkgsrc/devel/libtool/patches/patch-ac,v
 retrieving revision 1.14.2.1
 diff -u -r1.14.2.1 patch-ac
 --- pkgsrc/devel/libtool/patches/patch-ac	23 Dec 2004 03:35:47 -0000	1.14.2.1
 +++ pkgsrc/devel/libtool/patches/patch-ac	21 Jan 2005 03:18:34 -0000
 @@ -1,6 +1,6 @@
  $NetBSD: patch-ac,v 1.14.2.1 2004/12/23 03:35:47 snj Exp $
  
 ---- ltmain.sh.orig	2004-09-19 22:34:44.000000000 +1000
 +--- ltmain.sh.orig	Thu Jan 20 22:15:23 2005
  +++ ltmain.sh
  @@ -184,6 +184,31 @@ func_win32_libid () {
   # command doesn't match the default compiler.
 @@ -85,7 +85,27 @@
   	  if test "$prev" = rpath; then
   	    case "$rpath " in
   	    *" $arg "*) ;;
 -@@ -1466,7 +1519,7 @@ EOF
 +@@ -1348,6 +1401,19 @@ EOF
 + 	  prev=
 + 	  continue
 + 	  ;;
 ++	framework)
 ++	  case $host in
 ++	  *-*-darwin*)
 ++	    case "$deplibs " in
 ++	    *" $qarg.framework "*) ;;
 ++	    *) deplibs="$deplibs $qarg.framework" # this is fixed later
 ++	      ;;
 ++	    esac
 ++	    ;;
 ++	  esac
 ++	  prev=
 ++	  continue
 ++	  ;;
 + 	*)
 + 	  eval "$prev=\"\$arg\""
 + 	  prev=
 +@@ -1466,7 +1532,7 @@ EOF
   	    # These systems don't actually have a C library (as such)
   	    test "X$arg" = "X-lc" && continue
   	    ;;
 @@ -94,7 +114,7 @@
   	    # Do not include libc due to us having libc/libc_r.
   	    test "X$arg" = "X-lc" && continue
   	    ;;
 -@@ -1477,7 +1530,7 @@ EOF
 +@@ -1477,7 +1543,7 @@ EOF
   	  esac
   	elif test "X$arg" = "X-lc_r"; then
   	 case $host in
 @@ -103,7 +123,68 @@
   	   # Do not include libc_r directly, use -pthread flag.
   	   continue
   	   ;;
 -@@ -3063,7 +3116,7 @@ EOF
 +@@ -1669,6 +1735,11 @@ EOF
 + 	continue
 + 	;;
 + 
 ++      -framework)
 ++	prev=framework
 ++	continue
 ++	;;
 ++
 +       # Some other compiler flag.
 +       -* | +*)
 + 	# Unknown arguments in both finalize_command and compile_command need
 +@@ -2052,6 +2123,18 @@ EOF
 + 	    fi
 + 	  fi
 + 	  ;; # -l
 ++	*.framework)
 ++	  if test "$linkmode,$pass" = "prog,link"; then
 ++	    compile_deplibs="$deplib $compile_deplibs"
 ++	    finalize_deplibs="$deplib $finalize_deplibs"
 ++	  else
 ++	    deplibs="$deplib $deplibs"
 ++	    if test "$linkmode" = lib ; then
 ++	      newdependency_libs="$deplib $newdependency_libs"
 ++	    fi
 ++	  fi
 ++	  continue
 ++	  ;;
 + 	-L*)
 + 	  case $linkmode in
 + 	  lib)
 +@@ -2195,6 +2278,13 @@ EOF
 + 	*) . ./$lib ;;
 + 	esac
 + 
 ++	case $host in
 ++	*-*-darwin*)
 ++	  # Convert "-framework foo" to "foo.framework" in dependency_libs
 ++	  test -n "$dependency_libs" && dependency_libs=`$echo "X$dependency_libs" | $Xsed -e 's/-framework \([^ $]*\)/\1.framework/g'`
 ++	  ;;
 ++	esac
 ++
 + 	if test "$linkmode,$pass" = "lib,link" ||
 + 	   test "$linkmode,$pass" = "prog,scan" ||
 + 	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
 +@@ -2811,6 +2901,15 @@ EOF
 + 		*) continue ;;
 + 		esac
 + 		;;
 ++
 ++              *.framework)
 ++                case $host in
 ++                  *-*-darwin*)
 ++                    depdepl="$deplib"
 ++                    ;;
 ++                esac
 ++                ;;
 ++
 + 	      *) continue ;;
 + 	      esac
 + 	      case " $deplibs " in
 +@@ -3063,7 +3162,7 @@ EOF
   	    age="$number_minor"
   	    revision="$number_revision"
   	    ;;
 @@ -112,7 +193,7 @@
   	    current="$number_major"
   	    revision="$number_minor"
   	    age="0"
 -@@ -3143,6 +3196,11 @@ EOF
 +@@ -3143,6 +3242,11 @@ EOF
   	  versuffix=".$current";
   	  ;;
   
 @@ -124,7 +205,7 @@
   	irix | nonstopux)
   	  major=`expr $current - $age + 1`
   
 -@@ -3168,6 +3226,7 @@ EOF
 +@@ -3168,6 +3272,7 @@ EOF
   	linux)
   	  major=.`expr $current - $age`
   	  versuffix="$major.$age.$revision"
 @@ -132,7 +213,7 @@
   	  ;;
   
   	osf)
 -@@ -3336,7 +3395,7 @@ EOF
 +@@ -3336,7 +3441,7 @@ EOF
   	  *-*-netbsd*)
   	    # Don't link with libc until the a.out ld.so is fixed.
   	    ;;
 @@ -141,7 +222,38 @@
   	    # Do not include libc due to us having libc/libc_r.
   	    test "X$arg" = "X-lc" && continue
   	    ;;
 -@@ -5364,8 +5423,16 @@ relink_command=\"$relink_command\""
 +@@ -3670,6 +3775,13 @@ EOF
 + 	    fi
 + 	  fi
 + 	fi
 ++	# Time to change all our "foo.framework" stuff back to "-framework foo"
 ++	case $host in
 ++	*-*-darwin*)
 ++	  newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).framework% -framework \1%g'`
 ++	  dependency_libs=`$echo "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).framework%%g'`
 ++	  ;;
 ++	esac
 + 	# Done checking deplibs!
 + 	deplibs=$newdeplibs
 +       fi
 +@@ -4157,12 +4269,15 @@ EOF
 +       esac
 + 
 +       case $host in
 +-      *darwin*)
 ++      *-*-darwin*)
 +         # Don't allow lazy linking, it breaks C++ global constructors
 +         if test "$tagname" = CXX ; then
 +         compile_command="$compile_command ${wl}-bind_at_load"
 +         finalize_command="$finalize_command ${wl}-bind_at_load"
 +         fi
 ++	# Time to change all our "foo.framework" stuff back to "-framework foo"
 ++	compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).framework% -framework \1%g'`
 ++	finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).framework% -framework \1%g'`
 +         ;;
 +       esac
 + 
 +@@ -5364,8 +5479,16 @@ relink_command=\"$relink_command\""
         exit $EXIT_FAILURE
       fi
   
 
 --=-=-=--