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

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to