winlin

patch ST for valgrind and ARM. 3.0.11

@@ -182,6 +182,7 @@ Please select your language: @@ -182,6 +182,7 @@ Please select your language:
182 182
183 ### V3 changes 183 ### V3 changes
184 184
  185 +* v3.0, 2017-01-05, patch ST for valgrind and ARM. 3.0.11
185 * v3.0, 2017-01-05, for [#324][bug #324], always enable hstrs. 3.0.10 186 * v3.0, 2017-01-05, for [#324][bug #324], always enable hstrs. 3.0.10
186 * v3.0, 2016-12-15, fix [#717][bug #717], [#691][bug #691], http api/static/stream support cors. 3.0.9 187 * v3.0, 2016-12-15, fix [#717][bug #717], [#691][bug #691], http api/static/stream support cors. 3.0.9
187 * v3.0, 2016-12-08, support log rotate signal SIGUSR1. 3.0.8 188 * v3.0, 2016-12-08, support log rotate signal SIGUSR1. 3.0.8
@@ -27,15 +27,14 @@ fdk-aac-0.1.3.zip @@ -27,15 +27,14 @@ fdk-aac-0.1.3.zip
27 tools/ccache-3.1.9.zip 27 tools/ccache-3.1.9.zip
28 to fast build. 28 to fast build.
29 29
30 -1.st.arm.Makefile.patch  
31 - st编译脚本补丁,允许用户指定cc编译器。  
32 -  
33 gtest-1.6.0.zip 30 gtest-1.6.0.zip
34 - google单元测试框架。 31 + google test framework.
35 32
36 gperftools-2.1.zip 33 gperftools-2.1.zip
37 - google性能分析和测试工具。  
38 - 编译和使用参考压缩文件中的README和doc目录。 34 + gperf tools for performance benchmark.
  35 +
  36 +state-threads-1.9.1.tar.gz:
  37 + patched st from https://github.com/ossrs/state-threads/releases/tag/v1.9.1
39 38
40 links: 39 links:
41 nginx: 40 nginx:
@@ -101,6 +101,13 @@ function Ubuntu_prepare() @@ -101,6 +101,13 @@ function Ubuntu_prepare()
101 sudo apt-get install -y --force-yes unzip; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi 101 sudo apt-get install -y --force-yes unzip; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
102 echo "The unzip is installed." 102 echo "The unzip is installed."
103 fi 103 fi
  104 +
  105 + valgrind --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
  106 + echo "Installing valgrind."
  107 + require_sudoer "sudo apt-get install -y --force-yes valgrind valgrind-dev"
  108 + sudo apt-get install -y --force-yes valgrind valgrind-dev; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
  109 + echo "The valgrind is installed."
  110 + fi
104 111
105 if [ $SRS_NGINX = YES ]; then 112 if [ $SRS_NGINX = YES ]; then
106 if [[ ! -f /usr/include/pcre.h ]]; then 113 if [[ ! -f /usr/include/pcre.h ]]; then
@@ -194,6 +201,13 @@ function Centos_prepare() @@ -194,6 +201,13 @@ function Centos_prepare()
194 sudo yum install -y unzip; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi 201 sudo yum install -y unzip; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
195 echo "The unzip is installed." 202 echo "The unzip is installed."
196 fi 203 fi
  204 +
  205 + valgrind --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
  206 + echo "Installing valgrind."
  207 + require_sudoer "sudo yum install -y valgrind valgrind-devel"
  208 + sudo yum install -y valgrind valgrind-devel; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
  209 + echo "The valgrind is installed."
  210 + fi
197 211
198 if [ $SRS_NGINX = YES ]; then 212 if [ $SRS_NGINX = YES ]; then
199 if [[ ! -f /usr/include/pcre.h ]]; then 213 if [[ ! -f /usr/include/pcre.h ]]; then
@@ -313,6 +327,13 @@ function OSX_prepare() @@ -313,6 +327,13 @@ function OSX_prepare()
313 brew install unzip; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi 327 brew install unzip; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
314 echo "The unzip is installed." 328 echo "The unzip is installed."
315 fi 329 fi
  330 +
  331 + valgrind --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
  332 + echo "Installing valgrind."
  333 + echo "brew install valgrind"
  334 + brew install valgrind; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
  335 + echo "The valgrind is installed."
  336 + fi
316 337
317 if [ $SRS_NGINX = YES ]; then 338 if [ $SRS_NGINX = YES ]; then
318 if [[ ! -f /usr/local/include/pcre.h ]]; then 339 if [[ ! -f /usr/local/include/pcre.h ]]; then
@@ -397,57 +418,49 @@ if [[ $OS_IS_UBUNTU = NO && $OS_IS_CENTOS = NO && $OS_IS_OSX = NO && $SRS_EXPORT @@ -397,57 +418,49 @@ if [[ $OS_IS_UBUNTU = NO && $OS_IS_CENTOS = NO && $OS_IS_OSX = NO && $SRS_EXPORT
397 fi 418 fi
398 419
399 ##################################################################################### 420 #####################################################################################
400 -# st-1.9 421 +# state-threads
401 ##################################################################################### 422 #####################################################################################
402 if [ $SRS_EXPORT_LIBRTMP_PROJECT = NO ]; then 423 if [ $SRS_EXPORT_LIBRTMP_PROJECT = NO ]; then
403 # check the cross build flag file, if flag changed, need to rebuild the st. 424 # check the cross build flag file, if flag changed, need to rebuild the st.
404 - _ST_MAKE=linux-debug && _ST_EXTRA_CFLAGS="-DMD_HAVE_EPOLL" 425 + _ST_MAKE=linux-debug && _ST_EXTRA_CFLAGS="-DMD_HAVE_EPOLL -DMD_VALGRIND"
405 # for osx, use darwin for st, donot use epoll. 426 # for osx, use darwin for st, donot use epoll.
406 if [ $OS_IS_OSX = YES ]; then 427 if [ $OS_IS_OSX = YES ]; then
407 - _ST_MAKE=darwin-debug && _ST_EXTRA_CFLAGS="-DMD_HAVE_KQUEUE" 428 + _ST_MAKE=darwin-debug && _ST_EXTRA_CFLAGS="-DMD_HAVE_KQUEUE -DMD_VALGRIND -I/usr/local/include"
408 fi 429 fi
409 - # memory leak for linux-optimized  
410 - # @see: https://github.com/ossrs/srs/issues/197 430 + # Patched ST from https://github.com/ossrs/state-threads/tree/srs
411 if [ $SRS_CROSS_BUILD = YES ]; then 431 if [ $SRS_CROSS_BUILD = YES ]; then
412 # ok, arm specified, if the flag filed does not exists, need to rebuild. 432 # ok, arm specified, if the flag filed does not exists, need to rebuild.
413 if [[ -f ${SRS_OBJS}/_flag.st.cross.build.tmp && -f ${SRS_OBJS}/st/libst.a ]]; then 433 if [[ -f ${SRS_OBJS}/_flag.st.cross.build.tmp && -f ${SRS_OBJS}/st/libst.a ]]; then
414 - echo "The st-1.9t for arm is ok."; 434 + echo "The state-threads for arm is ok.";
415 else 435 else
416 - # TODO: FIXME: patch the bug.  
417 - # patch st for arm, @see: https://github.com/ossrs/srs/wiki/v1_CN_SrsLinuxArm#st-arm-bug-fix  
418 - echo "Building st-1.9t for arm."; 436 + echo "Building state-threads for arm.";
419 ( 437 (
420 - rm -rf ${SRS_OBJS}/st-1.9 && cd ${SRS_OBJS} &&  
421 - unzip -q ../3rdparty/st-1.9.zip && cd st-1.9 && chmod +w * &&  
422 - patch -p0 < ../../3rdparty/patches/1.st.arm.patch &&  
423 - patch -p0 < ../../3rdparty/patches/3.st.osx.kqueue.patch &&  
424 - patch -p0 < ../../3rdparty/patches/4.st.disable.examples.patch && 438 + rm -rf ${SRS_OBJS}/state-threads-1.9.1 && cd ${SRS_OBJS} &&
  439 + tar xf ../3rdparty/state-threads-1.9.1.tar.gz && cd state-threads-1.9.1 && chmod +w * &&
425 make ${_ST_MAKE} CC=${SrsArmCC} AR=${SrsArmAR} LD=${SrsArmLD} RANDLIB=${SrsArmRANDLIB} EXTRA_CFLAGS="${_ST_EXTRA_CFLAGS}" && 440 make ${_ST_MAKE} CC=${SrsArmCC} AR=${SrsArmAR} LD=${SrsArmLD} RANDLIB=${SrsArmRANDLIB} EXTRA_CFLAGS="${_ST_EXTRA_CFLAGS}" &&
426 - cd .. && rm -rf st && ln -sf st-1.9/obj st && 441 + cd .. && rm -f st && ln -sf state-threads-1.9.1/obj st &&
  442 + rm -f state-threads && ln -sf state-threads-1.9.1 state-threads &&
427 cd .. && touch ${SRS_OBJS}/_flag.st.cross.build.tmp 443 cd .. && touch ${SRS_OBJS}/_flag.st.cross.build.tmp
428 ) 444 )
429 fi 445 fi
430 else 446 else
431 if [[ ! -f ${SRS_OBJS}/_flag.st.cross.build.tmp && -f ${SRS_OBJS}/st/libst.a ]]; then 447 if [[ ! -f ${SRS_OBJS}/_flag.st.cross.build.tmp && -f ${SRS_OBJS}/st/libst.a ]]; then
432 - echo "The st-1.9t is ok."; 448 + echo "The state-threads is ok.";
433 else 449 else
434 - # patch st for arm, @see: https://github.com/ossrs/srs/wiki/v1_CN_SrsLinuxArm#st-arm-bug-fix  
435 - echo "Building st-1.9t."; 450 + echo "Building state-threads.";
436 ( 451 (
437 - rm -rf ${SRS_OBJS}/st-1.9 && cd ${SRS_OBJS} &&  
438 - unzip -q ../3rdparty/st-1.9.zip && cd st-1.9 && chmod +w * &&  
439 - patch -p0 < ../../3rdparty/patches/1.st.arm.patch &&  
440 - patch -p0 < ../../3rdparty/patches/3.st.osx.kqueue.patch &&  
441 - patch -p0 < ../../3rdparty/patches/4.st.disable.examples.patch && 452 + rm -rf ${SRS_OBJS}/state-threads-1.9.1 && cd ${SRS_OBJS} &&
  453 + tar xf ../3rdparty/state-threads-1.9.1.tar.gz && cd state-threads-1.9.1 && chmod +w * &&
442 make ${_ST_MAKE} EXTRA_CFLAGS="${_ST_EXTRA_CFLAGS}" && 454 make ${_ST_MAKE} EXTRA_CFLAGS="${_ST_EXTRA_CFLAGS}" &&
443 - cd .. && rm -rf st && ln -sf st-1.9/obj st && 455 + cd .. && rm -f st && ln -sf state-threads-1.9.1/obj st &&
  456 + rm -f state-threads && ln -sf state-threads-1.9.1 state-threads &&
444 cd .. && rm -f ${SRS_OBJS}/_flag.st.cross.build.tmp 457 cd .. && rm -f ${SRS_OBJS}/_flag.st.cross.build.tmp
445 ) 458 )
446 fi 459 fi
447 fi 460 fi
448 # check status 461 # check status
449 - ret=$?; if [[ $ret -ne 0 ]]; then echo "Build st-1.9 failed, ret=$ret"; exit $ret; fi  
450 - if [ ! -f ${SRS_OBJS}/st/libst.a ]; then echo "Build st-1.9 static lib failed."; exit -1; fi 462 + ret=$?; if [[ $ret -ne 0 ]]; then echo "Build state-threads failed, ret=$ret"; exit $ret; fi
  463 + if [ ! -f ${SRS_OBJS}/st/libst.a ]; then echo "Build state-threads static lib failed."; exit -1; fi
451 fi 464 fi
452 465
453 ##################################################################################### 466 #####################################################################################
@@ -104,6 +104,14 @@ @@ -104,6 +104,14 @@
104 3C689F9F1AB6AAC800C9CEEE /* sched.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C689F9B1AB6AAC800C9CEEE /* sched.c */; }; 104 3C689F9F1AB6AAC800C9CEEE /* sched.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C689F9B1AB6AAC800C9CEEE /* sched.c */; };
105 3C689FA01AB6AAC800C9CEEE /* stk.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C689F9C1AB6AAC800C9CEEE /* stk.c */; }; 105 3C689FA01AB6AAC800C9CEEE /* stk.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C689F9C1AB6AAC800C9CEEE /* stk.c */; };
106 3C689FA11AB6AAC800C9CEEE /* sync.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C689F9D1AB6AAC800C9CEEE /* sync.c */; }; 106 3C689FA11AB6AAC800C9CEEE /* sync.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C689F9D1AB6AAC800C9CEEE /* sync.c */; };
  107 + 3C7175B21E1DEA8000E8C49F /* event.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C7175A81E1DEA8000E8C49F /* event.c */; };
  108 + 3C7175B31E1DEA8000E8C49F /* io.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C7175A91E1DEA8000E8C49F /* io.c */; };
  109 + 3C7175B41E1DEA8000E8C49F /* key.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C7175AA1E1DEA8000E8C49F /* key.c */; };
  110 + 3C7175B51E1DEA8000E8C49F /* Makefile in Sources */ = {isa = PBXBuildFile; fileRef = 3C7175AB1E1DEA8000E8C49F /* Makefile */; };
  111 + 3C7175B61E1DEA8000E8C49F /* md.S in Sources */ = {isa = PBXBuildFile; fileRef = 3C7175AD1E1DEA8000E8C49F /* md.S */; };
  112 + 3C7175B71E1DEA8000E8C49F /* sched.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C7175AF1E1DEA8000E8C49F /* sched.c */; };
  113 + 3C7175B81E1DEA8000E8C49F /* stk.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C7175B01E1DEA8000E8C49F /* stk.c */; };
  114 + 3C7175B91E1DEA8000E8C49F /* sync.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C7175B11E1DEA8000E8C49F /* sync.c */; };
