Last active
August 29, 2015 14:06
-
-
Save c9s/3b1557897563ca5a9a3c to your computer and use it in GitHub Desktop.
Here are the instructions that I used to build HHVM on Mac OS 10.9 with Macports
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
git clone --recursive git://github.com/facebook/hhvm.git | |
cd hhvm | |
git checkout -t origin/HHVM-3.2 | |
wget http://www.canonware.com/download/jemalloc/jemalloc-3.6.0.tar.bz2 | |
tar xvf jemalloc-3.6.0.tar.bz2 | |
cd jemalloc-3.6.0 | |
cat <<END | patch -p0 src/jemalloc.c | |
diff --git a/src/jemalloc.c b/src/jemalloc.c | |
index bc350ed..8959959 100644 | |
--- a/src/jemalloc.c | |
+++ b/src/jemalloc.c | |
@@ -1312,7 +1312,6 @@ je_valloc(size_t size) | |
#define is_malloc_(a) malloc_is_ ## a | |
#define is_malloc(a) is_malloc_(a) | |
-#if ((is_malloc(je_malloc) == 1) && defined(__GLIBC__) && !defined(__UCLIBC__)) | |
/* | |
* glibc provides the RTLD_DEEPBIND flag for dlopen which can make it possible | |
* to inconsistently reference libc's malloc(3)-compatible functions | |
@@ -1325,6 +1324,7 @@ je_valloc(size_t size) | |
JEMALLOC_EXPORT void (* __free_hook)(void *ptr) = je_free; | |
JEMALLOC_EXPORT void *(* __malloc_hook)(size_t size) = je_malloc; | |
JEMALLOC_EXPORT void *(* __realloc_hook)(void *ptr, size_t size) = je_realloc; | |
+#ifdef JEMALLOC_OVERRIDE_MEMALIGN | |
JEMALLOC_EXPORT void *(* __memalign_hook)(size_t alignment, size_t size) = | |
je_memalign; | |
#endif | |
END | |
mv bin/pprof bin/jemalloc-prof | |
./configure --disable-debug --prefix=/opt/local --with-jemalloc-prefix= | |
make | |
cd .. | |
wget http://cdn.mysql.com/Downloads/Connector-C/mysql-connector-c-6.1.5-osx10.7-x86.tar.gz | |
tar xvf mysql-connector-c-6.1.5-osx10.7-x86.tar.gz | |
MYSQL_CONN_C_DIR=$PWD/mysql-connector-c-6.1.5-osx10.7-x86 | |
GCC=$(which gcc-mp-4.8) | |
GXX=$(which g++-mp-4.8) | |
prefix=/opt/local | |
PATH=/opt/local/libexec/elftoolchain:$PATH | |
git submodule update --init --recursive --force | |
time cmake . \ | |
-Wno-dev \ | |
-DCMAKE_CXX_COMPILER=$(which g++-mp-4.8) \ | |
-DCMAKE_C_COMPILER=$(which gcc-mp-4.8) \ | |
-DCMAKE_ASM_COMPILER=$(which gcc-mp-4.8) \ | |
-DLIBIBERTY_LIB=$prefix/lib/gcc48/x86_64/libiberty.a \ | |
-DCMAKE_PREFIX_PATH=$prefix \ | |
-DCMAKE_INSTALL_PREFIX=$prefix \ | |
-DCMAKE_INCLUDE_PATH="$prefix/include/gcc48/c++/parallel:$prefix/include:/usr/include" \ | |
-DCMAKE_LIBRARY_PATH="$prefix/lib:/usr/lib" \ | |
-DLIBDWARF_LIBRARIES=$prefix/lib/elftoolchain/libdwarf.3.dylib \ | |
-DLIBDWARF_INCLUDE_DIRS=$prefix/include/elftoolchain \ | |
-DLIBEVENT_LIB=$prefix/lib/libevent.dylib \ | |
-DLIBEVENT_INCLUDE_DIR=$prefix/include \ | |
-DLIBVPX_INCLUDE_DIRS=$prefix/include \ | |
-DFREETYPE_INCLUDE_DIRS=$prefix/include/freetype2 \ | |
-DFREETYPE_LIBRARIES=$prefix/lib/libfreetype.dylib \ | |
-DLIBSQLITE3_INCLUDE_DIR=$prefix/include \ | |
-DLIBSQLITE3_LIBRARY=$prefix/lib/libsqlite3.0.dylib \ | |
-DJEMALLOC_INCLUDE_DIR=$prefix/include \ | |
-DJEMALLOC_LIB=$prefix/lib/libjemalloc.dylib \ | |
-DLibYaml_INCLUDE_DIRS=$prefix/include \ | |
-DMYSQL_INCLUDE_DIR=$prefix/include/mysql55/mysql \ | |
-DMYSQL_LIB=$prefix/lib/mysql55/mysql/libmysqlclient.dylib \ | |
-DBOOST_INCLUDEDIR=$prefix/include \ | |
-DBOOST_LIBRARYDIR=$prefix/lib \ | |
-DBoost_USE_STATIC_LIBS=ON \ | |
-DPCRE_INCLUDE_DIR=$prefix/include \ | |
-DPCRE_LIBRARY=$prefix/lib/libpcre.dylib | |
time make -j4 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment