3 GOBUILD := $(GOCMD) build
4 GOCLEAN := $(GOCMD) clean
8 GO_LDFLAGS := -ldflags '-extldflags "-static"'
11 PKG_NAME := edge-orchestration
12 EXEC_SRC_DIR := GoMain/src
13 OBJ_SRC_DIR := interface
14 PKG_DIRS := discoverymgr restapi/v1 restapi/httpclient servicemgr scoringmgr securemgr orchestrationapi configuremgr logmgr
15 SERVICE_FILE := $(PKG_NAME).service
16 MANIFEST_FILE := $(PKG_NAME).manifest
17 DBUS_SERVICE_FILE := org.tizen.orchestration.service
18 DBUS_CONF_FILE := org.tizen.orchestration.conf
21 GOMAIN_DIR := $(BASE_DIR)/src/GoMain
22 GOMAIN_BIN_DIR := $(GOMAIN_DIR)/bin
23 GOMAIN_BIN_FILE := $(PKG_NAME)
26 CMAIN_BIN_FILE := $(PKG_NAME)
27 CMAIN_DIR := $(BASE_DIR)/src/CMain
29 CMAIN_INC_DIR := $(CMAIN_DIR)/inc/linux_arm
30 CMAIN_BIN_DIR := $(CMAIN_DIR)/bin/linux_arm
31 CMAIN_LIB_DIR := $(CMAIN_DIR)/lib/linux_arm
32 else ifeq ($(ARCH), aarch64)
33 CMAIN_INC_DIR := $(CMAIN_DIR)/inc/linux_aarch64
34 CMAIN_BIN_DIR := $(CMAIN_DIR)/bin/linux_aarch64
35 CMAIN_LIB_DIR := $(CMAIN_DIR)/lib/linux_aarch64
36 else ifeq ($(ARCH), x86)
37 CMAIN_INC_DIR := $(CMAIN_DIR)/inc/linux_x86
38 CMAIN_BIN_DIR := $(CMAIN_DIR)/bin/linux_x86
39 CMAIN_LIB_DIR := $(CMAIN_DIR)/lib/linux_x86
41 CMAIN_INC_DIR := $(CMAIN_DIR)/inc/linux_x86-64
42 CMAIN_BIN_DIR := $(CMAIN_DIR)/bin/linux_x86-64
43 CMAIN_LIB_DIR := $(CMAIN_DIR)/lib/linux_x86-64
45 CMAIN_TEST_DIR := $(CMAIN_DIR)/unittest
48 LIBRARY_NAME := liborchestration
49 HEADER_FILE := orchestration.h
50 LIBRARY_FILE := liborchestration.a
51 CUR_HEADER_FILE := $(LIBRARY_NAME)-$(VERSION)-$(BUILD_DATE).h
52 CUR_LIBRARY_FILE := $(LIBRARY_NAME)-$(VERSION)-$(BUILD_DATE).a
53 INTERFACE_OUT_DIR := $(BASE_DIR)/src/interface/output
55 INTERFACE_OUT_INC_DIR := $(INTERFACE_OUT_DIR)/inc/linux_arm
56 INTERFACE_OUT_BIN_DIR := $(INTERFACE_OUT_DIR)/bin/linux_arm
57 INTERFACE_OUT_LIB_DIR := $(INTERFACE_OUT_DIR)/lib/linux_arm
58 else ifeq ($(ARCH), aarch64)
59 INTERFACE_OUT_INC_DIR := $(INTERFACE_OUT_DIR)/inc/linux_aarch64
60 INTERFACE_OUT_BIN_DIR := $(INTERFACE_OUT_DIR)/bin/linux_aarch64
61 INTERFACE_OUT_LIB_DIR := $(INTERFACE_OUT_DIR)/lib/linux_aarch64
62 else ifeq ($(ARCH), x86)
63 INTERFACE_OUT_INC_DIR := $(INTERFACE_OUT_DIR)/inc/linux_x86
64 INTERFACE_OUT_BIN_DIR := $(INTERFACE_OUT_DIR)/bin/linux_x86
65 INTERFACE_OUT_LIB_DIR := $(INTERFACE_OUT_DIR)/lib/linux_x86
67 INTERFACE_OUT_INC_DIR := $(INTERFACE_OUT_DIR)/inc/linux_x86-64
68 INTERFACE_OUT_BIN_DIR := $(INTERFACE_OUT_DIR)/bin/linux_x86-64
69 INTERFACE_OUT_LIB_DIR := $(INTERFACE_OUT_DIR)/lib/linux_x86-64
73 LIBPKG_LIB_FILE := liborchestration-client.so
74 LIBPKG_HEADER_FILE := orchestration_client.h
75 LIBPKG_DIR := $(BASE_DIR)/src/libedge-orchestration
76 LIBPKG_LIB_DIR := $(LIBPKG_DIR)/lib
77 LIBPKG_INC_DIR := $(LIBPKG_DIR)/inc
78 LIBPKG_SAMPLE_DIR := $(LIBPKG_DIR)/sample
81 LIBSCORE_SAMPLE := myscoring
82 LIBSCORE_SAMPLE_LIBRARY := libmyscoring.so
83 LIBSCORE_SAMPLE_VER := 1.0.1
84 LIBSCORE_SAMPLE_CONF := myscoring.conf
85 LIBSCORE_SAMPLE_DIR := $(BASE_DIR)/src/scoringmgr/mock/myscoring
91 ## edge-orchestration binary build
93 $(GOBUILD) -a $(GO_LDFLAGS) -o $(GOMAIN_BIN_DIR)/$(GOMAIN_BIN_FILE) $(EXEC_SRC_DIR) || exit 1
94 ls -al $(GOMAIN_BIN_DIR)
96 ## edge-orchestration static archive build
98 CGO_ENABLED=1 $(GOBUILD) -o $(INTERFACE_OUT_LIB_DIR)/$(CUR_LIBRARY_FILE) -buildmode=c-archive $(OBJ_SRC_DIR) || exit 1
99 mv $(INTERFACE_OUT_LIB_DIR)/$(CUR_HEADER_FILE) $(INTERFACE_OUT_INC_DIR)/$(CUR_HEADER_FILE)
100 ln -frs $(INTERFACE_OUT_LIB_DIR)/$(CUR_LIBRARY_FILE) $(CMAIN_LIB_DIR)/$(LIBRARY_FILE)
101 ln -frs $(INTERFACE_OUT_INC_DIR)/$(CUR_HEADER_FILE) $(CMAIN_INC_DIR)/$(HEADER_FILE)
102 ls -al $(INTERFACE_OUT_LIB_DIR)
104 ## edge-orchestration with d-bus server module
106 mkdir -p $(CMAIN_BIN_DIR)
107 $(MAKE) -C $(CMAIN_DIR)
108 ls -al $(CMAIN_BIN_DIR)
110 ## libedge-orchestration with d-bus client module
112 $(MAKE) -C $(LIBPKG_DIR)
113 ls -al $(LIBPKG_LIB_DIR)
114 ls -al $(LIBPKG_INC_DIR)
115 $(MAKE) -C $(LIBSCORE_SAMPLE_DIR)
117 ## install output files for packaing
120 install -d $(DESTDIR)/usr/bin
121 install -d $(DESTDIR)/etc/$(PKG_NAME)
122 install -d $(DESTDIR)/var/log/$(PKG_NAME)
123 install -d $(DESTDIR)/usr/lib/systemd/system/multi-user.target.wants
124 install -d $(DESTDIR)/usr/share/dbus-1/system-services
125 install -d $(DESTDIR)/etc/dbus-1/system.d
126 install -m 755 $(CMAIN_BIN_DIR)/$(CMAIN_BIN_FILE) $(DESTDIR)/usr/bin/$(CMAIN_BIN_FILE)
127 install -m 755 $(LIBPKG_SAMPLE_DIR)/orchestration_sample $(DESTDIR)/usr/bin/orchestration_sample
128 install -m 644 $(BASE_DIR)/$(SERVICE_FILE) $(DESTDIR)/usr/lib/systemd/system/$(SERVICE_FILE)
129 ln -s ../$(SERVICE_FILE) $(DESTDIR)/usr/lib/systemd/system/multi-user.target.wants/
131 install -m 644 $(BASE_DIR)/$(DBUS_SERVICE_FILE) $(DESTDIR)/usr/share/dbus-1/system-services/$(DBUS_SERVICE_FILE)
132 install -m 644 $(BASE_DIR)/$(DBUS_CONF_FILE) $(DESTDIR)/etc/dbus-1/system.d/$(DBUS_CONF_FILE)
134 install -d $(DESTDIR)/usr/lib
135 install -d $(DESTDIR)/usr/include/$(PKG_NAME)
136 install -m 644 $(LIBPKG_LIB_DIR)/$(LIBPKG_LIB_FILE) $(DESTDIR)/usr/lib
137 install -m 644 $(LIBPKG_INC_DIR)/$(LIBPKG_HEADER_FILE) $(DESTDIR)/usr/include/$(PKG_NAME)
139 install -d $(DESTDIR)/etc/$(PKG_NAME)/$(LIBSCORE_SAMPLE)
140 install -m 644 $(LIBSCORE_SAMPLE_DIR)/$(LIBSCORE_SAMPLE_CONF) $(DESTDIR)/etc/$(PKG_NAME)/$(LIBSCORE_SAMPLE)/
141 # install -m 644 $(LIBSCORE_SAMPLE_DIR)/$(LIBSCORE_SAMPLE_LIBRARY) $(DESTDIR)/etc/$(PKG_NAME)/$(LIBSCORE_SAMPLE)/
142 install -m 644 $(LIBSCORE_SAMPLE_DIR)/$(LIBSCORE_SAMPLE_LIBRARY).$(LIBSCORE_SAMPLE_VER) $(DESTDIR)/etc/$(PKG_NAME)/$(LIBSCORE_SAMPLE)/
144 ## go test and coverage
146 $(GOCOVER) test -v $(PKG_DIRS) > coverage.out
147 $(GOCOVER) report coverage.out
148 $(GOCOVER)-html coverage.out > coverage.html
149 firefox coverage.html &
150 $(MAKE) -C $(CMAIN_TEST_DIR)
155 -rm -f $(INTERFACE_OUT_LIB_DIR)/*.a
156 -rm -f $(INTERFACE_OUT_INC_DIR)/*.h
158 ## check go style and static analysis
161 $(GOVET) -v ./src/...
165 @make2help $(MAKEFILE_LIST)
167 ## define build target not a file
168 .PHONY: all build test clean lint help