# Go parameters GOCMD := go GOBUILD := $(GOCMD) build GOCLEAN := $(GOCMD) clean GOLINT := golint GOVET := $(GOCMD) vet GOCOVER := gocov GO_LDFLAGS := -ldflags '-extldflags "-static"' # Target parameters PKG_NAME := edge-orchestration EXEC_SRC_DIR := GoMain/src OBJ_SRC_DIR := interface PKG_DIRS := discoverymgr restapi/v1 restapi/httpclient servicemgr scoringmgr securemgr orchestrationapi configuremgr logmgr SERVICE_FILE := $(PKG_NAME).service MANIFEST_FILE := $(PKG_NAME).manifest DBUS_SERVICE_FILE := org.tizen.orchestration.service DBUS_CONF_FILE := org.tizen.orchestration.conf # GoMain target GOMAIN_DIR := $(BASE_DIR)/src/GoMain GOMAIN_BIN_DIR := $(GOMAIN_DIR)/bin GOMAIN_BIN_FILE := $(PKG_NAME) # CMain target OBJECT_NAME := liborchestration HEADER_FILE_C := orchestration.h OBJECT_FILE_C := liborchestration.a CUR_HEADER_FILE_C := $(OBJECT_NAME)-$(VERSION)-$(BUILD_DATE).h CUR_OBJECT_FILE_C := $(OBJECT_NAME)-$(VERSION)-$(BUILD_DATE).a CMAIN_BIN_FILE := $(PKG_NAME) CMAIN_DIR := $(BASE_DIR)/src/CMain ifeq ($(ARCH), arm) CMAIN_INC_DIR := $(CMAIN_DIR)/inc/linux_arm CMAIN_BIN_DIR := $(CMAIN_DIR)/bin/linux_arm CMAIN_LIB_DIR := $(CMAIN_DIR)/lib/linux_arm else CMAIN_INC_DIR := $(CMAIN_DIR)/inc CMAIN_BIN_DIR := $(CMAIN_DIR)/bin CMAIN_LIB_DIR := $(CMAIN_DIR)/lib endif CMAIN_TEST_DIR := $(CMAIN_DIR)/unittest # Library package LIBPKG_LIB_FILE := liborchestration-client.so LIBPKG_HEADER_FILE := orchestration_client.h LIBPKG_DIR := $(BASE_DIR)/src/libedge-orchestration LIBPKG_LIB_DIR := $(LIBPKG_DIR)/lib LIBPKG_INC_DIR := $(LIBPKG_DIR)/inc LIBPKG_SAMPLE_DIR := $(LIBPKG_DIR)/sample # Default scoring LIBSCORE_SAMPLE := myscoring LIBSCORE_SAMPLE_LIBRARY := libmyscoring.so LIBSCORE_SAMPLE_VER := 1.0.1 LIBSCORE_SAMPLE_CONF := myscoring.conf LIBSCORE_SAMPLE_DIR := $(BASE_DIR)/src/scoringmgr/mock/myscoring .DEFAULT_GOAL := help ## edge-orchestration binary build build-binary: $(GOBUILD) -a $(GO_LDFLAGS) -o $(GOMAIN_BIN_DIR)/$(GOMAIN_BIN_FILE) $(EXEC_SRC_DIR) || exit 1 ls -al $(GOMAIN_BIN_DIR) ## edge-orchestration static archive build build-object: CGO_ENABLED=1 $(GOBUILD) -o $(CMAIN_LIB_DIR)/$(CUR_OBJECT_FILE_C) -buildmode=c-archive $(OBJ_SRC_DIR) || exit 1 mv $(CMAIN_LIB_DIR)/$(CUR_HEADER_FILE_C) $(CMAIN_INC_DIR)/$(HEADER_FILE_C) ln -rs $(CMAIN_LIB_DIR)/$(CUR_OBJECT_FILE_C) $(CMAIN_LIB_DIR)/$(OBJECT_FILE_C) ls -al $(CMAIN_LIB_DIR) ## edge-orchestration with d-bus server module build-dbus-server: mkdir -p $(CMAIN_BIN_DIR) $(MAKE) -C $(CMAIN_DIR) ls -al $(CMAIN_BIN_DIR) ## libedge-orchestration with d-bus client module build-dbus-client: $(MAKE) -C $(LIBPKG_DIR) ls -al $(LIBPKG_LIB_DIR) ls -al $(LIBPKG_INC_DIR) $(MAKE) -C $(LIBSCORE_SAMPLE_DIR) ## install output files for packaing install: -rm -rf $(DESTDIR) install -d $(DESTDIR)/usr/bin install -d $(DESTDIR)/etc/$(PKG_NAME) install -d $(DESTDIR)/var/log/$(PKG_NAME) install -d $(DESTDIR)/usr/lib/systemd/system/multi-user.target.wants install -d $(DESTDIR)/usr/share/dbus-1/system-services install -d $(DESTDIR)/etc/dbus-1/system.d install -m 755 $(CMAIN_BIN_DIR)/$(CMAIN_BIN_FILE) $(DESTDIR)/usr/bin/$(CMAIN_BIN_FILE) install -m 755 $(LIBPKG_SAMPLE_DIR)/orchestration_sample $(DESTDIR)/usr/bin/orchestration_sample install -m 644 $(BASE_DIR)/$(SERVICE_FILE) $(DESTDIR)/usr/lib/systemd/system/$(SERVICE_FILE) ln -s ../$(SERVICE_FILE) $(DESTDIR)/usr/lib/systemd/system/multi-user.target.wants/ install -m 644 $(BASE_DIR)/$(DBUS_SERVICE_FILE) $(DESTDIR)/usr/share/dbus-1/system-services/$(DBUS_SERVICE_FILE) install -m 644 $(BASE_DIR)/$(DBUS_CONF_FILE) $(DESTDIR)/etc/dbus-1/system.d/$(DBUS_CONF_FILE) install -d $(DESTDIR)/usr/lib install -d $(DESTDIR)/usr/include/$(PKG_NAME) install -m 644 $(LIBPKG_LIB_DIR)/$(LIBPKG_LIB_FILE) $(DESTDIR)/usr/lib install -m 644 $(LIBPKG_INC_DIR)/$(LIBPKG_HEADER_FILE) $(DESTDIR)/usr/include/$(PKG_NAME) install -d $(DESTDIR)/etc/$(PKG_NAME)/$(LIBSCORE_SAMPLE) install -m 644 $(LIBSCORE_SAMPLE_DIR)/$(LIBSCORE_SAMPLE_CONF) $(DESTDIR)/etc/$(PKG_NAME)/$(LIBSCORE_SAMPLE)/ # install -m 644 $(LIBSCORE_SAMPLE_DIR)/$(LIBSCORE_SAMPLE_LIBRARY) $(DESTDIR)/etc/$(PKG_NAME)/$(LIBSCORE_SAMPLE)/ install -m 644 $(LIBSCORE_SAMPLE_DIR)/$(LIBSCORE_SAMPLE_LIBRARY).$(LIBSCORE_SAMPLE_VER) $(DESTDIR)/etc/$(PKG_NAME)/$(LIBSCORE_SAMPLE)/ ## go test and coverage test: $(GOCOVER) test -v $(PKG_DIRS) > coverage.out $(GOCOVER) report coverage.out $(GOCOVER)-html coverage.out > coverage.html firefox coverage.html & $(MAKE) -C $(CMAIN_TEST_DIR) ## build clean clean: $(GOCLEAN) -rm -f $(CMAIN_INC_DIR)/$(HEADER_FILE_C) -rm -f $(CMAIN_LIB_DIR)/$(OBJECT_FILE_C) -rm -f $(GOMAIN_BIN_DIR)/$(GOMAIN_BIN_FILE) -rm -f $(CMAIN_BIN_DIR)/$(CMAIN_BIN_FILE) -rm -f $(CMAIN_LIB_DIR)/$(OBJECT_NAME)*.a ## check go style and static analysis lint: $(GOLINT) ./src/... $(GOVET) ./src/... ## show help help: @make2help $(MAKEFILE_LIST) ## define build target not a file .PHONY: all build test clean lint help