Merge branch 'master' of github.sec.samsung.net:RS7-EdgeComputing/edge-home-orchestra...
[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 BIN_DIR         := $(BASE_DIR)/bin
12 BINARY_FILE     := edge-orchestration
13 EXEC_SRC_DIR    := GoMain
14 OBJ_SRC_DIR             := interface
15 PKG_DIRS                := devicemgr discoverymgr interface restapi/v1 servicemgr
16
17 # CMain target
18 ORG_HEADER_FILE_C       := liborchestration.h
19 HEADER_FILE_C   := orchestration.h
20 OBJECT_FILE_C   := liborchestration.a
21 CMAIN_DIR               := $(BASE_DIR)/src/CMain
22 CMAIN_INC_DIR   := $(CMAIN_DIR)/inc
23 CMAIN_BIN_DIR   := $(CMAIN_DIR)/bin
24 CMAIN_LIB_DIR   := $(CMAIN_DIR)/lib
25
26
27
28
29 .DEFAULT_GOAL := help
30
31 ## test and build
32 all: build
33
34 ## edge-orchestration binary build
35 build-binary:
36         $(GOBUILD) -a $(GO_LDFLAGS) -o $(BIN_DIR)/$(BINARY_FILE) $(EXEC_SRC_DIR) || exit 1
37         ls -al $(BIN_DIR)
38
39         $(MAKE) -C $(CMAIN_DIR)
40
41 ## edge-orchestration shared object build
42 build-object:
43         CGO_ENABLED=1 $(GOBUILD) -o $(CMAIN_LIB_DIR)/$(OBJECT_FILE_C) -buildmode=c-archive $(OBJ_SRC_DIR) || exit 1
44         mv $(CMAIN_LIB_DIR)/$(ORG_HEADER_FILE_C) $(CMAIN_INC_DIR)/$(HEADER_FILE_C)
45
46 ## go test and coverage
47 test:
48         $(GOCOVER) test $(PKG_DIRS) > coverage.out
49         $(GOCOVER) report coverage.out
50         $(GOCOVER)-html coverage.out > coverage.html
51         firefox coverage.html &
52
53 ## build clean
54 clean:
55         $(GOCLEAN)
56         -rm -f $(CMAIN_INC_DIR)/$(HEADER_FILE_C)
57         -rm -f $(CMAIN_LIB_DIR)/$(OBJECT_FILE_C)
58         -rm -f $(BIN_DIR)/*
59
60 ## check go style and static analysis
61 lint:
62         $(GOLINT) ./src/...
63         $(GOVET) ./src/...
64
65 ## show help
66 help:
67         @make2help $(MAKEFILE_LIST)
68
69 ## define build target not a file
70 .PHONY: all build test clean lint help