################OPTION################### OUTPUT = libgb28181device.so NDK=/home/android-ndk-r22 API=22 PLATFORM=armv7a TOOLCHAIN=$(NDK)/toolchains/llvm/prebuilt/linux-x86_64/bin SYSROOT=$(NDK)/toolchains/llvm/prebuilt/linux-x86_64/sysroot ifneq ($(findstring armv7a, $(PLATFORM)),) TARGET=$(PLATFORM)-linux-androideabi RANLIB=$(TOOLCHAIN)/arm-linux-androideabi-ranlib LINK = $(TOOLCHAIN)/arm-linux-androideabi-ar endif ifneq ($(findstring aarch64, $(PLATFORM)),) TARGET=$(PLATFORM)-linux-android RANLIB=$(TOOLCHAIN)/$(TARGET)-ranlib LINK = $(TOOLCHAIN)/$(TARGET)-ar endif CCOMPILE = $(TOOLCHAIN)/$(TARGET)$(API)-clang CPPCOMPILE = $(TOOLCHAIN)/$(TARGET)$(API)-clang++ COMPILEOPTION += -fPIC -DANDROID --sysroot=$(SYSROOT) COMPILEOPTION += -c -O3 -Wall COMPILEOPTION += -DEPOLL COMPILEOPTION += -DMEDIA_LIVE LINKOPTION += cqs $(OUTPUT) INCLUDEDIR += -I./bm INCLUDEDIR += -I./http INCLUDEDIR += -I./librtmp INCLUDEDIR += -I./media INCLUDEDIR += -I./rtmp INCLUDEDIR += -I./rtp INCLUDEDIR += -I./rtsp INCLUDEDIR += -I./sip INCLUDEDIR += -I./srt INCLUDEDIR += -I./libsrt/include LIBDIRS += OBJS += bm/base64.o OBJS += bm/digcalc.o OBJS += bm/hqueue.o OBJS += bm/hxml.o OBJS += bm/ihash.o OBJS += bm/linked_list.o OBJS += bm/ppstack.o OBJS += bm/rfc_md5.o OBJS += bm/sys_buf.o OBJS += bm/sys_log.o OBJS += bm/sys_os.o OBJS += bm/util.o OBJS += bm/word_analyse.o OBJS += bm/xml_node.o OBJS += media/media_parse.o OBJS += media/media_util.o OBJS += rtp/aac_rtp_rx.o OBJS += rtp/h264_util.o OBJS += rtp/h265_util.o OBJS += rtp/pcm_rtp_rx.o OBJS += rtp/ps.o OBJS += rtp/rtp.o OBJS += rtp/rtp_rx.o OBJS += rtp/rtp_tx.o OBJS += rtsp/mansrtsp.o OBJS += rtsp/rtsp_parse.o OBJS += sip/gb28181.o OBJS += sip/gb28181_cfg.o OBJS += sip/gb28181_msg.o OBJS += sip/gb28181_subscribe.o OBJS += sip/hsip.o OBJS += sip/sip_cm.o OBJS += sip/sip_msg.o OBJS += sip/sip_parse.o OBJS += sip/sip_pstate.o OBJS += sip/sip_reg.o OBJS += sip/sip_rx.o OBJS += sip/sip_timer.o OBJS += sip/sip_trans.o OBJS += sip/sip_tx.o OBJS += sip/sip_util.o OBJS += sip/sua.o OBJS += sip/sua_sdp.o OBJS += sip/ua_media.o OBJS += getopt.o OBJS += main.o ffmpeg := 0 ifneq ($(findstring MEDIA_FILE, $(COMPILEOPTION)),) ffmpeg := 1 endif ifneq ($(findstring MEDIA_DEVICE, $(COMPILEOPTION)),) ffmpeg := 1 endif ifeq ($(ffmpeg), 1) OBJS += media/audio_decoder.o OBJS += media/audio_encoder.o OBJS += media/audio_play.o OBJS += media/avcodec_mutex.o OBJS += media/media_codec.o OBJS += media/video_decoder.o OBJS += media/video_encoder.o ifeq ($(findstring IOS, $(COMPILEOPTION)),) OBJS += media/alsa.o OBJS += media/audio_play_linux.o else OBJS += media/audio_play_avf.o OBJS += media/audio_play_mac.o endif endif ifneq ($(findstring MEDIA_FILE, $(COMPILEOPTION)),) OBJS += media/file_demux.o endif ifneq ($(findstring MEDIA_DEVICE, $(COMPILEOPTION)),) OBJS += media/audio_capture.o OBJS += media/screen_capture.o OBJS += media/video_capture.o OBJS += media/window_capture.o ifeq ($(findstring IOS, $(COMPILEOPTION)),) OBJS += media/v4l2.o OBJS += media/v4l2_comm.o OBJS += media/xcb_util.o OBJS += media/audio_capture_linux.o OBJS += media/screen_capture_linux.o OBJS += media/video_capture_linux.o OBJS += media/window_capture_linux.o else OBJS += media/audio_capture_avf.o OBJS += media/audio_capture_mac.o OBJS += media/screen_capture_avf.o OBJS += media/screen_capture_mac.o OBJS += media/video_capture_avf.o OBJS += media/video_capture_mac.o OBJS += media/window_capture_avf.o OBJS += media/window_capture_mac.o endif endif ifneq ($(findstring MEDIA_LIVE, $(COMPILEOPTION)),) OBJS += media/live_audio.o OBJS += media/live_video.o endif ifneq ($(findstring MEDIA_PROXY, $(COMPILEOPTION)),) OBJS += http/http_cln.o OBJS += http/http_mjpeg_cln.o OBJS += http/http_parse.o OBJS += http/http_test.o OBJS += media/media_proxy.o OBJS += rtp/h264_rtp_rx.o OBJS += rtp/h265_rtp_rx.o OBJS += rtp/mjpeg_rtp_rx.o OBJS += rtp/mjpeg_tables.o OBJS += rtp/mpeg4.o OBJS += rtp/mpeg4_rtp_rx.o OBJS += rtsp/rtsp_cln.o OBJS += rtsp/rtsp_rcua.o OBJS += rtsp/rtsp_util.o OBJS += rtsp/rtsp_ws.o endif ifneq ($(findstring RTMP_PROXY, $(COMPILEOPTION)),) OBJS += librtmp/amf.o OBJS += librtmp/hashswf.o OBJS += librtmp/log.o OBJS += librtmp/parseurl.o OBJS += librtmp/rtmp.o OBJS += rtmp/rtmp_cln.o endif ifneq ($(findstring SRT_PROXY, $(COMPILEOPTION)),) OBJS += rtp/ts_parser.o OBJS += srt/srt_cln.o endif ifeq ($(ffmpeg), 1) SHAREDLIB += -lavcodec SHAREDLIB += -lavformat SHAREDLIB += -lavutil SHAREDLIB += -lswresample SHAREDLIB += -lswscale SHAREDLIB += -lopus SHAREDLIB += -lx264 SHAREDLIB += -lx265 ifeq ($(findstring IOS, $(COMPILEOPTION)),) SHAREDLIB += -lasound else SHAREDLIB += -framework AudioToolbox SHAREDLIB += -framework AVFoundation SHAREDLIB += -framework CoreAudio SHAREDLIB += -framework CoreFoundation SHAREDLIB += -framework CoreGraphics SHAREDLIB += -framework CoreMedia SHAREDLIB += -framework CoreVideo SHAREDLIB += -framework Foundation endif endif ifneq ($(findstring MEDIA_DEVICE, $(COMPILEOPTION)),) SHAREDLIB += -lxcb endif ifneq ($(findstring SRT_PROXY, $(COMPILEOPTION)),) SHAREDLIB += -lsrt endif openssl := 0 ifneq ($(findstring HTTPS, $(COMPILEOPTION)),) openssl := 1 endif ifneq ($(findstring RTMP_PROXY, $(COMPILEOPTION)),) openssl := 1 endif ifneq ($(findstring SRT_PROXY, $(COMPILEOPTION)),) openssl := 1 endif ifeq ($(openssl), 1) SHAREDLIB += -lcrypto SHAREDLIB += -lssl SHAREDLIB += -lz endif SHAREDLIB += APPENDLIB = ################OPTION END################ $(OUTPUT):$(OBJS) $(APPENDLIB) $(LINK) $(LINKOPTION) $(LIBDIRS) $(OBJS) $(SHAREDLIB) $(APPENDLIB) clean: rm -f $(OBJS) rm -f $(OUTPUT) all: clean $(OUTPUT) .PRECIOUS:%.cpp %.cc %.cxx %.c %.m %.mm .SUFFIXES: .SUFFIXES: .cpp .cc .cxx .c .m .mm .o .cpp.o: $(CPPCOMPILE) -c -o $*.o $(COMPILEOPTION) $(INCLUDEDIR) $*.cpp .cc.o: $(CCOMPILE) -c -o $*.o $(COMPILEOPTION) $(INCLUDEDIR) $*.cc .cxx.o: $(CPPCOMPILE) -c -o $*.o $(COMPILEOPTION) $(INCLUDEDIR) $*.cxx .c.o: $(CCOMPILE) -c -o $*.o $(COMPILEOPTION) $(INCLUDEDIR) $*.c .m.o: $(CCOMPILE) -c -o $*.o $(COMPILEOPTION) $(INCLUDEDIR) $*.m .mm.o: $(CPPCOMPILE) -c -o $*.o $(COMPILEOPTION) $(INCLUDEDIR) $*.mm