1
I’m implementing the project ijkplayer(android mediaplayer) but I’m having a hard time adapting an automated librtmp compilation(rtmpdump).
I have the following example below, used to compile Openssl in ijkplayer:
ijkplayer/android/contrib/tools/do-Compile-openssl.sh
#! /usr/bin/env bash
#--------------------
set -e
if [ -z "$ANDROID_NDK" ]; then
echo "You must define ANDROID_NDK before starting."
echo "They must point to your NDK directories.\n"
exit 1
fi
#--------------------
# common defines
FF_ARCH=$1
if [ -z "$FF_ARCH" ]; then
echo "You must specific an architecture 'arm, armv7a, x86, ...'.\n"
exit 1
fi
FF_BUILD_ROOT=`pwd`
FF_ANDROID_PLATFORM=android-9
FF_BUILD_NAME=
FF_SOURCE=
FF_CROSS_PREFIX=
FF_CFG_FLAGS=
FF_PLATFORM_CFG_FLAGS=
FF_EXTRA_CFLAGS=
FF_EXTRA_LDFLAGS=
#--------------------
echo ""
echo "--------------------"
echo "[*] make NDK standalone toolchain"
echo "--------------------"
. ./tools/do-detect-env.sh
FF_MAKE_TOOLCHAIN_FLAGS=$IJK_MAKE_TOOLCHAIN_FLAGS
FF_MAKE_FLAGS=$IJK_MAKE_FLAG
FF_GCC_VER=$IJK_GCC_VER
FF_GCC_64_VER=$IJK_GCC_64_VER
#----- armv7a begin -----
if [ "$FF_ARCH" = "armv7a" ]; then
FF_BUILD_NAME=openssl-armv7a
FF_SOURCE=$FF_BUILD_ROOT/$FF_BUILD_NAME
FF_CROSS_PREFIX=arm-linux-androideabi
FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_VER}
FF_PLATFORM_CFG_FLAGS="android-armv7"
elif [ "$FF_ARCH" = "armv5" ]; then
FF_BUILD_NAME=openssl-armv5
FF_SOURCE=$FF_BUILD_ROOT/$FF_BUILD_NAME
FF_CROSS_PREFIX=arm-linux-androideabi
FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_VER}
FF_PLATFORM_CFG_FLAGS="android"
elif [ "$FF_ARCH" = "x86" ]; then
FF_BUILD_NAME=openssl-x86
FF_SOURCE=$FF_BUILD_ROOT/$FF_BUILD_NAME
FF_CROSS_PREFIX=i686-linux-android
FF_TOOLCHAIN_NAME=x86-${FF_GCC_VER}
FF_PLATFORM_CFG_FLAGS="android-x86"
elif [ "$FF_ARCH" = "x86_64" ]; then
FF_ANDROID_PLATFORM=android-21
FF_BUILD_NAME=openssl-x86_64
FF_SOURCE=$FF_BUILD_ROOT/$FF_BUILD_NAME
FF_CROSS_PREFIX=x86_64-linux-android
FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_64_VER}
FF_PLATFORM_CFG_FLAGS="linux-x86_64"
elif [ "$FF_ARCH" = "arm64" ]; then
FF_ANDROID_PLATFORM=android-21
FF_BUILD_NAME=openssl-arm64
FF_SOURCE=$FF_BUILD_ROOT/$FF_BUILD_NAME
FF_CROSS_PREFIX=aarch64-linux-android
FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_64_VER}
FF_PLATFORM_CFG_FLAGS="linux-aarch64"
else
echo "unknown architecture $FF_ARCH";
exit 1
fi
FF_TOOLCHAIN_PATH=$FF_BUILD_ROOT/build/$FF_BUILD_NAME/toolchain
FF_SYSROOT=$FF_TOOLCHAIN_PATH/sysroot
FF_PREFIX=$FF_BUILD_ROOT/build/$FF_BUILD_NAME/output
mkdir -p $FF_PREFIX
mkdir -p $FF_SYSROOT
#--------------------
echo ""
echo "--------------------"
echo "[*] make NDK standalone toolchain"
echo "--------------------"
. ./tools/do-detect-env.sh
FF_MAKE_TOOLCHAIN_FLAGS=$IJK_MAKE_TOOLCHAIN_FLAGS
FF_MAKE_FLAGS=$IJK_MAKE_FLAG
FF_MAKE_TOOLCHAIN_FLAGS="$FF_MAKE_TOOLCHAIN_FLAGS --install-dir=$FF_TOOLCHAIN_PATH"
FF_TOOLCHAIN_TOUCH="$FF_TOOLCHAIN_PATH/touch"
if [ ! -f "$FF_TOOLCHAIN_TOUCH" ]; then
$ANDROID_NDK/build/tools/make-standalone-toolchain.sh \
$FF_MAKE_TOOLCHAIN_FLAGS \
--platform=$FF_ANDROID_PLATFORM \
--toolchain=$FF_TOOLCHAIN_NAME
touch $FF_TOOLCHAIN_TOUCH;
fi
#--------------------
echo ""
echo "--------------------"
echo "[*] check openssl env"
echo "--------------------"
export PATH=$FF_TOOLCHAIN_PATH/bin:$PATH
export COMMON_FF_CFG_FLAGS=
FF_CFG_FLAGS="$FF_CFG_FLAGS $COMMON_FF_CFG_FLAGS"
#--------------------
# Standard options:
FF_CFG_FLAGS="$FF_CFG_FLAGS zlib-dynamic"
FF_CFG_FLAGS="$FF_CFG_FLAGS no-shared"
FF_CFG_FLAGS="$FF_CFG_FLAGS --openssldir=$FF_PREFIX"
FF_CFG_FLAGS="$FF_CFG_FLAGS --cross-compile-prefix=${FF_CROSS_PREFIX}-"
FF_CFG_FLAGS="$FF_CFG_FLAGS $FF_PLATFORM_CFG_FLAGS"
#--------------------
echo ""
echo "--------------------"
echo "[*] configurate openssl"
echo "--------------------"
cd $FF_SOURCE
#if [ -f "./Makefile" ]; then
# echo 'reuse configure'
#else
echo "./Configure $FF_CFG_FLAGS"
./Configure $FF_CFG_FLAGS
# --extra-cflags="$FF_CFLAGS $FF_EXTRA_CFLAGS" \
# --extra-ldflags="$FF_EXTRA_LDFLAGS"
#fi
#--------------------
echo ""
echo "--------------------"
echo "[*] compile openssl"
echo "--------------------"
make depend
make $FF_MAKE_FLAGS
make install_sw
#--------------------
echo ""
echo "--------------------"
echo "[*] link openssl"
echo "--------------------"
Here the file compile-openssl.sh
which is used to call the archive responsible for the compilation, do-compile-openssl.sh
ijkplayer/android/contrib/Compile-openssl.sh
#! /usr/bin/env bash
#----------
export ANDROID_NDK="/run/media/root/linux/workspace/android-ndk-r11c"
UNI_BUILD_ROOT=`pwd`
FF_TARGET=$1
set -e
set +x
FF_ACT_ARCHS_32="armv5 armv7a x86"
FF_ACT_ARCHS_64="armv5 armv7a arm64 x86 x86_64"
FF_ACT_ARCHS_ALL=$FF_ACT_ARCHS_64
echo_archs() {
echo "===================="
echo "[*] check archs"
echo "===================="
echo "FF_ALL_ARCHS = $FF_ACT_ARCHS_ALL"
echo "FF_ACT_ARCHS = $*"
echo ""
}
echo_usage() {
echo "Usage:"
echo " compile-openssl.sh armv5|armv7a|arm64|x86|x86_64"
echo " compile-openssl.sh all|all32"
echo " compile-openssl.sh all64"
echo " compile-openssl.sh clean"
echo " compile-openssl.sh check"
exit 1
}
echo_nextstep_help() {
#----------
echo ""
echo "--------------------"
echo "[*] Finished"
echo "--------------------"
echo "# to continue to build ffmpeg, run script below,"
echo "sh compile-ffmpeg.sh "
echo "# to continue to build ijkplayer, run script below,"
echo "sh compile-ijk.sh "
}
#----------
case "$FF_TARGET" in
"")
echo_archs armv7a
sh tools/do-compile-openssl.sh armv7a
;;
armv5|armv7a|arm64|x86|x86_64)
echo_archs $FF_TARGET
sh tools/do-compile-openssl.sh $FF_TARGET
echo_nextstep_help
;;
all32)
echo_archs $FF_ACT_ARCHS_32
for ARCH in $FF_ACT_ARCHS_32
do
sh tools/do-compile-openssl.sh $ARCH
done
echo_nextstep_help
;;
all|all64)
echo_archs $FF_ACT_ARCHS_64
for ARCH in $FF_ACT_ARCHS_64
do
sh tools/do-compile-openssl.sh $ARCH
done
echo_nextstep_help
;;
clean)
echo_archs FF_ACT_ARCHS_64
for ARCH in $FF_ACT_ARCHS_ALL
do
if [ -d openssl-$ARCH ]; then
cd openssl-$ARCH && git clean -xdf && cd -
fi
done
rm -rf ./build/openssl-*
;;
check)
echo_archs FF_ACT_ARCHS_ALL
;;
*)
echo_usage
exit 1
;;
esac
So far I have made the following modifications for the adaptation of the librtmp compilation:
Filing cabinet do-compile-openssl.sh
modified to do-compile-librtmp.sh
#! /usr/bin/env bash
#--------------------
set -e
if [ -z "$ANDROID_NDK" ]; then
echo "You must define ANDROID_NDK before starting."
echo "They must point to your NDK directories.\n"
exit 1
fi
#--------------------
# common defines
FF_ARCH=$1
if [ -z "$FF_ARCH" ]; then
echo "You must specific an architecture 'arm, armv7a, x86, ...'.\n"
exit 1
fi
FF_BUILD_ROOT=`pwd`
FF_ANDROID_PLATFORM=android-9
FF_BUILD_NAME=
FF_SOURCE=
FF_CROSS_PREFIX=
FF_CFG_FLAGS=
FF_PLATFORM_CFG_FLAGS=
FF_EXTRA_CFLAGS=
FF_EXTRA_LDFLAGS=
#--------------------
echo ""
echo "--------------------"
echo "[*] make NDK standalone toolchain"
echo "--------------------"
. ./tools/do-detect-env.sh
FF_MAKE_TOOLCHAIN_FLAGS=$IJK_MAKE_TOOLCHAIN_FLAGS
FF_MAKE_FLAGS=$IJK_MAKE_FLAG
FF_GCC_VER=$IJK_GCC_VER
FF_GCC_64_VER=$IJK_GCC_64_VER
#----- armv7a begin -----
if [ "$FF_ARCH" = "armv7a" ]; then
FF_BUILD_NAME=librtmp-armv7a
FF_SOURCE=$FF_BUILD_ROOT/$FF_BUILD_NAME
FF_CROSS_PREFIX=arm-linux-androideabi
FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_VER}
FF_PLATFORM_CFG_FLAGS="android-armv7"
elif [ "$FF_ARCH" = "armv5" ]; then
FF_BUILD_NAME=librtmp-armv5
FF_SOURCE=$FF_BUILD_ROOT/$FF_BUILD_NAME
FF_CROSS_PREFIX=arm-linux-androideabi
FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_VER}
FF_PLATFORM_CFG_FLAGS="android"
elif [ "$FF_ARCH" = "x86" ]; then
FF_BUILD_NAME=librtmp-x86
FF_SOURCE=$FF_BUILD_ROOT/$FF_BUILD_NAME
FF_CROSS_PREFIX=i686-linux-android
FF_TOOLCHAIN_NAME=x86-${FF_GCC_VER}
FF_PLATFORM_CFG_FLAGS="android-x86"
elif [ "$FF_ARCH" = "x86_64" ]; then
FF_ANDROID_PLATFORM=android-21
FF_BUILD_NAME=librtmp-x86_64
FF_SOURCE=$FF_BUILD_ROOT/$FF_BUILD_NAME
FF_CROSS_PREFIX=x86_64-linux-android
FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_64_VER}
FF_PLATFORM_CFG_FLAGS="linux-x86_64"
elif [ "$FF_ARCH" = "arm64" ]; then
FF_ANDROID_PLATFORM=android-21
FF_BUILD_NAME=librtmp-arm64
FF_SOURCE=$FF_BUILD_ROOT/$FF_BUILD_NAME
FF_CROSS_PREFIX=aarch64-linux-android
FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_64_VER}
FF_PLATFORM_CFG_FLAGS="linux-aarch64"
else
echo "unknown architecture $FF_ARCH";
exit 1
fi
FF_TOOLCHAIN_PATH=$FF_BUILD_ROOT/build/$FF_BUILD_NAME/toolchain
FF_SYSROOT=$FF_TOOLCHAIN_PATH/sysroot
FF_PREFIX=$FF_BUILD_ROOT/build/$FF_BUILD_NAME/output
mkdir -p $FF_PREFIX
mkdir -p $FF_SYSROOT
#--------------------
echo ""
echo "--------------------"
echo "[*] make NDK standalone toolchain"
echo "--------------------"
. ./tools/do-detect-env.sh
FF_MAKE_TOOLCHAIN_FLAGS=$IJK_MAKE_TOOLCHAIN_FLAGS
FF_MAKE_FLAGS=$IJK_MAKE_FLAG
FF_MAKE_TOOLCHAIN_FLAGS="$FF_MAKE_TOOLCHAIN_FLAGS --install-dir=$FF_TOOLCHAIN_PATH"
FF_TOOLCHAIN_TOUCH="$FF_TOOLCHAIN_PATH/touch"
if [ ! -f "$FF_TOOLCHAIN_TOUCH" ]; then
$ANDROID_NDK/build/tools/make-standalone-toolchain.sh \
$FF_MAKE_TOOLCHAIN_FLAGS \
--platform=$FF_ANDROID_PLATFORM \
--toolchain=$FF_TOOLCHAIN_NAME
touch $FF_TOOLCHAIN_TOUCH;
fi
#--------------------
echo ""
echo "--------------------"
echo "[*] check librtmp env"
echo "--------------------"
export PATH=$FF_TOOLCHAIN_PATH/bin:$PATH
export COMMON_FF_CFG_FLAGS=
FF_CFG_FLAGS="$FF_CFG_FLAGS $COMMON_FF_CFG_FLAGS"
#--------------------
# Standard options:
FF_CFG_FLAGS="$FF_CFG_FLAGS zlib-dynamic"
FF_CFG_FLAGS="$FF_CFG_FLAGS no-shared"
FF_CFG_FLAGS="$FF_CFG_FLAGS --openssldir=$FF_PREFIX"
FF_CFG_FLAGS="$FF_CFG_FLAGS --cross-compile-prefix=${FF_CROSS_PREFIX}-"
FF_CFG_FLAGS="$FF_CFG_FLAGS $FF_PLATFORM_CFG_FLAGS"
#--------------------
echo ""
echo "--------------------"
echo "[*] configurate librtmp"
echo "--------------------"
cd $FF_SOURCE
#if [ -f "./Makefile" ]; then
# echo 'reuse configure'
#else
echo "./Configure $FF_CFG_FLAGS"
./Configure $FF_CFG_FLAGS
# --extra-cflags="$FF_CFLAGS $FF_EXTRA_CFLAGS" \
# --extra-ldflags="$FF_EXTRA_LDFLAGS"
#fi
#--------------------
echo ""
echo "--------------------"
echo "[*] compile librtmp"
echo "--------------------"
make depend
make $FF_MAKE_FLAGS
make install_sw
#--------------------
echo ""
echo "--------------------"
echo "[*] link librtmp"
echo "--------------------"
Manually I can run the build on standalone of librtmp with the Openssl with the following command /run/media/root/linux/workspace/android-ndk-r11c/ndk-build TARGET_PLATFORM=android-14 TARGET_ARCH_ABI=armeabi-v7a NDK_PROJECT_PATH=.
using the rtmpdump files down below.
rtmpdump/Android.Mk
LOCAL_PATH := $(call my-dir)
subdirs := $(addprefix $(LOCAL_PATH)/,$(addsuffix /Android.mk, \
librtmp \
))
ifeq($(TARGET_ARCH_ABI), armeabi)
SSL := ../../v_openssl/OpenSSL-1.0.2g_armeabi
endif
ifeq($(TARGET_ARCH_ABI), armeabi-v7a)
SSL := ../../v_openssl/OpenSSL-1.0.2g_armeabi-v7a
endif
ifeq($(TARGET_ARCH_ABI), x86)
SSL := ../../v_openssl/OpenSSL-1.0.2g_x86
endif
#SSL := ~/SSL
ifndef SSL
$(error "You must define SSL before starting")
endif
include $(subdirs)
rtmpdump/Makefile
VERSION=v2.4
prefix=/usr/local
CC=$(CROSS_COMPILE)gcc
LD=$(CROSS_COMPILE)ld
SYS=posix
#SYS=mingw
CRYPTO=OPENSSL
#CRYPTO=POLARSSL
#CRYPTO=GNUTLS
LIBZ=-lz
LIB_GNUTLS=-lgnutls -lhogweed -lnettle -lgmp $(LIBZ)
LIB_OPENSSL=-lssl -lcrypto $(LIBZ)
LIB_POLARSSL=-lpolarssl $(LIBZ)
CRYPTO_LIB=$(LIB_$(CRYPTO))
DEF_=-DNO_CRYPTO
CRYPTO_DEF=$(DEF_$(CRYPTO))
DEF=-DRTMPDUMP_VERSION=\"$(VERSION)\" $(CRYPTO_DEF) $(XDEF)
OPT=-O2
CFLAGS=-Wall $(XCFLAGS) $(INC) $(DEF) $(OPT)
LDFLAGS=-Wall $(XLDFLAGS)
bindir=$(prefix)/bin
sbindir=$(prefix)/sbin
mandir=$(prefix)/man
BINDIR=$(DESTDIR)$(bindir)
SBINDIR=$(DESTDIR)$(sbindir)
MANDIR=$(DESTDIR)$(mandir)
LIBS_posix=
LIBS_darwin=
LIBS_mingw=-lws2_32 -lwinmm -lgdi32
LIB_RTMP=-Llibrtmp -lrtmp
LIBS=$(LIB_RTMP) $(CRYPTO_LIB) $(LIBS_$(SYS)) $(XLIBS)
THREADLIB_posix=-lpthread
THREADLIB_darwin=-lpthread
THREADLIB_mingw=
THREADLIB=$(THREADLIB_$(SYS))
SLIBS=$(THREADLIB) $(LIBS)
LIBRTMP=librtmp/librtmp.a
INCRTMP=librtmp/rtmp_sys.h librtmp/rtmp.h librtmp/log.h librtmp/amf.h
EXT_posix=
EXT_darwin=
EXT_mingw=.exe
EXT=$(EXT_$(SYS))
PROGS=rtmpdump rtmpgw rtmpsrv rtmpsuck
all: $(LIBRTMP) $(PROGS)
$(PROGS): $(LIBRTMP)
install: $(PROGS)
-mkdir -p $(BINDIR) $(SBINDIR) $(MANDIR)/man1 $(MANDIR)/man8
cp rtmpdump$(EXT) $(BINDIR)
cp rtmpgw$(EXT) rtmpsrv$(EXT) rtmpsuck$(EXT) $(SBINDIR)
cp rtmpdump.1 $(MANDIR)/man1
cp rtmpgw.8 $(MANDIR)/man8
@cd librtmp; $(MAKE) install
clean:
rm -f *.o rtmpdump$(EXT) rtmpgw$(EXT) rtmpsrv$(EXT) rtmpsuck$(EXT)
@cd librtmp; $(MAKE) clean
FORCE:
$(LIBRTMP): FORCE
@cd librtmp; $(MAKE) all
rtmpdump: rtmpdump.o
$(CC) $(LDFLAGS) -o $@$(EXT) [email protected] $(LIBS)
rtmpsrv: rtmpsrv.o thread.o
$(CC) $(LDFLAGS) -o $@$(EXT) [email protected] thread.o $(SLIBS)
rtmpsuck: rtmpsuck.o thread.o
$(CC) $(LDFLAGS) -o $@$(EXT) [email protected] thread.o $(SLIBS)
rtmpgw: rtmpgw.o thread.o
$(CC) $(LDFLAGS) -o $@$(EXT) [email protected] thread.o $(SLIBS)
rtmpgw.o: rtmpgw.c $(INCRTMP) Makefile
rtmpdump.o: rtmpdump.c $(INCRTMP) Makefile
rtmpsrv.o: rtmpsrv.c $(INCRTMP) Makefile
rtmpsuck.o: rtmpsuck.c $(INCRTMP) Makefile
thread.o: thread.c thread.h
rtmpdump/jni/Application.Mk
NDK_TOOLCHAIN_VERSION := 4.9
APP_ABI := all
APP_PROJECT_PATH := $(shell pwd)
APP_BUILD_SCRIPT := $(APP_PROJECT_PATH)/Android.mk
rtmpdump/librtmp/Android.Mk
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES += $(NDK_PROJECT_PATH)/librtmp \
$(SSL)/include
LOCAL_SRC_FILES:= \
amf.c \
hashswf.c \
log.c \
parseurl.c \
rtmp.c
LOCAL_CFLAGS += -I$(SSL)/include -DUSE_OPENSSL
#LOCAL_LDLIBS += -L$(SSL)/libs/$(TARGET_ARCH_ABI)
#Modificado para OpenSSL 1.0.2g stand alone build
LOCAL_LDLIBS += -L$(SSL)
LOCAL_LDLIBS += -lssl -lcrypto -lz
LOCAL_MODULE := librtmp
include $(BUILD_SHARED_LIBRARY)
rtmpdump/librtmp/Makefile
VERSION=v2.4
prefix=/usr/local
incdir=$(prefix)/include/librtmp
bindir=$(prefix)/bin
libdir=$(prefix)/lib
mandir=$(prefix)/man
BINDIR=$(DESTDIR)$(bindir)
INCDIR=$(DESTDIR)$(incdir)
LIBDIR=$(DESTDIR)$(libdir)
MANDIR=$(DESTDIR)$(mandir)
CC=$(CROSS_COMPILE)gcc
LD=$(CROSS_COMPILE)ld
AR=$(CROSS_COMPILE)ar
SYS=posix
CRYPTO=OPENSSL
#CRYPTO=GNUTLS
DEF_POLARSSL=-DUSE_POLARSSL
DEF_OPENSSL=-DUSE_OPENSSL
DEF_GNUTLS=-DUSE_GNUTLS
DEF_=-DNO_CRYPTO
REQ_GNUTLS=gnutls
REQ_OPENSSL=libssl,libcrypto
LIBZ=-lz
LIBS_posix=
LIBS_darwin=
LIBS_mingw=-lws2_32 -lwinmm -lgdi32
LIB_GNUTLS=-lgnutls -lhogweed -lnettle -lgmp $(LIBZ)
LIB_OPENSSL=-lssl -lcrypto $(LIBZ)
LIB_POLARSSL=-lpolarssl $(LIBZ)
PRIVATE_LIBS=$(LIBS_$(SYS))
CRYPTO_LIB=$(LIB_$(CRYPTO)) $(PRIVATE_LIBS)
CRYPTO_REQ=$(REQ_$(CRYPTO))
CRYPTO_DEF=$(DEF_$(CRYPTO))
SO_VERSION=0
SOX_posix=so
SOX_darwin=dylib
SOX_mingw=dll
SOX=$(SOX_$(SYS))
SO_posix=.$(SOX).$(SO_VERSION)
SO_darwin=.$(SO_VERSION).$(SOX)
SO_mingw=-$(SO_VERSION).$(SOX)
SO_EXT=$(SO_$(SYS))
SODIR_posix=$(LIBDIR)
SODIR_darwin=$(LIBDIR)
SODIR_mingw=$(BINDIR)
SODIR=$(SODIR_$(SYS))
SO_LDFLAGS_posix=-shared -Wl,-soname,$@
SO_LDFLAGS_darwin=-dynamiclib -twolevel_namespace -undefined dynamic_lookup \
-fno-common -headerpad_max_install_names -install_name $(libdir)/$@
SO_LDFLAGS_mingw=-shared -Wl,--out-implib,librtmp.dll.a
SO_LDFLAGS=$(SO_LDFLAGS_$(SYS))
INSTALL_IMPLIB_posix=
INSTALL_IMPLIB_darwin=
INSTALL_IMPLIB_mingw=cp librtmp.dll.a $(LIBDIR)
INSTALL_IMPLIB=$(INSTALL_IMPLIB_$(SYS))
SHARED=yes
SODEF_yes=-fPIC
SOLIB_yes=librtmp$(SO_EXT)
SOINST_yes=install_so
SO_DEF=$(SODEF_$(SHARED))
SO_LIB=$(SOLIB_$(SHARED))
SO_INST=$(SOINST_$(SHARED))
DEF=-DRTMPDUMP_VERSION=\"$(VERSION)\" $(CRYPTO_DEF) $(XDEF)
OPT=-O2
CFLAGS=-Wall $(XCFLAGS) $(INC) $(DEF) $(OPT) $(SO_DEF)
LDFLAGS=$(XLDFLAGS)
OBJS=rtmp.o log.o amf.o hashswf.o parseurl.o
all: librtmp.a $(SO_LIB)
clean:
rm -f *.o *.a *.$(SOX) *$(SO_EXT) librtmp.pc
librtmp.a: $(OBJS)
$(AR) rs $@ $?
librtmp$(SO_EXT): $(OBJS)
$(CC) $(SO_LDFLAGS) $(LDFLAGS) -o $@ $^ $> $(CRYPTO_LIB)
ln -sf $@ librtmp.$(SOX)
log.o: log.c log.h Makefile
rtmp.o: rtmp.c rtmp.h rtmp_sys.h handshake.h dh.h log.h amf.h Makefile
amf.o: amf.c amf.h bytes.h log.h Makefile
hashswf.o: hashswf.c http.h rtmp.h rtmp_sys.h Makefile
parseurl.o: parseurl.c rtmp.h rtmp_sys.h log.h Makefile
librtmp.pc: librtmp.pc.in Makefile
sed -e "s;@prefix@;$(prefix);" -e "s;@libdir@;$(libdir);" \
-e "s;@VERSION@;$(VERSION);" \
-e "s;@CRYPTO_REQ@;$(CRYPTO_REQ);" \
-e "s;@PRIVATE_LIBS@;$(PRIVATE_LIBS);" librtmp.pc.in > $@
install: install_base $(SO_INST)
install_base: librtmp.a librtmp.pc
-mkdir -p $(INCDIR) $(LIBDIR)/pkgconfig $(MANDIR)/man3 $(SODIR)
cp amf.h http.h log.h rtmp.h $(INCDIR)
cp librtmp.a $(LIBDIR)
cp librtmp.pc $(LIBDIR)/pkgconfig
cp librtmp.3 $(MANDIR)/man3
install_so: librtmp$(SO_EXT)
cp librtmp$(SO_EXT) $(SODIR)
$(INSTALL_IMPLIB)
cd $(SODIR); ln -sf librtmp$(SO_EXT) librtmp.$(SOX)
The big question is: How will I modify these files(do-compile-librtmp.sh
) so that when executing the ./compile-librtmp.sh all
automatically compile the architectures defined on it along with the Openssl?.
I couldn’t compile using a build script, I opted for manual compilation, these scripts are good, but just for ijkplayer, using them in other projects is quite complicated. The way is to compile manually with build-ndk... because librtmp uses the Makefile files for configuration, and passing this to a build script is extremely complicated. I appreciate the help.
– Florida