From a28c051c2c5cae14fe0156f52ee14b921cca8096 Mon Sep 17 00:00:00 2001 From: winlin Date: Tue, 17 Mar 2015 21:51:19 +0800 Subject: [PATCH] osx support build nginx and ffmpeg --- trunk/3rdparty/patches/5.x264.osx.gcc.patch | 19 +++++ trunk/auto/build_ffmpeg.sh | 1 + trunk/auto/depends.sh | 80 ++++++++++----------- 3 files changed, 60 insertions(+), 40 deletions(-) create mode 100644 trunk/3rdparty/patches/5.x264.osx.gcc.patch diff --git a/trunk/3rdparty/patches/5.x264.osx.gcc.patch b/trunk/3rdparty/patches/5.x264.osx.gcc.patch new file mode 100644 index 000000000..2b6411a41 --- /dev/null +++ b/trunk/3rdparty/patches/5.x264.osx.gcc.patch @@ -0,0 +1,19 @@ +*** configure Sat Nov 30 05:45:08 2013 +--- ../x264-snapshot-20131129-2245-stable-patch/configure Tue Mar 17 21:42:24 2015 +*************** +*** 466,472 **** + ;; + darwin*) + SYS="MACOSX" +! CFLAGS="$CFLAGS -falign-loops=16" + libm="-lm" + if [ "$pic" = "no" ]; then + cc_check "" -mdynamic-no-pic && CFLAGS="$CFLAGS -mdynamic-no-pic" +--- 466,472 ---- + ;; + darwin*) + SYS="MACOSX" +! CFLAGS="$CFLAGS" + libm="-lm" + if [ "$pic" = "no" ]; then + cc_check "" -mdynamic-no-pic && CFLAGS="$CFLAGS -mdynamic-no-pic" diff --git a/trunk/auto/build_ffmpeg.sh b/trunk/auto/build_ffmpeg.sh index 19f6f7245..8748224cd 100755 --- a/trunk/auto/build_ffmpeg.sh +++ b/trunk/auto/build_ffmpeg.sh @@ -79,6 +79,7 @@ else cd $ff_current_dir && rm -rf x264-snapshot-20131129-2245-stable && unzip -q ${ff_src_dir}/x264-snapshot-20131129-2245-stable.zip && cd x264-snapshot-20131129-2245-stable && + chmod +w configure && patch -p0 <../../../3rdparty/patches/5.x264.osx.gcc.patch && ./configure --prefix=${ff_release_dir} --disable-opencl --bit-depth=8 \ --enable-static --disable-avs --disable-swscale --disable-lavf \ --disable-ffms --disable-gpac && diff --git a/trunk/auto/depends.sh b/trunk/auto/depends.sh index 6f246f8ff..bbc738f04 100755 --- a/trunk/auto/depends.sh +++ b/trunk/auto/depends.sh @@ -97,6 +97,15 @@ function Ubuntu_prepare() sudo apt-get install -y --force-yes unzip; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi echo "install unzip success" fi + + if [ $SRS_NGINX = YES ]; then + if [[ ! -f /usr/include/pcre.h ]]; then + echo "install libpcre3-dev" + require_sudoer "sudo apt-get install -y --force-yes libpcre3-dev" + sudo apt-get install -y --force-yes libpcre3-dev; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi + echo "install libpcre3-dev success" + fi + fi if [ $SRS_FFMPEG_TOOL = YES ]; then autoconf --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then @@ -113,13 +122,6 @@ function Ubuntu_prepare() echo "install libtool success" fi - if [[ ! -f /usr/include/pcre.h ]]; then - echo "install libpcre3-dev" - require_sudoer "sudo apt-get install -y --force-yes libpcre3-dev" - sudo apt-get install -y --force-yes libpcre3-dev; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi - echo "install libpcre3-dev success" - fi - if [[ ! -f /usr/include/zlib.h ]]; then echo "install zlib1g-dev" require_sudoer "sudo apt-get install -y --force-yes zlib1g-dev" @@ -188,6 +190,15 @@ function Centos_prepare() sudo yum install -y unzip; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi echo "install unzip success" fi + + if [ $SRS_NGINX = YES ]; then + if [[ ! -f /usr/include/pcre.h ]]; then + echo "install pcre-devel" + require_sudoer "sudo yum install -y pcre-devel" + sudo yum install -y pcre-devel; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi + echo "install pcre-devel success" + fi + fi if [ $SRS_FFMPEG_TOOL = YES ]; then automake --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then @@ -211,13 +222,6 @@ function Centos_prepare() echo "install libtool success" fi - if [[ ! -f /usr/include/pcre.h ]]; then - echo "install pcre-devel" - require_sudoer "sudo yum install -y pcre-devel" - sudo yum install -y pcre-devel; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi - echo "install pcre-devel success" - fi - if [[ ! -f /usr/include/zlib.h ]]; then echo "install zlib-devel" require_sudoer "sudo yum install -y zlib-devel" @@ -271,14 +275,6 @@ function OSX_prepare() echo "OSX does not support stat, use --without-stat" exit 1 fi - if [ $SRS_FFMPEG_TOOL = YES ]; then - echo "OSX does not support ffmpeg, use --without-ffmpeg" - exit 1 - fi - if [ $SRS_NGINX = YES ]; then - echo "OSX does not support nginx, use --without-nginx" - exit 1 - fi fi brew --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then @@ -322,7 +318,16 @@ function OSX_prepare() brew install unzip; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi echo "install unzip success" fi - + + if [ $SRS_NGINX = YES ]; then + if [[ ! -f /usr/local/include/pcre.h ]]; then + echo "install pcre" + echo "brew install pcre" + brew install pcre; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi + echo "install pcre success" + fi + fi + if [ $SRS_FFMPEG_TOOL = YES ]; then automake --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then echo "install automake" @@ -338,25 +343,18 @@ function OSX_prepare() echo "install autoconf success" fi - libtool --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then + which libtool >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then echo "install libtool" echo "brew install libtool" brew install libtool; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi echo "install libtool success" fi - - if [[ ! -f /usr/include/pcre.h ]]; then - echo "install pcre-devel" - echo "brew install pcre-devel" - brew install pcre-devel; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi - echo "install pcre-devel success" - fi - - if [[ ! -f /usr/include/zlib.h ]]; then - echo "install zlib-devel" - echo "brew install zlib-devel" - brew install zlib-devel; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi - echo "install zlib-devel success" + + brew info zlib >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then + echo "install zlib" + echo "brew install zlib" + brew install zlib; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi + echo "install zlib success" fi fi @@ -448,8 +446,6 @@ if [ $SRS_HTTP_PARSER = YES ]; then rm -rf ${SRS_OBJS}/http-parser-2.1 && cd ${SRS_OBJS} && unzip -q ../3rdparty/http-parser-2.1.zip && cd http-parser-2.1 && patch -p0 < ../../3rdparty/patches/2.http.parser.patch && - sed -i "s/CPPFLAGS_FAST +=.*$/CPPFLAGS_FAST = \$\(CPPFLAGS_DEBUG\)/g" Makefile && - sed -i "s/CFLAGS_FAST =.*$/CFLAGS_FAST = \$\(CFLAGS_DEBUG\)/g" Makefile && make CC=${SrsArmCC} AR=${SrsArmAR} package && cd .. && rm -rf hp && ln -sf http-parser-2.1 hp && cd .. && touch ${SRS_OBJS}/_flag.st.hp.tmp @@ -517,7 +513,11 @@ if [ $__SRS_BUILD_NGINX = YES ]; then # srs will write ts/m3u8 file use current user, # nginx default use nobody, so cannot read the ts/m3u8 created by srs. cp ${SRS_OBJS}/nginx/conf/nginx.conf ${SRS_OBJS}/nginx/conf/nginx.conf.bk - sed -i "s/^.user nobody;/user `whoami`;/g" ${SRS_OBJS}/nginx/conf/nginx.conf + if [ $OS_IS_OSX = YES ]; then + sed -i '' "s/^.user nobody;/user `whoami`;/g" ${SRS_OBJS}/nginx/conf/nginx.conf + else + sed -i "s/^.user nobody;/user `whoami`;/g" ${SRS_OBJS}/nginx/conf/nginx.conf + fi fi # the demo dir.