107 3C82802C1BAFF8CC004A1794 /* srs_kafka_stack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C82802A1BAFF8CC004A1794 /* srs_kafka_stack.cpp */; }; 115 3C82802C1BAFF8CC004A1794 /* srs_kafka_stack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C82802A1BAFF8CC004A1794 /* srs_kafka_stack.cpp */; };
108 3C8CE01E1C3F482100548CC6 /* srs_app_hourglass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C8CE01D1C3F482100548CC6 /* srs_app_hourglass.cpp */; }; 116 3C8CE01E1C3F482100548CC6 /* srs_app_hourglass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C8CE01D1C3F482100548CC6 /* srs_app_hourglass.cpp */; };
109 3CB25C2A1BB269FD00C97A63 /* jmp_sp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3CB25C291BB269FD00C97A63 /* jmp_sp.cpp */; }; 117 3CB25C2A1BB269FD00C97A63 /* jmp_sp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3CB25C291BB269FD00C97A63 /* jmp_sp.cpp */; };
@@ -372,6 +380,17 @@ @@ -372,6 +380,17 @@
372 3C689F9B1AB6AAC800C9CEEE /* sched.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sched.c; path = "../../objs/st-1.9/sched.c"; sourceTree = "<group>"; }; 380 3C689F9B1AB6AAC800C9CEEE /* sched.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sched.c; path = "../../objs/st-1.9/sched.c"; sourceTree = "<group>"; };
373 3C689F9C1AB6AAC800C9CEEE /* stk.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stk.c; path = "../../objs/st-1.9/stk.c"; sourceTree = "<group>"; }; 381 3C689F9C1AB6AAC800C9CEEE /* stk.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stk.c; path = "../../objs/st-1.9/stk.c"; sourceTree = "<group>"; };
374 3C689F9D1AB6AAC800C9CEEE /* sync.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sync.c; path = "../../objs/st-1.9/sync.c"; sourceTree = "<group>"; }; 382 3C689F9D1AB6AAC800C9CEEE /* sync.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sync.c; path = "../../objs/st-1.9/sync.c"; sourceTree = "<group>"; };
  383 + 3C7175A71E1DEA8000E8C49F /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = common.h; path = "../../../objs/state-threads-1.9.1/common.h"; sourceTree = "<group>"; };
  384 + 3C7175A81E1DEA8000E8C49F /* event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = event.c; path = "../../../objs/state-threads-1.9.1/event.c"; sourceTree = "<group>"; };
  385 + 3C7175A91E1DEA8000E8C49F /* io.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = io.c; path = "../../../objs/state-threads-1.9.1/io.c"; sourceTree = "<group>"; };
  386 + 3C7175AA1E1DEA8000E8C49F /* key.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = key.c; path = "../../../objs/state-threads-1.9.1/key.c"; sourceTree = "<group>"; };
  387 + 3C7175AB1E1DEA8000E8C49F /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; name = Makefile; path = "../../../objs/state-threads-1.9.1/Makefile"; sourceTree = "<group>"; };
  388 + 3C7175AC1E1DEA8000E8C49F /* md.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = md.h; path = "../../../objs/state-threads-1.9.1/md.h"; sourceTree = "<group>"; };
  389 + 3C7175AD1E1DEA8000E8C49F /* md.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = md.S; path = "../../../objs/state-threads-1.9.1/md.S"; sourceTree = "<group>"; };
  390 + 3C7175AE1E1DEA8000E8C49F /* public.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = public.h; path = "../../../objs/state-threads-1.9.1/public.h"; sourceTree = "<group>"; };
  391 + 3C7175AF1E1DEA8000E8C49F /* sched.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sched.c; path = "../../../objs/state-threads-1.9.1/sched.c"; sourceTree = "<group>"; };
  392 + 3C7175B01E1DEA8000E8C49F /* stk.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stk.c; path = "../../../objs/state-threads-1.9.1/stk.c"; sourceTree = "<group>"; };
  393 + 3C7175B11E1DEA8000E8C49F /* sync.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sync.c; path = "../../../objs/state-threads-1.9.1/sync.c"; sourceTree = "<group>"; };
375 3C8280241BAFF896004A1794 /* compatible.conf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = compatible.conf; path = ../../../conf/compatible.conf; sourceTree = "<group>"; }; 394 3C8280241BAFF896004A1794 /* compatible.conf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = compatible.conf; path = ../../../conf/compatible.conf; sourceTree = "<group>"; };
376 3C8280251BAFF896004A1794 /* full.one.vhost.conf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = full.one.vhost.conf; path = ../../../conf/full.one.vhost.conf; sourceTree = "<group>"; }; 395 3C8280251BAFF896004A1794 /* full.one.vhost.conf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = full.one.vhost.conf; path = ../../../conf/full.one.vhost.conf; sourceTree = "<group>"; };
377 3C8280261BAFF896004A1794 /* http.flv.live.edge1.conf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = http.flv.live.edge1.conf; path = ../../../conf/http.flv.live.edge1.conf; sourceTree = "<group>"; }; 396 3C8280261BAFF896004A1794 /* http.flv.live.edge1.conf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = http.flv.live.edge1.conf; path = ../../../conf/http.flv.live.edge1.conf; sourceTree = "<group>"; };
@@ -445,18 +464,19 @@ @@ -445,18 +464,19 @@
445 isa = PBXGroup; 464 isa = PBXGroup;
446 children = ( 465 children = (
447 3C1232B81AAE824500CE8F6C /* configure */, 466 3C1232B81AAE824500CE8F6C /* configure */,
  467 + 3C1232BA1AAE826F00CE8F6C /* auto */,
