Makefile 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. .PHONY: all clean
  2. # C&GO编译器
  3. CC := arm-linux-gnueabihf-gcc
  4. GO := go
  5. GO_BUILD := $(GO) build
  6. GO_FLAGS := -ldflags "-s -w -X main.BuildTime=$(shell date +%Y-%m-%dT%H:%M:%S)"
  7. # GO编译环境
  8. SETGO_ENV = \
  9. GOOS=linux \
  10. GOARCH=arm \
  11. GOARM=7 \
  12. CC=$(CC) \
  13. CGO_ENABLED=1
  14. # 日期和时间
  15. DATE := $(shell date +%Y%m%d_%H%M%S)
  16. # 依赖库路径
  17. RTU_LINUX_MODULES_PATH := $(shell pwd)/../rtu_linux_modules
  18. # 依赖静态库
  19. S_LIBS0 := -Wl,-Bstatic -L$(RTU_LINUX_MODULES_PATH)/swapi -lswapi
  20. S_LIBS1 := -Wl,-Bstatic -L$(RTU_LINUX_MODULES_PATH)/ec200u -lec200u -L$(RTU_LINUX_MODULES_PATH)/air720u -lair720u
  21. S_LIBS2 := -Wl,-Bstatic -L$(RTU_LINUX_MODULES_PATH)/hk_takephoto -lhk_takephoto -L$(RTU_LINUX_MODULES_PATH)/dh_takephoto -ldh_takephoto
  22. S_LIBS3 := -Wl,-Bstatic -L$(RTU_LINUX_MODULES_PATH)/air530z -lair530z
  23. # 依赖动态库
  24. D_LIBS0 := -Wl,-Bdynamic -lc -lm -ldl -lpthread
  25. D_LIBS2 := -Wl,-Bdynamic -L$(RTU_LINUX_MODULES_PATH)/hk_takephoto/lib/armv7hf/. -lMvCameraControl
  26. D_LIBS2 += -L$(RTU_LINUX_MODULES_PATH)/dh_takephoto/lib/armv7hf -lMVSDK -liImageProcessing -lImageConvert -llog4cpp -lMvLSCProcess
  27. D_LIBS2 += -L$(RTU_LINUX_MODULES_PATH)/dh_takephoto/lib/armv7hf/GenICam/bin -lGCBase_gcc483_v3_0 -lGenApi_gcc483_v3_0 -lLog_gcc483_v3_0 -llog4cpp_gcc483_v3_0 -lMathParser_gcc483_v3_0 -lNodeMapData_gcc483_v3_0 -lXmlParser_gcc483_v3_0
  28. # 编译的目标
  29. all: networkd timesyncd
  30. # 可执行程序
  31. LK_LIBS := $(S_LIBS0) $(S_LIBS1) $(D_LIBS0)
  32. networkd : libswapi.a libair720u.a libec200u.a
  33. mkdir -p ./build
  34. $(GO) mod tidy
  35. $(SETGO_ENV) CGO_LDFLAGS="$(LK_LIBS)" $(GO_BUILD) $(GO_FLAGS) -o $@ ./networkd.service/*.go
  36. cp -rf $@ ./build/ && cp -rf $@ ./build/$(basename $@)_$(DATE)$(suffix $@) && rm -rf $@
  37. LK_LIBS := $(S_LIBS0) $(S_LIBS1) $(D_LIBS0)
  38. timesyncd : libswapi.a libair720u.a libec200u.a
  39. mkdir -p ./build
  40. $(GO) mod tidy
  41. $(SETGO_ENV) CGO_LDFLAGS="$(LK_LIBS)" $(GO_BUILD) $(GO_FLAGS) -o $@ ./timesyncd.service/*.go
  42. cp -rf $@ ./build/ && cp -rf $@ ./build/$(basename $@)_$(DATE)$(suffix $@) && rm -rf $@
  43. # 静态库模块
  44. libswapi.a :
  45. $(MAKE) -C $(RTU_LINUX_MODULES_PATH)/swapi target=armv7hf $@
  46. libec200u.a :
  47. $(MAKE) -C $(RTU_LINUX_MODULES_PATH)/ec200u target=armv7hf $@
  48. libair720u.a :
  49. $(MAKE) -C $(RTU_LINUX_MODULES_PATH)/air720u target=armv7hf $@
  50. libair530z.a :
  51. $(MAKE) -C $(RTU_LINUX_MODULES_PATH)/air530z target=armv7hf $@
  52. libhk_takephoto.a :
  53. $(MAKE) -C $(RTU_LINUX_MODULES_PATH)/hk_takephoto target=armv7hf $@
  54. libdh_takephoto.a :
  55. $(MAKE) -C $(RTU_LINUX_MODULES_PATH)/dh_takephoto target=armv7hf $@
  56. # 编译的清理
  57. clean:
  58. @for m in swapi hk_takephoto dh_takephoto ec200u air720u air530z; do \
  59. $(MAKE) -C $(RTU_LINUX_MODULES_PATH)/$$m clean || true; \
  60. done
  61. rm -rf build