Please help, how to build the libpurple framework?

Ryan Govostes rgovostes at gmail.com
Sun Aug 9 20:38:28 UTC 2009


On Aug 9, 2009, at 11:38 AM, Evan Schoenberg, M.D. wrote:

>> . The remaining changes that are required are
>> - figure out how to utilize pkgconfig so that dependencies from / 
>> opt don't get in our way
>
> We were using pkgconfig with the old scripts, right? It looks like  
> PKG_CONFIG is being set in the new ones; this is newly not working,  
> or it wasn't working in the first place?

I don't think they work properly; if it were, I don't think we'd have  
to continuously set the --with-libxyz= arguments in the configure  
scripts. It would simplify things greatly.

>
>> - work out how to compile in new stuff like gstreamer, sipe, gfire
>
> It looks like we're doing a single configure and make for all  
> architectures simultaneously? How does that work?  When doing liboil  
> and the gstreamer plugins, the old scripts do this:
> case $ARCH in
> 		ppc) TARGET_DIR="$TARGET_DIR_PPC"
> 			 export PATH="$PATH_PPC"
> 			 export PKG_CONFIG_PATH="$TARGET_DIR_PPC/lib/pkgconfig"
>            export HOST="powerpc-apple-darwin"
>            export NM="nm -arch ppc "
>         	# We add -DHAVE_SYMBOL_UNDERSCORE because otherwise the
>         	# Altivec functions for PPC are defined as __vec_memcpy  
> rather
>         	# than _vec_memcpy, which fails (liboil)
>            export LOCAL_CFLAGS="-DHAVE_SYMBOL_UNDERSCORE";;
> 		i386) TARGET_DIR="$TARGET_DIR_I386"
> 			  export PATH="$PATH_I386"
> 			  export PKG_CONFIG_PATH="$TARGET_DIR_I386/lib/pkgconfig"
>             export HOST="i386-apple-darwin9.6.0"
>             export NM="nm -arch i386 "
>             export LOCAL_CFLAGS="";;
> 	esac
>
> what's the equivalent for a single cycle?

The thing is that gcc can build universal without help; our old method  
of building two separate copies and then merging them is unnecessary  
and breaks things like incremental compiling. In the new system, it  
would be:

build_gstreamer() {
	prereq "gstreamer" \
		"http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.23.tar.gz 
"
	prereq "gstreamer-plugins-base" \
		"http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-0.10.23.tar.gz 
"
	
	quiet pushd "$ROOTDIR/source/gstreamer"
	
	if needsconfigure $@; then
		status "Configuring gstreamer"
		CFLAGS="$FLAGS" LDFLAGS="$FLAGS" \
			PKG_CONFIG="$ROOTDIR/build/bin/pkg-config" \
			PKG_CONFIG_PATH="$ROOTDIR/build/lib/pkgconfig:/usr/lib/pkgconfig" \
			./configure \
				--prefix="$ROOTDIR/build" \
				--disable-dependency-tracking
	fi
	
	status "Building and installing gstreamer"
	warning "Building too much! Patch the Makefile"
	make
	make install
	
	quiet popd
}

Notice that nothing in this code references the host platform, it only  
configures when it needs to, and it lets make handle all of the  
dependency tracking. And it took about as much space as just setting  
up the environment variables above.

>
>> - actually package up a framework
>
> Is this just a matter of calling universalize.sh once the dylibs are  
> built, or is there a new challenge produced here?

I suppose you could probably make universalize.sh work, but it'd be  
nicer (imo) to make an Xcode target which copies all the files in and  
makes the framework.

-- Ryan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2446 bytes
Desc: not available
URL: <http://adium.im/pipermail/devel_adium.im/attachments/20090809/fd4be00b/attachment.p7s>


More information about the devel mailing list