Makefile 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  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. -lzkaudio \
  58. -lpaho-mqtt3c
  59. LDFLAGS += -lsqlite3
  60. LDFLAGS += -lswscale -lswresample -lavfilter -lavformat -lavcodec \
  61. -lavdevice -lavutil
  62. LDFLAGS += -lopenh264
  63. LDFLAGS += -lz
  64. LDFLAGS += -lmi_panel -lmi_disp -lmi_ai -lmi_ao -lmi_sys -lmi_common -lcam_os_wrapper
  65. LDFLAGS += -lzkhardware -lzknet -leasyui -llog -pthread -lm -ldl
  66. LDFLAGS += -L$(ZKSW_PREBUILT_LIB_PATH) -L. -Ldep/lib
  67. TARGET=../libs/armeabi/libzkgui.so
  68. ifeq ($(TARGET), $(wildcard $(TARGET)))
  69. DELETE_TARGET=$(TARGET)
  70. endif
  71. # alias commads if compile on windows
  72. RM =rm
  73. MKDIR=mkdir
  74. ECHO=echo
  75. ifeq ($(OS),Windows_NT)
  76. RM=win32-rm
  77. MKDIR=win32-mkdir
  78. ECHO=win32-echo
  79. else
  80. #keep default
  81. endif
  82. #alias end
  83. all: prepare $(TARGET)
  84. @$(ECHO)
  85. @$(ECHO) "[armeabi] Install : libzkgui.so => libs/armeabi/libzkgui.so"
  86. $(OBJS_ROOT_DIR)%.o: %.cpp $(LOCAL_HEAD_FILES)
  87. @$(ECHO) "[armeabi] Compile++ : "$<
  88. @$(CC) -c $< -o $@ $(CXXFLAGS) $(INCLUDE_DIR) $(LDFLAGS)
  89. $(OBJS_ROOT_DIR)%.o: %.c $(LOCAL_HEAD_FILES)
  90. @$(ECHO) "[armeabi] Compile++ : "$<
  91. @$(CC) -c $< -o $@ $(CFLAGS) $(INCLUDE_DIR) $(LDFLAGS)
  92. $(TARGET):$(OBJS)
  93. @$(ECHO) "[armeabi] SharedLibrary : "$@
  94. @$(CC) -fPIC -shared $^ -o $@ $(LDFLAGS) $(CXXFLAGS)
  95. @$(CROSS_COMPILE)strip $@
  96. prepare:
  97. @$(ECHO) "[armeabi] GCC : "$(CC)
  98. @-$(MKDIR) ../libs/armeabi -p
  99. @-$(MKDIR) $(OBJS_DIR_TREE) -p
  100. @-$(RM) $(TARGET) -rf
  101. clean:
  102. @$(ECHO) "[armeabi] Clean : "$(OBJS_ROOT_DIR)
  103. @-$(RM) $(OBJS_ROOT_DIR) -rf
  104. @$(ECHO) "[armeabi] Clean : "$(TARGET)
  105. @-$(RM) $(TARGET) -rf
  106. .PHONY:all clean prepare $(TARGET)