]> git.saurik.com Git - apple/libdispatch.git/blobdiff - INSTALL
libdispatch-703.30.5.tar.gz
[apple/libdispatch.git] / INSTALL
diff --git a/INSTALL b/INSTALL
index bac7e27e82990c2d163cd4d2d5e98324f6e4a88b..9113e4a8f9c9c1a4b64ff1e8a765b4eb8c4eea38 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -4,8 +4,9 @@ GCD is a concurrent programming framework first shipped with Mac OS X Snow
 Leopard.  This package is an open source bundling of libdispatch, the core
 user space library implementing GCD.  At the time of writing, support for
 the BSD kqueue API, and specifically extensions introduced in Mac OS X Snow
-Leopard and FreeBSD 9-CURRENT, are required to use libdispatch.  Other
-systems are currently unsupported.
+Leopard and FreeBSD 9-CURRENT, are required to use libdispatch.  Support
+for Linux is a work in progress (see Linux notes below). Other systems are
+currently unsupported.
 
   Configuring and installing libdispatch
 
@@ -20,10 +21,15 @@ An uncustomized install requires:
 
 The following configure options may be of general interest:
 
---with-apple-libc-source
+--with-apple-libpthread-source
 
-       Specify the path to Apple's Libc package, so that appropriate headers can
-       be found and used.
+       Specify the path to Apple's libpthread package, so that appropriate headers
+       can be found and used.
+
+--with-apple-libplatform-source
+
+       Specify the path to Apple's libplatform package, so that appropriate headers
+       can be found and used.
 
 --with-apple-libclosure-source
 
@@ -38,39 +44,48 @@ The following configure options may be of general interest:
 --with-blocks-runtime
 
        On systems where -fblocks is supported, specify an additional library path
-       in which libBlocksRuntime can be found.  This is not required on Mac OS X,
+       in which libBlocksRuntime can be found.  This is not required on OS X,
        where the Blocks runtime is included in libSystem, but is required on
        FreeBSD.
 
 The following options are likely to only be useful when building libdispatch on
-Mac OS X as a replacement for /usr/lib/system/libdispatch.dylib:
+OS X as a replacement for /usr/lib/system/libdispatch.dylib:
+
+--with-apple-objc4-source
+
+       Specify the path to Apple's objc4 package, so that appropriate headers can
+       be found and used.
 
 --disable-libdispatch-init-constructor
 
        Do not tag libdispatch's init routine as __constructor, in which case it
        must be run manually before libdispatch routines can be called. This is the
-       default when building on Mac OS X. For /usr/lib/system/libdispatch.dylib
+       default when building on OS X. For /usr/lib/system/libdispatch.dylib
        the init routine is called automatically during process start.
 
 --enable-apple-tsd-optimizations
 
        Use a non-portable allocation scheme for pthread per-thread data (TSD) keys
-       when building libdispatch for /usr/lib/system on Mac OS X.  This should not
-       be used on other OS's, or on Mac OS X when building a stand-alone library.
+       when building libdispatch for /usr/lib/system on OS X.  This should not
+       be used on other OS's, or on OS X when building a stand-alone library.
 
   Typical configuration commands
 
 The following command lines create the configuration required to build
-libdispatch for /usr/lib/system on Mac OS X Lion:
-
-       sh autogen.sh
-       ./configure CFLAGS='-arch x86_64 -arch i386 -g -Os' \
-               --prefix=/usr --libdir=/usr/lib/system \
-               --disable-dependency-tracking --disable-static \
+libdispatch for /usr/lib/system on OS X El Capitan:
+
+       clangpath=$(dirname `xcrun --find clang`)
+       sudo mkdir -p "$clangpath/../local/lib/clang/enable_objc_gc"
+       LIBTOOLIZE=glibtoolize sh autogen.sh
+       cflags='-arch x86_64 -arch i386 -g -Os'
+       ./configure CFLAGS="$cflags" OBJCFLAGS="$cflags" CXXFLAGS="$cflags" \
+               --prefix=/usr --libdir=/usr/lib/system --disable-static \
                --enable-apple-tsd-optimizations \
-               --with-apple-libc-source=/path/to/10.7.0/Libc-763.11 \
-               --with-apple-libclosure-source=/path/to/10.7.0/libclosure-53 \
-               --with-apple-xnu-source=/path/to/10.7.0/xnu-1699.22.73
+               --with-apple-libpthread-source=/path/to/10.11.0/libpthread-137.1.1 \
+               --with-apple-libplatform-source=/path/to/10.11.0/libplatform-73.1.1 \
+               --with-apple-libclosure-source=/path/to/10.11.0/libclosure-65 \
+               --with-apple-xnu-source=/path/to/10.11.0/xnu-3247.1.106 \
+               --with-apple-objc4-source=/path/to/10.11.0/objc4-680
        make check
 
 Typical configuration line for FreeBSD 8.x and 9.x to build libdispatch with
@@ -79,3 +94,27 @@ clang and blocks support:
        sh autogen.sh
        ./configure CC=clang --with-blocks-runtime=/usr/local/lib
        make check
+
+Instructions for building on Linux. Initial focus is on ubuntu 15.04.
+Prepare your system
+ 1. Install compiler, autotools
+    sudo apt-get install clang
+    sudo apt-get install autoconf libtool pkg-config
+ 2. Install dtrace (to generate provider.h)
+    sudo apt-get install systemtap-sdt-dev
+ 3. Install libdispatch pre-reqs
+    sudo apt-get install libblocksruntime-dev libkqueue-dev libbsd-dev
+
+Initialize git submodules:
+  We are using git submodules to incorporate a specific revision of the
+  upstream pthread_workqueue library into the build.
+    git submodule init
+    git submodule update
+
+Build:
+       sh autogen.sh
+       ./configure
+       make
+
+Note: the build currently fails building tests, but libdispatch.so should
+      build successfully.