448 3C1231EF1AAE651100CE8F6C /* core */, 468 3C1231EF1AAE651100CE8F6C /* core */,
449 3C1232071AAE814200CE8F6C /* kernel */, 469 3C1232071AAE814200CE8F6C /* kernel */,
450 3C12322C1AAE819900CE8F6C /* protocol */, 470 3C12322C1AAE819900CE8F6C /* protocol */,
451 3C12324B1AAE81CE00CE8F6C /* app */, 471 3C12324B1AAE81CE00CE8F6C /* app */,
  472 + 3C96ADC41B00A71000885304 /* modules */,
452 3C1232041AAE80CB00CE8F6C /* main */, 473 3C1232041AAE80CB00CE8F6C /* main */,
  474 + 3C36DB541ABD1CA70066CCAF /* libs */,
453 3C1231F91AAE670E00CE8F6C /* objs */, 475 3C1231F91AAE670E00CE8F6C /* objs */,
454 - 3C1232BA1AAE826F00CE8F6C /* auto */,  
455 - 3C96ADC41B00A71000885304 /* modules */,  
456 - 3C1232B91AAE825100CE8F6C /* scripts */,  
457 3C1EE6AF1AB107EE00576EE9 /* conf */, 476 3C1EE6AF1AB107EE00576EE9 /* conf */,
458 - 3C36DB541ABD1CA70066CCAF /* libs */,  
459 3C1232EF1AAEAC5800CE8F6C /* etc */, 477 3C1232EF1AAEAC5800CE8F6C /* etc */,
  478 + 3C1232B91AAE825100CE8F6C /* scripts */,
  479 + 3C7175A61E1DEA0500E8C49F /* state-threads */,
