Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
胡斌
/
srs
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
winlin
2015-09-23 15:11:33 +0800
Browse Files
Options
Browse Files
Download
Plain Diff
Commit
4e88262512ffdeb56c8714d18ed784acb7987f46
4e882625
2 parents
d94a88a7
cfe20823
merge from srs2 to check cpus.
显示空白字符变更
内嵌
并排对比
正在显示
7 个修改的文件
包含
62 行增加
和
47 行删除
trunk/auto/auto_headers.sh
trunk/auto/depends.sh
trunk/auto/setup_variables.sh
trunk/configure
trunk/ide/srs_xcode/srs_xcode.xcodeproj/project.pbxproj
trunk/research/arm/jmp_sp.cpp
trunk/src/core/srs_core.hpp
trunk/auto/auto_headers.sh
查看文件 @
4e88262
...
...
@@ -43,29 +43,6 @@ echo "" >> $SRS_AUTO_HEADERS_H
#####################################################################################
# generate auto headers file, depends on the finished of options.sh
#####################################################################################
if
[
$SRS_ARM_UBUNTU12
=
YES
]
;
then
__SrsArmCC
=
"arm-linux-gnueabi-gcc"
;
__SrsArmGCC
=
"arm-linux-gnueabi-gcc"
;
__SrsArmCXX
=
"arm-linux-gnueabi-g++"
;
__SrsArmAR
=
"arm-linux-gnueabi-ar"
;
__SrsArmLD
=
"arm-linux-gnueabi-ld"
;
__SrsArmRANDLIB
=
"arm-linux-gnueabi-ranlib"
;
fi
if
[
$SRS_MIPS_UBUNTU12
=
YES
]
;
then
__SrsArmCC
=
"mipsel-openwrt-linux-gcc"
;
__SrsArmGCC
=
"mipsel-openwrt-linux-gcc"
;
__SrsArmCXX
=
"mipsel-openwrt-linux-g++"
;
__SrsArmAR
=
"mipsel-openwrt-linux-ar"
;
__SrsArmLD
=
"mipsel-openwrt-linux-ld"
;
__SrsArmRANDLIB
=
"mipsel-openwrt-linux-ranlib"
;
fi
# the arm-ubuntu12 options for make for depends
if
[[
-z
$SrsArmCC
]]
;
then
SrsArmCC
=
$__SrsArmCC
;
fi
if
[[
-z
$SrsArmGCC
]]
;
then
SrsArmGCC
=
$__SrsArmGCC
;
fi
if
[[
-z
$SrsArmCXX
]]
;
then
SrsArmCXX
=
$__SrsArmCXX
;
fi
if
[[
-z
$SrsArmAR
]]
;
then
SrsArmAR
=
$__SrsArmAR
;
fi
if
[[
-z
$SrsArmLD
]]
;
then
SrsArmLD
=
$__SrsArmLD
;
fi
if
[[
-z
$SrsArmRANDLIB
]]
;
then
SrsArmRANDLIB
=
$__SrsArmRANDLIB
;
fi
# write to source file
if
[
$SRS_CROSS_BUILD
=
YES
]
;
then
echo
"cc=
$SrsArmCC
gcc=
$SrsArmGCC
g++=
$SrsArmCXX
ar=
$SrsArmAR
ld=
$SrsArmLD
randlib=
$SrsArmRANDLIB
"
...
...
trunk/auto/depends.sh
查看文件 @
4e88262
...
...
@@ -38,9 +38,13 @@ function Ubuntu_prepare()
else
uname -v|grep Ubuntu >/dev/null 2>&1
ret
=
$?
;
if
[[
0 -ne
$ret
]]
;
then
# for debian, we think it's ubuntu also.
# for example, the wheezy/sid which is debian armv7 linux, can not identified by uname -v.
if
[[
! -f /etc/debian_version
]]
;
then
return
0;
fi
fi
fi
# cross build for arm, install the cross build tool chain.
if
[
$SRS_ARM_UBUNTU12
=
YES
]
;
then
...
...
@@ -378,7 +382,7 @@ fi
#####################################################################################
if
[
$SRS_EXPORT_LIBRTMP_PROJECT
=
NO
]
;
then
# check the cross build flag file, if flag changed, need to rebuild the st.
_ST_MAKE
=
linux-debug
&&
_ST_EXTRA_CFLAGS
=
"
EXTRA_CFLAGS=
-DMD_HAVE_EPOLL"
_ST_MAKE
=
linux-debug
&&
_ST_EXTRA_CFLAGS
=
"-DMD_HAVE_EPOLL"
# for osx, use darwin for st, donot use epoll.
if
[
$OS_IS_OSX
=
YES
]
;
then
_ST_MAKE
=
darwin-debug
&&
_ST_EXTRA_CFLAGS
=
"EXTRA_CFLAGS=-DMD_HAVE_KQUEUE"
...
...
@@ -399,7 +403,7 @@ if [ $SRS_EXPORT_LIBRTMP_PROJECT = NO ]; then
patch -p0 < ../../3rdparty/patches/1.st.arm.patch
&&
patch -p0 < ../../3rdparty/patches/3.st.osx.kqueue.patch
&&
patch -p0 < ../../3rdparty/patches/4.st.disable.examples.patch
&&
make
${
_ST_MAKE
}
CC
=
${
SrsArmCC
}
AR
=
${
SrsArmAR
}
LD
=
${
SrsArmLD
}
RANDLIB
=
${
SrsArmRANDLIB
}
${
_ST_EXTRA_CFLAGS
}
&&
make
${
_ST_MAKE
}
CC
=
${
SrsArmCC
}
AR
=
${
SrsArmAR
}
LD
=
${
SrsArmLD
}
RANDLIB
=
${
SrsArmRANDLIB
}
EXTRA_CFLAGS
=
"
${
_ST_EXTRA_CFLAGS
}
"
&&
cd
..
&&
rm -rf st
&&
ln -sf st-1.9/obj st
&&
cd
..
&&
touch
${
SRS_OBJS
}
/_flag.st.cross.build.tmp
)
...
...
@@ -416,7 +420,7 @@ if [ $SRS_EXPORT_LIBRTMP_PROJECT = NO ]; then
patch -p0 < ../../3rdparty/patches/1.st.arm.patch
&&
patch -p0 < ../../3rdparty/patches/3.st.osx.kqueue.patch
&&
patch -p0 < ../../3rdparty/patches/4.st.disable.examples.patch
&&
make
${
_ST_MAKE
}
${
_ST_EXTRA_CFLAGS
}
&&
make
${
_ST_MAKE
}
EXTRA_CFLAGS
=
"
${
_ST_EXTRA_CFLAGS
}
"
&&
cd
..
&&
rm -rf st
&&
ln -sf st-1.9/obj st
&&
cd
..
&&
rm -f
${
SRS_OBJS
}
/_flag.st.cross.build.tmp
)
...
...
trunk/auto/setup_variables.sh
0 → 100644
查看文件 @
4e88262
#!/bin/bash
# when options parsed, setup some variables, then build the depends.
# when arm specified, setup the cross build variables.
if
[
$SRS_ARM_UBUNTU12
=
YES
]
;
then
__SrsArmCC
=
"arm-linux-gnueabi-gcc"
;
__SrsArmGCC
=
"arm-linux-gnueabi-gcc"
;
__SrsArmCXX
=
"arm-linux-gnueabi-g++"
;
__SrsArmAR
=
"arm-linux-gnueabi-ar"
;
__SrsArmLD
=
"arm-linux-gnueabi-ld"
;
__SrsArmRANDLIB
=
"arm-linux-gnueabi-ranlib"
;
fi
if
[
$SRS_MIPS_UBUNTU12
=
YES
]
;
then
__SrsArmCC
=
"mipsel-openwrt-linux-gcc"
;
__SrsArmGCC
=
"mipsel-openwrt-linux-gcc"
;
__SrsArmCXX
=
"mipsel-openwrt-linux-g++"
;
__SrsArmAR
=
"mipsel-openwrt-linux-ar"
;
__SrsArmLD
=
"mipsel-openwrt-linux-ld"
;
__SrsArmRANDLIB
=
"mipsel-openwrt-linux-ranlib"
;
fi
# the arm-ubuntu12 options for make for depends
if
[[
-z
$SrsArmCC
]]
;
then
SrsArmCC
=
$__SrsArmCC
;
fi
if
[[
-z
$SrsArmGCC
]]
;
then
SrsArmGCC
=
$__SrsArmGCC
;
fi
if
[[
-z
$SrsArmCXX
]]
;
then
SrsArmCXX
=
$__SrsArmCXX
;
fi
if
[[
-z
$SrsArmAR
]]
;
then
SrsArmAR
=
$__SrsArmAR
;
fi
if
[[
-z
$SrsArmLD
]]
;
then
SrsArmLD
=
$__SrsArmLD
;
fi
if
[[
-z
$SrsArmRANDLIB
]]
;
then
SrsArmRANDLIB
=
$__SrsArmRANDLIB
;
fi
...
...
trunk/configure
查看文件 @
4e88262
...
...
@@ -23,6 +23,9 @@ BLACK="\\033[0m"
# parse options, exit with error when parse options invalid.
. auto/options.sh
# setup variables when options parsed.
. auto/setup_variables.sh
# clean the exists, when not export srs-librtmp.
# do this only when the options is ok.
if
[[
-f Makefile
]]
;
then
...
...
trunk/ide/srs_xcode/srs_xcode.xcodeproj/project.pbxproj
查看文件 @
4e88262
...
...
@@ -103,6 +103,7 @@
3C689FA01AB6AAC800C9CEEE /* stk.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C689F9C1AB6AAC800C9CEEE /* stk.c */; };
3C689FA11AB6AAC800C9CEEE /* sync.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C689F9D1AB6AAC800C9CEEE /* sync.c */; };
3C82802C1BAFF8CC004A1794 /* srs_kafka_stack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C82802A1BAFF8CC004A1794 /* srs_kafka_stack.cpp */; };
3CB25C2A1BB269FD00C97A63 /* jmp_sp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3CB25C291BB269FD00C97A63 /* jmp_sp.cpp */; };
3CC52DD81ACE4023006FEB01 /* srs_utest_amf0.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3CC52DCA1ACE4023006FEB01 /* srs_utest_amf0.cpp */; };
3CC52DD91ACE4023006FEB01 /* srs_utest_config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3CC52DCC1ACE4023006FEB01 /* srs_utest_config.cpp */; };
3CC52DDA1ACE4023006FEB01 /* srs_utest_core.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3CC52DCE1ACE4023006FEB01 /* srs_utest_core.cpp */; };
...
...
@@ -372,6 +373,8 @@
3C8280291BAFF896004A1794 /* transform.edge.conf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = transform.edge.conf; path = ../../../conf/transform.edge.conf; sourceTree = "<group>"; };
3C82802A1BAFF8CC004A1794 /* srs_kafka_stack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_kafka_stack.cpp; path = ../../../src/protocol/srs_kafka_stack.cpp; sourceTree = "<group>"; };
3C82802B1BAFF8CC004A1794 /* srs_kafka_stack.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_kafka_stack.hpp; path = ../../../src/protocol/srs_kafka_stack.hpp; sourceTree = "<group>"; };
3CB25C281BB2596300C97A63 /* setup_variables.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = setup_variables.sh; path = ../../../auto/setup_variables.sh; sourceTree = "<group>"; };
3CB25C291BB269FD00C97A63 /* jmp_sp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = jmp_sp.cpp; path = ../../../research/arm/jmp_sp.cpp; sourceTree = "<group>"; };
3CC52DCA1ACE4023006FEB01 /* srs_utest_amf0.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_utest_amf0.cpp; path = ../../src/utest/srs_utest_amf0.cpp; sourceTree = "<group>"; };
3CC52DCB1ACE4023006FEB01 /* srs_utest_amf0.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_utest_amf0.hpp; path = ../../src/utest/srs_utest_amf0.hpp; sourceTree = "<group>"; };
3CC52DCC1ACE4023006FEB01 /* srs_utest_config.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_utest_config.cpp; path = ../../src/utest/srs_utest_config.cpp; sourceTree = "<group>"; };
...
...
@@ -661,6 +664,7 @@
3C1232C31AAE827E00CE8F6C /* local_ip.sh */,
3C1232C41AAE827E00CE8F6C /* modules.sh */,
3C1232C51AAE827E00CE8F6C /* options.sh */,
3CB25C281BB2596300C97A63 /* setup_variables.sh */,
3C1232C61AAE827E00CE8F6C /* summary.sh */,
3C1232C71AAE827E00CE8F6C /* utest.sh */,
);
...
...
@@ -772,6 +776,7 @@
3C663F001AB014B500286D8B /* research */ = {
isa = PBXGroup;
children = (
3CB25C291BB269FD00C97A63 /* jmp_sp.cpp */,
3C663F021AB0155100286D8B /* srs_aac_raw_publish.c */,
3C663F031AB0155100286D8B /* srs_audio_raw_publish.c */,
3C663F041AB0155100286D8B /* srs_bandwidth_check.c */,
...
...
@@ -964,6 +969,8 @@
3C1232241AAE814D00CE8F6C /* srs_kernel_error.cpp in Sources */,
3C036B561B2D0AC10078E2E0 /* srs_app_http_stream.cpp in Sources */,
3C068D6D1B10175500AA722C /* srs_protocol_stream.cpp in Sources */,
3CB25C2A1BB269FD00C97A63 /* jmp_sp.cpp in Sources */,
3C068D6D1B10175500AA722C /* srs_protocol_buffer.cpp in Sources */,
3C1232441AAE81A400CE8F6C /* srs_rtmp_handshake.cpp in Sources */,
3C1232291AAE814D00CE8F6C /* srs_kernel_buffer.cpp in Sources */,
3C663F181AB0155100286D8B /* srs_play.c in Sources */,
...
...
trunk/research/arm/jmp_sp.cpp
查看文件 @
4e88262
...
...
@@ -11,22 +11,7 @@
jmp_buf
context
;
void
func1
()
{
#if defined(__amd64__) || defined(__x86_64__)
register
long
int
rsp0
asm
(
"rsp"
);
int
ret
=
setjmp
(
context
);
printf
(
"setjmp func1 ret=%d, rsp=%#lx
\n
"
,
ret
,
rsp0
);
// enter by longjmp
if
(
ret
!=
0
)
{
printf
(
"call by longjmp.
\n
"
);
exit
(
0
);
}
#endif
}
void
func0
()
void
do_longjmp
()
{
/**
the definition of jmp_buf:
...
...
@@ -78,8 +63,6 @@ void func0()
printf
(
"env[%d]=%#x, "
,
i
,
(
int
)
context
[
0
].
__jmpbuf
[
i
]);
}
printf
(
"
\n
"
);
func1
();
#endif
#if defined(__arm__)
...
...
@@ -105,7 +88,7 @@ void func0()
*/
/**
For example, on raspberry-pi, armv6 cpu:
(gdb) x /64
context[0].__jmpbuf
(gdb) x /64
xb (char*)
context[0].__jmpbuf
v1, 0: 0x00 0x00 0x00 0x00
v2, 1: 0x00 0x00 0x00 0x00
v3, 2: 0x2c 0x84 0x00 0x00
...
...
@@ -147,8 +130,7 @@ int main(int argc, char** argv)
(
int
)
__GLIBC__
,
(
int
)
__GLIBC_MINOR__
);
#endif
func0
();
longjmp
(
context
,
1
);
do_longjmp
();
printf
(
"terminated
\n
"
);
...
...
trunk/src/core/srs_core.hpp
查看文件 @
4e88262
...
...
@@ -119,5 +119,17 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
className(const className&); \
className& operator= (const className&)
/**
* important check for st(state-threads),
* only support the following cpus:
* 1. i386/amd64/x86_64
* 2. arm, glibc <= 2.15
*/
#if !defined(__amd64__) && !defined(__x86_64__) && !defined(__i386__) && !defined(__arm__)
#error "only support i386/amd64/x86_64/arm cpu"
#endif
#if defined(__arm__) && __GLIBC__ != 2 || __GLIBC_MINOR__ > 15
#error "for arm, only support glibc <= 2.15"
#endif
#endif
...
...
请
注册
或
登录
后发表评论