Last active
May 12, 2016 23:37
-
-
Save machinekoder/847dc5f320a21f1a9977 to your computer and use it in GitHub Desktop.
Revisions
-
machinekoder revised this gist
Nov 12, 2014 . 1 changed file with 0 additions and 18 deletions.There are no files selected for viewing
This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -60,7 +60,6 @@ mkdir ${PREFIX}/platform ( echo "------------------ Fetch protobuf --------------------" cd /tmp if [ -d /tmp/protobuf-${VERSION} ] then @@ -70,7 +69,6 @@ git clone https://github.com/google/protobuf.git protobuf-${VERSION} cd protobuf-${VERSION} git checkout ${VERSION} sh autogen.sh ) ############################################################### @@ -148,22 +146,6 @@ make -j ${CORES} make install ) ################## # arm64 for iPhone ################## -
machinekoder created this gist
Nov 12, 2014 .There are no files selected for viewing
This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,207 @@ #!/bin/bash echo Building Google Protobuf for Mac OS X / iOS. echo Use 'tail -f build.log' to monitor progress. ( VERSION=2.6.1 DARWIN_RELEASE=`uname -r` CORES=`sysctl hw.ncpu | awk '{print $2}'` #PREFIX=`pwd`/protobuf PREFIX=/opt/protobuf-ios mkdir ${PREFIX} mkdir ${PREFIX}/platform OSX_SDK=$(xcodebuild -showsdks \ | grep macosx | sort | tail -n 1 | awk '{print substr($NF, 7)}' ) IOS_SDK=$(xcodebuild -showsdks \ | grep iphoneos | sort | tail -n 1 | awk '{print substr($NF, 9)}' ) XCODEDIR=`xcode-select --print-path` MACOSX_PLATFORM=${XCODEDIR}/Platforms/MacOSX.platform MACOSX_SYSROOT=${MACOSX_PLATFORM}/Developer/MacOSX${OSX_SDK}.sdk IPHONEOS_PLATFORM=${XCODEDIR}/Platforms/iPhoneOS.platform IPHONEOS_SYSROOT=${IPHONEOS_PLATFORM}/Developer/SDKs/iPhoneOS${IOS_SDK}.sdk IPHONESIMULATOR_PLATFORM=${XCODEDIR}/Platforms/iPhoneSimulator.platform IPHONESIMULATOR_SYSROOT=${IPHONESIMULATOR_PLATFORM}/Developer/SDKs/iPhoneSimulator${IOS_SDK}.sdk CC=clang CFLAGS="-DNDEBUG -g -O0 -pipe -fPIC -fcxx-exceptions" CXX=clang CXXFLAGS="${CFLAGS} -std=c++11 -stdlib=libc++" LDFLAGS="-stdlib=libc++" LIBS="-lc++ -lc++abi" #################################### # Cleanup any earlier build attempts #################################### ( echo "------------------ Cleanup --------------------" cd /tmp if [ -d ${PREFIX} ] then rm -rf ${PREFIX} fi mkdir ${PREFIX} mkdir ${PREFIX}/platform ) ########################################## # Fetch Google Protobuf from source. ########################################## ( echo "------------------ Fetch protobuf --------------------" cd /tmp #curl https://github.com/google/protobuf/releases/download/${VERSION}/protobuf-${VERSION}.tar.gz --output /tmp/protobuf-${VERSION}.tar.gz if [ -d /tmp/protobuf-${VERSION} ] then rm -rf /tmp/protobuf-${VERSION} fi git clone https://github.com/google/protobuf.git protobuf-${VERSION} cd protobuf-${VERSION} git checkout ${VERSION} sh autogen.sh #tar xvf /tmp/protobuf-${VERSION}.tar.gz ) ############################################################### # Replace "namespace google" with "namespace google_public" # in all source/header files. This is to address a # namespace collision issue when building for recent # versions of iOS. Apple is using the protobuf library # internally, and embeds it as a private framework. ############################################################### ( echo "------------------ Fixup namespace --------------------" cd /tmp/protobuf-${VERSION}/src/google/protobuf sed -i '' -e 's/namespace\ google /namespace\ google_public /g' $(find . -name \*.h -type f) sed -i '' -e 's/namespace\ google /namespace\ google_public /g' $(find . -name \*.cc -type f) sed -i '' -e 's/namespace\ google /namespace\ google_public /g' $(find . -name \*.proto -type f) sed -i '' -e 's/google::protobuf/google_public::protobuf/g' $(find . -name \*.h -type f) sed -i '' -e 's/google::protobuf/google_public::protobuf/g' $(find . -name \*.cc -type f) sed -i '' -e 's/google::protobuf/google_public::protobuf/g' $(find . -name \*.proto -type f) ) ##################### # x86_64 for Mac OS X ##################### ( echo "------------------ Mac OS X --------------------" cd /tmp/protobuf-${VERSION} make clean ./configure --disable-shared --enable-static --prefix=${PREFIX} --exec-prefix=${PREFIX}/platform/x86_64 "CC=${CC}" "CFLAGS=${CFLAGS} -arch x86_64" "CXX=${CXX}" "CXXFLAGS=${CXXFLAGS} -arch x86_64" "LDFLAGS=${LDFLAGS}" "LIBS=${LIBS}" make -j ${CORES} make test make install cd python python setup.py build python setup.py install ) ########################### # i386 for iPhone Simulator ########################### ( echo "------------------ iPhone Simulator --------------------" cd /tmp/protobuf-${VERSION} make clean ./configure --build=x86_64-apple-darwin${DARWIN_RELEASE} --host=i386-apple-darwin${DARWIN_RELEASE} --with-protoc=${PREFIX}/platform/x86_64/bin/protoc --disable-shared --enable-static --prefix=${PREFIX} --exec-prefix=${PREFIX}/platform/i386 "CC=${CC}" "CFLAGS=${CFLAGS} -miphoneos-version-min=${IOS_SDK} -arch i386 -isysroot ${IPHONESIMULATOR_SYSROOT}" "CXX=${CXX}" "CXXFLAGS=${CXXFLAGS} -arch i386 -isysroot ${IPHONESIMULATOR_SYSROOT}" LDFLAGS="-arch i386 -miphoneos-version-min=${IOS_SDK} ${LDFLAGS}" "LIBS=${LIBS}" make -j ${CORES} make install ) ################## # armv7 for iPhone ################## ( echo "------------------ armv7 iPhone --------------------" cd /tmp/protobuf-${VERSION} make clean ./configure --build=x86_64-apple-darwin${DARWIN_RELEASE} --host=armv7-apple-darwin${DARWIN_RELEASE} --with-protoc=${PREFIX}/platform/x86_64/bin/protoc --disable-shared --enable-static --prefix=${PREFIX} --exec-prefix=${PREFIX}/platform/armv7 "CC=${CC}" "CFLAGS=${CFLAGS} -miphoneos-version-min=${IOS_SDK} -arch armv7 -isysroot ${IPHONEOS_SYSROOT}" "CXX=${CXX}" "CXXFLAGS=${CXXFLAGS} -arch armv7 -isysroot ${IPHONEOS_SYSROOT}" LDFLAGS="-arch armv7 -miphoneos-version-min=${IOS_SDK} ${LDFLAGS}" "LIBS=${LIBS}" make -j ${CORES} make install ) ################### # armv7s for iPhone ################### ( echo "------------------ armv7s iPhone --------------------" cd /tmp/protobuf-${VERSION} make clean ./configure --build=x86_64-apple-darwin${DARWIN_RELEASE} --host=armv7s-apple-darwin${DARWIN_RELEASE} --with-protoc=${PREFIX}/platform/x86_64/bin/protoc --disable-shared --enable-static --prefix=${PREFIX} --exec-prefix=${PREFIX}/platform/armv7s "CC=${CC}" "CFLAGS=${CFLAGS} -miphoneos-version-min=${IOS_SDK} -arch armv7s -isysroot ${IPHONEOS_SYSROOT}" "CXX=${CXX}" "CXXFLAGS=${CXXFLAGS} -arch armv7s -isysroot ${IPHONEOS_SYSROOT}" LDFLAGS="-arch armv7s -miphoneos-version-min=${IOS_SDK} ${LDFLAGS}" "LIBS=${LIBS}" make -j ${CORES} make install ) ######################################## # Patch Protobuf for 64bit support ######################################## #( #echo "------------------ Patching protobuf --------------------" #cd /tmp/protobuf-${VERSION} #make distclean #curl https://gist.github.com/BennettSmith/7111094/raw/171695f70b102de2301f5b45d9e9ab3167b4a0e8/0001-Add-generic-GCC-support-for-atomic-operations.patch --output /tmp/0001-Add-generic-GCC-support-for-atomic-operations.patch #curl https://gist.github.com/BennettSmith/7111094/raw/a4e85ffc82af00ae7984020300db51a62110db48/0001-Add-generic-gcc-header-to-Makefile.am.patch --output /tmp/0001-Add-generic-gcc-header-to-Makefile.am.patch #patch -p1 < /tmp/0001-Add-generic-GCC-support-for-atomic-operations.patch #patch -p1 < /tmp/0001-Add-generic-gcc-header-to-Makefile.am.patch #rm /tmp/0001-Add-generic-GCC-support-for-atomic-operations.patch #rm /tmp/0001-Add-generic-gcc-header-to-Makefile.am.patch #) ################## # arm64 for iPhone ################## ( echo "------------------ arm64 iPhone --------------------" cd /tmp/protobuf-${VERSION} make clean ./configure --build=x86_64-apple-darwin${DARWIN_RELEASE} --host=arm --with-protoc=${PREFIX}/platform/x86_64/bin/protoc --disable-shared --enable-static --prefix=${PREFIX} --exec-prefix=${PREFIX}/platform/arm64 "CC=${CC}" "CFLAGS=${CFLAGS} -miphoneos-version-min=${IOS_SDK} -arch arm64 -isysroot ${IPHONEOS_SYSROOT}" "CXX=${CXX}" "CXXFLAGS=${CXXFLAGS} -arch arm64 -isysroot ${IPHONEOS_SYSROOT}" LDFLAGS="-arch arm64 -miphoneos-version-min=${IOS_SDK} ${LDFLAGS}" "LIBS=${LIBS}" make -j ${CORES} make install ) ############################ # Create Universal Libraries ############################ ( echo "------------------ Universal libs --------------------" cd ${PREFIX}/platform mkdir universal lipo x86_64/lib/libprotobuf.a arm64/lib/libprotobuf.a armv7s/lib/libprotobuf.a armv7/lib/libprotobuf.a i386/lib/libprotobuf.a -create -output universal/libprotobuf.a lipo x86_64/lib/libprotobuf-lite.a arm64/lib/libprotobuf-lite.a armv7s/lib/libprotobuf-lite.a armv7/lib/libprotobuf-lite.a i386/lib/libprotobuf-lite.a -create -output universal/libprotobuf-lite.a ) ######################## # Finalize the packaging ######################## ( echo "------------------ Packaging --------------------" cd ${PREFIX} mkdir bin mkdir lib cp -r platform/x86_64/bin/protoc bin cp -r platform/x86_64/lib/* lib cp -r platform/universal/* lib rm -rf platform ) ) >build.log 2>&1 echo Done!