460 ); 480 );
461 path = srs_xcode; 481 path = srs_xcode;
462 sourceTree = "<group>"; 482 sourceTree = "<group>";
@@ -836,6 +856,24 @@ @@ -836,6 +856,24 @@
836 name = "st-1.9"; 856 name = "st-1.9";
837 sourceTree = "<group>"; 857 sourceTree = "<group>";
838 }; 858 };
  859 + 3C7175A61E1DEA0500E8C49F /* state-threads */ = {
  860 + isa = PBXGroup;
  861 + children = (
  862 + 3C7175A71E1DEA8000E8C49F /* common.h */,
  863 + 3C7175A81E1DEA8000E8C49F /* event.c */,
  864 + 3C7175A91E1DEA8000E8C49F /* io.c */,
  865 + 3C7175AA1E1DEA8000E8C49F /* key.c */,
  866 + 3C7175AB1E1DEA8000E8C49F /* Makefile */,
  867 + 3C7175AC1E1DEA8000E8C49F /* md.h */,
  868 + 3C7175AD1E1DEA8000E8C49F /* md.S */,
  869 + 3C7175AE1E1DEA8000E8C49F /* public.h */,
  870 + 3C7175AF1E1DEA8000E8C49F /* sched.c */,
  871 + 3C7175B01E1DEA8000E8C49F /* stk.c */,
  872 + 3C7175B11E1DEA8000E8C49F /* sync.c */,
  873 + );
  874 + name = "state-threads";
  875 + sourceTree = "<group>";
  876 + };
