remove link of vendor/src after build
[platform/core/system/edge-orchestration.git] / Makefile
1 # Go parameters
2 GOCMD       := go
3 GOBUILD     := $(GOCMD) build
4 GOCLEAN     := $(GOCMD) clean
5 GOLINT          := golint
6 GOVET           := $(GOCMD) vet
7 GOCOVER     := gocov
8 GO_LDFLAGS  := -ldflags '-extldflags "-static"'
9
10 # Target parameters
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
19
20 # GoMain target
21 GOMAIN_DIR              := $(BASE_DIR)/src/GoMain
22 GOMAIN_BIN_DIR  := $(GOMAIN_DIR)/bin
23 GOMAIN_BIN_FILE := $(PKG_NAME)
24
25 # CMain target
26 CMAIN_BIN_FILE          := $(PKG_NAME)
27 CMAIN_DIR                       := $(BASE_DIR)/src/CMain
28 ifeq ($(ARCH), arm)
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
40 else
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
44 endif
45 CMAIN_TEST_DIR          := $(CMAIN_DIR)/unittest
46
47 # Go Library
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
54 ifeq ($(ARCH), arm)
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
66 else
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
70 endif
71
72 # Go 3rdParty packages
73 BUILD_VENDOR_DIR        := $(BASE_DIR)/vendor/src
74
75 # Library package
76 LIBPKG_LIB_FILE         := liborchestration-client.so
77 LIBPKG_HEADER_FILE      := orchestration_client.h
78 LIBPKG_DIR                      := $(BASE_DIR)/src/libedge-orchestration
79 LIBPKG_LIB_DIR          := $(LIBPKG_DIR)/lib
80 LIBPKG_INC_DIR          := $(LIBPKG_DIR)/inc
81 LIBPKG_SAMPLE_DIR       := $(LIBPKG_DIR)/sample
82
83 # Default scoring
84 LIBSCORE_SAMPLE                 := myscoring
85 LIBSCORE_SAMPLE_LIBRARY := libmyscoring.so
86 LIBSCORE_SAMPLE_VER             := 1.0.1
87 LIBSCORE_SAMPLE_CONF    := myscoring.conf
88 LIBSCORE_SAMPLE_DIR             := $(BASE_DIR)/src/scoringmgr/mock/myscoring
89
90
91
92 .DEFAULT_GOAL := help
93
94 ## edge-orchestration binary build
95 build-binary:
96         $(GOBUILD) -a $(GO_LDFLAGS) -o $(GOMAIN_BIN_DIR)/$(GOMAIN_BIN_FILE) $(EXEC_SRC_DIR) || exit 1
97         ls -al $(GOMAIN_BIN_DIR)
98
99 ## edge-orchestration static archive build
100 build-object:
101         CGO_ENABLED=1 $(GOBUILD) -o $(INTERFACE_OUT_LIB_DIR)/$(CUR_LIBRARY_FILE) -buildmode=c-archive $(OBJ_SRC_DIR) || exit 1
102         mv $(INTERFACE_OUT_LIB_DIR)/$(CUR_HEADER_FILE) $(INTERFACE_OUT_INC_DIR)/$(CUR_HEADER_FILE)
103         ln -frs $(INTERFACE_OUT_LIB_DIR)/$(CUR_LIBRARY_FILE) $(CMAIN_LIB_DIR)/$(LIBRARY_FILE)
104         ln -frs $(INTERFACE_OUT_INC_DIR)/$(CUR_HEADER_FILE) $(CMAIN_INC_DIR)/$(HEADER_FILE)
105         ls -al $(INTERFACE_OUT_LIB_DIR)
106
107 ## clean 3rdParty packages
108 clean-tmp-packages:
109         -rm -rf $(BUILD_VENDOR_DIR)
110
111 ## edge-orchestration with d-bus server module
112 build-dbus-server:
113         mkdir -p $(CMAIN_BIN_DIR)
114         $(MAKE) -C $(CMAIN_DIR)
115         ls -al $(CMAIN_BIN_DIR)
116
117 ## libedge-orchestration with d-bus client module
118 build-dbus-client:
119         $(MAKE) -C $(LIBPKG_DIR)
120         ls -al $(LIBPKG_LIB_DIR)
121         ls -al $(LIBPKG_INC_DIR)
122         $(MAKE) -C $(LIBSCORE_SAMPLE_DIR)
123
124 ## install output files for packaing
125 install:
126         -rm -rf $(DESTDIR)
127         install -d $(DESTDIR)/usr/bin
128         install -d $(DESTDIR)/etc/$(PKG_NAME)
129         install -d $(DESTDIR)/var/log/$(PKG_NAME)
130         install -d $(DESTDIR)/usr/lib/systemd/system/multi-user.target.wants
131         install -d $(DESTDIR)/usr/share/dbus-1/system-services
132         install -d $(DESTDIR)/etc/dbus-1/system.d
133         install -m 755 $(CMAIN_BIN_DIR)/$(CMAIN_BIN_FILE) $(DESTDIR)/usr/bin/$(CMAIN_BIN_FILE)
134         install -m 755 $(LIBPKG_SAMPLE_DIR)/orchestration_sample $(DESTDIR)/usr/bin/orchestration_sample
135         install -m 644 $(BASE_DIR)/$(SERVICE_FILE) $(DESTDIR)/usr/lib/systemd/system/$(SERVICE_FILE)
136         ln -s ../$(SERVICE_FILE) $(DESTDIR)/usr/lib/systemd/system/multi-user.target.wants/
137
138         install -m 644 $(BASE_DIR)/$(DBUS_SERVICE_FILE) $(DESTDIR)/usr/share/dbus-1/system-services/$(DBUS_SERVICE_FILE)
139         install -m 644 $(BASE_DIR)/$(DBUS_CONF_FILE) $(DESTDIR)/etc/dbus-1/system.d/$(DBUS_CONF_FILE)
140
141         install -d $(DESTDIR)/usr/lib
142         install -d $(DESTDIR)/usr/include/$(PKG_NAME)
143         install -m 644 $(LIBPKG_LIB_DIR)/$(LIBPKG_LIB_FILE) $(DESTDIR)/usr/lib
144         install -m 644 $(LIBPKG_INC_DIR)/$(LIBPKG_HEADER_FILE) $(DESTDIR)/usr/include/$(PKG_NAME)
145
146         install -d $(DESTDIR)/etc/$(PKG_NAME)/$(LIBSCORE_SAMPLE)
147         install -m 644 $(LIBSCORE_SAMPLE_DIR)/$(LIBSCORE_SAMPLE_CONF) $(DESTDIR)/etc/$(PKG_NAME)/$(LIBSCORE_SAMPLE)/
148 #       install -m 644 $(LIBSCORE_SAMPLE_DIR)/$(LIBSCORE_SAMPLE_LIBRARY) $(DESTDIR)/etc/$(PKG_NAME)/$(LIBSCORE_SAMPLE)/
149         install -m 644 $(LIBSCORE_SAMPLE_DIR)/$(LIBSCORE_SAMPLE_LIBRARY).$(LIBSCORE_SAMPLE_VER) $(DESTDIR)/etc/$(PKG_NAME)/$(LIBSCORE_SAMPLE)/
150
151 ## go test and coverage
152 test:
153         $(GOCOVER) test -v $(PKG_DIRS) > coverage.out
154         $(GOCOVER) report coverage.out
155         $(GOCOVER)-html coverage.out > coverage.html
156         firefox coverage.html &
157         $(MAKE) -C $(CMAIN_TEST_DIR)
158
159 ## build clean
160 clean:
161         $(GOCLEAN)
162         -rm -f $(INTERFACE_OUT_LIB_DIR)/*.a
163         -rm -f $(INTERFACE_OUT_INC_DIR)/*.h
164
165 ## check go style and static analysis
166 lint:
167         $(GOLINT) ./src/...
168         $(GOVET) -v ./src/...
169
170 ## show help
171 help:
172         @make2help $(MAKEFILE_LIST)
173
174 ## define build target not a file
175 .PHONY: all build test clean lint help