Makefile 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. #一般情况无需修改该文件
  2. LOCAL_PATH=$(dir $(abspath $(lastword $(MAKEFILE_LIST))))
  3. ZKSW_PREBUILT_LIB_PATH := $(ZKSW_REAL_PREBUILT)/lib
  4. ZKSW_PREBUILT_INCLUDE_PATH := $(ZKSW_REAL_PREBUILT)/include
  5. EASYUI_COMMON_INCLUDE := $(LOCAL_PATH)/include
  6. #配置源文件目录
  7. PROJ_ROOT_PATH :=./
  8. #源文件后缀名
  9. PROJ_SRC_SUFFIX := %.cpp %.c
  10. PROJ_HEAD_SUFFIX := %.h
  11. # 递归遍历目录下的所有的文件
  12. rwildcard=$(wildcard $1$2) $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2))
  13. # 获取相应的源文件
  14. PROJ_ALL_FILES := $(foreach src_path,$(PROJ_ROOT_PATH), $(call rwildcard,$(src_path),*.*) )
  15. PROJ_SRC_FILES := $(filter $(PROJ_SRC_SUFFIX),$(PROJ_ALL_FILES))
  16. PROJ_HEAD_FILES := $(filter $(PROJ_HEAD_SUFFIX),$(PROJ_ALL_FILES))
  17. # 获取相应的源文件
  18. LOCAL_SRC_FILES := $(PROJ_SRC_FILES)
  19. LOCAL_HEAD_FILES := $(PROJ_HEAD_FILES)
  20. #源文件目录结构
  21. PROJ_DIR_TREE := $(dir $(foreach src_path, $(LOCAL_SRC_FILES), $(call rwildcard,$(src_path),*/) ) )
  22. PROJ_DIR_TREE := $(sort $(PROJ_DIR_TREE))
  23. OBJS_ROOT_DIR=../obj/
  24. OBJS_1 = $(patsubst %.cpp,%.o,$(LOCAL_SRC_FILES))
  25. OBJS_2 = $(patsubst %.c,%.o,$(OBJS_1))
  26. OBJS = $(addprefix $(OBJS_ROOT_DIR),$(OBJS_2))
  27. OBJS_DIR_TREE=$(addprefix $(OBJS_ROOT_DIR),$(PROJ_DIR_TREE))
  28. CFLAGS=-Os -pipe -fno-caller-saves -Wno-unused-result -mfloat-abi=hard -mfpu=vfp -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -Wl,--warn-common -Wl,--warn-once -Wl,-z,combreloc -Wl,-z,defs -DUSE_ANDROID_LOG
  29. CXXFLAGS=-Os -pipe -fno-caller-saves -Wno-unused-result -mfloat-abi=hard -mfpu=vfp -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -DUSE_ANDROID_LOG
  30. CXXFLAGS+= -fexceptions -Wall -lstdc++ -std=c++11 \
  31. -DPJ_IS_LITTLE_ENDIAN=1 -DPJ_IS_BIG_ENDIAN=0 \
  32. -D__PLAT_Z21__=1
  33. STATIC_LIB = curl/libcurl.a zlib/libz.a
  34. INCLUDE_DIR := -I$(EASYUI_COMMON_INCLUDE) \
  35. -I$(ZKSW_PREBUILT_INCLUDE_PATH) \
  36. -I. \
  37. -Idep/include
  38. LDFLAGS += -lcurl -lcares -lssl -lcrypto
  39. LDFLAGS += -lvoip \
  40. -lpjsua2-arm-unknown-linux-gnueabihf \
  41. -lstdc++ -lpjsua-arm-unknown-linux-gnueabihf \
  42. -lpjsip-ua-arm-unknown-linux-gnueabihf \
  43. -lpjsip-simple-arm-unknown-linux-gnueabihf \
  44. -lpjsip-arm-unknown-linux-gnueabihf \
  45. -lpjmedia-codec-arm-unknown-linux-gnueabihf \
  46. -lpjmedia-arm-unknown-linux-gnueabihf \
  47. -lpjmedia-videodev-arm-unknown-linux-gnueabihf \
  48. -lpjmedia-audiodev-arm-unknown-linux-gnueabihf \
  49. -lpjmedia-arm-unknown-linux-gnueabihf \
  50. -lpjnath-arm-unknown-linux-gnueabihf \
  51. -lpjlib-util-arm-unknown-linux-gnueabihf \
  52. -lsrtp-arm-unknown-linux-gnueabihf \
  53. -lresample-arm-unknown-linux-gnueabihf \
  54. -lg7221codec-arm-unknown-linux-gnueabihf \
  55. -lyuv-arm-unknown-linux-gnueabihf \
  56. -lpj-arm-unknown-linux-gnueabihf \
  57. -lopus \
  58. -lzkaudio \
  59. -lpaho-mqtt3c
  60. LDFLAGS += -lsqlite3
  61. LDFLAGS += -lswscale -lswresample -lavfilter -lavformat -lavcodec \
  62. -lavdevice -lavutil
  63. LDFLAGS += -lopenh264
  64. LDFLAGS += -lz
  65. LDFLAGS += -lmi_panel -lmi_disp -lmi_ai -lmi_ao -lmi_sys -lmi_common -lcam_os_wrapper
  66. LDFLAGS += -lzkhardware -lzknet -leasyui -llog -pthread -lm -ldl
  67. LDFLAGS += -L$(ZKSW_PREBUILT_LIB_PATH) -L. -Ldep/lib
  68. TARGET=../libs/armeabi/libzkgui.so
  69. ifeq ($(TARGET), $(wildcard $(TARGET)))
  70. DELETE_TARGET=$(TARGET)
  71. endif
  72. # alias commads if compile on windows
  73. RM =rm
  74. MKDIR=mkdir
  75. ECHO=echo
  76. ifeq ($(OS),Windows_NT)
  77. RM=win32-rm
  78. MKDIR=win32-mkdir
  79. ECHO=win32-echo
  80. else
  81. #keep default
  82. endif
  83. #alias end
  84. all: prepare $(TARGET)
  85. @$(ECHO)
  86. @$(ECHO) "[armeabi] Install : libzkgui.so => libs/armeabi/libzkgui.so"
  87. $(OBJS_ROOT_DIR)%.o: %.cpp $(LOCAL_HEAD_FILES)
  88. @$(ECHO) "[armeabi] Compile++ : "$<
  89. @$(CC) -c $< -o $@ $(CXXFLAGS) $(INCLUDE_DIR) $(LDFLAGS)
  90. $(OBJS_ROOT_DIR)%.o: %.c $(LOCAL_HEAD_FILES)
  91. @$(ECHO) "[armeabi] Compile++ : "$<
  92. @$(CC) -c $< -o $@ $(CFLAGS) $(INCLUDE_DIR) $(LDFLAGS)
  93. $(TARGET):$(OBJS)
  94. @$(ECHO) "[armeabi] SharedLibrary : "$@
  95. @$(CC) -fPIC -shared $^ -o $@ $(LDFLAGS) $(CXXFLAGS)
  96. @$(CROSS_COMPILE)strip $@
  97. prepare:
  98. @$(ECHO) "[armeabi] GCC : "$(CC)
  99. @-$(MKDIR) ../libs/armeabi -p
  100. @-$(MKDIR) $(OBJS_DIR_TREE) -p
  101. @-$(RM) $(TARGET) -rf
  102. clean:
  103. @$(ECHO) "[armeabi] Clean : "$(OBJS_ROOT_DIR)
  104. @-$(RM) $(OBJS_ROOT_DIR) -rf
  105. @$(ECHO) "[armeabi] Clean : "$(TARGET)
  106. @-$(RM) $(TARGET) -rf
  107. .PHONY:all clean prepare $(TARGET)