839 3C96ADC41B00A71000885304 /* modules */ = { 877 3C96ADC41B00A71000885304 /* modules */ = {
840 isa = PBXGroup; 878 isa = PBXGroup;
841 children = ( 879 children = (
@@ -928,6 +966,9 @@ @@ -928,6 +966,9 @@
928 3CD88B3F1ACA9C58000359E0 /* srs_app_async_call.cpp in Sources */, 966 3CD88B3F1ACA9C58000359E0 /* srs_app_async_call.cpp in Sources */,
929 3C1232961AAE81D900CE8F6C /* srs_app_conn.cpp in Sources */, 967 3C1232961AAE81D900CE8F6C /* srs_app_conn.cpp in Sources */,
930 3C12322A1AAE814D00CE8F6C /* srs_kernel_ts.cpp in Sources */, 968 3C12322A1AAE814D00CE8F6C /* srs_kernel_ts.cpp in Sources */,
  969 + 3C7175B51E1DEA8000E8C49F /* Makefile in Sources */,
  970 + 3C7175B71E1DEA8000E8C49F /* sched.c in Sources */,
  971 + 3C7175B21E1DEA8000E8C49F /* event.c in Sources */,
931 3C12329E1AAE81D900CE8F6C /* srs_app_hls.cpp in Sources */, 972 3C12329E1AAE81D900CE8F6C /* srs_app_hls.cpp in Sources */,
932 3CC52DD91ACE4023006FEB01 /* srs_utest_config.cpp in Sources */, 973 3CC52DD91ACE4023006FEB01 /* srs_utest_config.cpp in Sources */,
933 3C663F171AB0155100286D8B /* srs_ingest_rtmp.c in Sources */, 974 3C663F171AB0155100286D8B /* srs_ingest_rtmp.c in Sources */,
@@ -936,6 +977,7 @@ @@ -936,6 +977,7 @@
936 3C24ECCD1C3B824800460622 /* memory.error.notcmalloc.cpp in Sources */, 977 3C24ECCD1C3B824800460622 /* memory.error.notcmalloc.cpp in Sources */,
937 3C1232971AAE81D900CE8F6C /* srs_app_dvr.cpp in Sources */, 978 3C1232971AAE81D900CE8F6C /* srs_app_dvr.cpp in Sources */,
938 3CD247C31BB3F14100DC1922 /* srs_kernel_balance.cpp in Sources */, 979 3CD247C31BB3F14100DC1922 /* srs_kernel_balance.cpp in Sources */,
  980 + 3C7175B31E1DEA8000E8C49F /* io.c in Sources */,
939 3C1232271AAE814D00CE8F6C /* srs_kernel_log.cpp in Sources */, 981 3C1232271AAE814D00CE8F6C /* srs_kernel_log.cpp in Sources */,
940 3C689F961AB6AAAC00C9CEEE /* event.c in Sources */, 982 3C689F961AB6AAAC00C9CEEE /* event.c in Sources */,
941 3C1232A81AAE81D900CE8F6C /* srs_app_log.cpp in Sources */, 983 3C1232A81AAE81D900CE8F6C /* srs_app_log.cpp in Sources */,
@@ -943,6 +985,7 @@ @@ -943,6 +985,7 @@
943 3C0D422E1B87165900C2508B /* srs_protocol_json.cpp in Sources */, 985 3C0D422E1B87165900C2508B /* srs_protocol_json.cpp in Sources */,
944 3C1232B41AAE81D900CE8F6C /* srs_app_st.cpp in Sources */, 986 3C1232B41AAE81D900CE8F6C /* srs_app_st.cpp in Sources */,
945 3C1232481AAE81A400CE8F6C /* srs_rtmp_stack.cpp in Sources */, 987 3C1232481AAE81A400CE8F6C /* srs_rtmp_stack.cpp in Sources */,
  988 + 3C7175B91E1DEA8000E8C49F /* sync.c in Sources */,
946 3C1232B01AAE81D900CE8F6C /* srs_app_security.cpp in Sources */, 989 3C1232B01AAE81D900CE8F6C /* srs_app_security.cpp in Sources */,
947 3C12322B1AAE814D00CE8F6C /* srs_kernel_utility.cpp in Sources */, 990 3C12322B1AAE814D00CE8F6C /* srs_kernel_utility.cpp in Sources */,
948 3C12324A1AAE81A400CE8F6C /* srs_rtsp_stack.cpp in Sources */, 991 3C12324A1AAE81A400CE8F6C /* srs_rtsp_stack.cpp in Sources */,
@@ -957,8 +1000,10 @@ @@ -957,8 +1000,10 @@
957 3C1232991AAE81D900CE8F6C /* srs_app_empty.cpp in Sources */, 1000 3C1232991AAE81D900CE8F6C /* srs_app_empty.cpp in Sources */,
958 3CC52DDA1ACE4023006FEB01 /* srs_utest_core.cpp in Sources */, 1001 3CC52DDA1ACE4023006FEB01 /* srs_utest_core.cpp in Sources */,
959 3C36DB5C1ABD1CB90066CCAF /* srs_lib_simple_socket.cpp in Sources */, 1002 3C36DB5C1ABD1CB90066CCAF /* srs_lib_simple_socket.cpp in Sources */,
  1003 + 3C7175B61E1DEA8000E8C49F /* md.S in Sources */,
960 3C1232201AAE814D00CE8F6C /* srs_kernel_aac.cpp in Sources */, 1004 3C1232201AAE814D00CE8F6C /* srs_kernel_aac.cpp in Sources */,
961 3C8CE01E1C3F482100548CC6 /* srs_app_hourglass.cpp in Sources */, 1005 3C8CE01E1C3F482100548CC6 /* srs_app_hourglass.cpp in Sources */,
  1006 + 3C7175B81E1DEA8000E8C49F /* stk.c in Sources */,
962 3C1232941AAE81D900CE8F6C /* srs_app_bandwidth.cpp in Sources */, 1007 3C1232941AAE81D900CE8F6C /* srs_app_bandwidth.cpp in Sources */,
963 3C1232221AAE814D00CE8F6C /* srs_kernel_codec.cpp in Sources */, 1008 3C1232221AAE814D00CE8F6C /* srs_kernel_codec.cpp in Sources */,
964 3C1232B71AAE81D900CE8F6C /* srs_app_utility.cpp in Sources */, 1009 3C1232B71AAE81D900CE8F6C /* srs_app_utility.cpp in Sources */,
@@ -975,6 +1020,7 @@ @@ -975,6 +1020,7 @@
975 3C0E1B8D1B0F5ADF003ADEF7 /* srs_http_stack.cpp in Sources */, 1020 3C0E1B8D1B0F5ADF003ADEF7 /* srs_http_stack.cpp in Sources */,
976 3C1232A01AAE81D900CE8F6C /* srs_app_http_client.cpp in Sources */, 1021 3C1232A01AAE81D900CE8F6C /* srs_app_http_client.cpp in Sources */,
977 3C689F981AB6AAAC00C9CEEE /* key.c in Sources */, 1022 3C689F981AB6AAAC00C9CEEE /* key.c in Sources */,
  1023 + 3C7175B41E1DEA8000E8C49F /* key.c in Sources */,
978 3C12329B1AAE81D900CE8F6C /* srs_app_ffmpeg.cpp in Sources */, 1024 3C12329B1AAE81D900CE8F6C /* srs_app_ffmpeg.cpp in Sources */,
979 3C1232421AAE81A400CE8F6C /* srs_protocol_amf0.cpp in Sources */, 1025 3C1232421AAE81A400CE8F6C /* srs_protocol_amf0.cpp in Sources */,
980 3C4AB9331B8C9148006627D3 /* srs_app_ng_exec.cpp in Sources */, 1026 3C4AB9331B8C9148006627D3 /* srs_app_ng_exec.cpp in Sources */,
@@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 // current release version 31 // current release version
32 #define VERSION_MAJOR 3 32 #define VERSION_MAJOR 3
33 #define VERSION_MINOR 0 33 #define VERSION_MINOR 0
34 -#define VERSION_REVISION 10 34 +#define VERSION_REVISION 11
35 35
36 // generated by configure, only macros. 36 // generated by configure, only macros.
37 #include <srs_auto_headers.hpp> 37 #include <srs_auto_headers.hpp>