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 wayWe 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, gfireIt 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 frameworkIs 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
smime.p7s
Description: S/MIME cryptographic signature
