80 lines
2.8 KiB
Makefile
80 lines
2.8 KiB
Makefile
# © Copyright IBM Corporation 2018
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
###############################################################################
|
|
# Conditional variables - you can override the values of these variables from
|
|
# the command line
|
|
###############################################################################
|
|
# BASE_IMAGE is the MQ SDK base image to use
|
|
BASE_IMAGE ?= mq-sdk:9.0.5.0-x86_64-ubuntu-16.04
|
|
# GO_IMAGE is the GOLANG image to use for building samples
|
|
GO_IMAGE ?= golang:1.10
|
|
# DOCKER is the Docker command to run
|
|
DOCKER ?= docker
|
|
# BUILD_IMAGE is the name of the image that will be produced while building packages
|
|
BUILD_IMAGE ?= mq-golang-build:9.0.5.0-x86_64-ubuntu-16.04
|
|
# SAMPLE_BUILD_IMAGE is the name of the image that will be produced while building samples
|
|
SAMPLE_BUILD_IMAGE ?= mq-sample-build:9.0.5.0-x86_64-ubuntu-16.04
|
|
|
|
###############################################################################
|
|
# Other variables
|
|
###############################################################################
|
|
|
|
ifneq (,$(findstring Microsoft,$(shell uname -r)))
|
|
PLATFORM=WINDOWS
|
|
else
|
|
PLATFORM=UNIX
|
|
endif
|
|
|
|
###############################################################################
|
|
# Build targets
|
|
###############################################################################
|
|
|
|
# Build all packages when on unix
|
|
.PHONY: all
|
|
ifeq ("$(PLATFORM)", "WINDOWS")
|
|
all: unsupported-message
|
|
else
|
|
all: build-packages-unix build-samples-unix
|
|
endif
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
$(DOCKER) rmi -f $(BUILD_IMAGE)
|
|
$(DOCKER) rmi -f $(SAMPLE_BUILD_IMAGE)
|
|
|
|
.PHONY: build-packages-unix
|
|
build-packages-unix:
|
|
$(info $(SPACER)$(shell printf $(TITLE)"Building packages in build container"$(END)))
|
|
$(call docker-build,$(BUILD_IMAGE),Dockerfile-build-packages,$(BASE_IMAGE))
|
|
|
|
.PHONY: build-samples-unix
|
|
build-samples-unix: build-packages-unix
|
|
$(info $(SPACER)$(shell printf $(TITLE)"Building samples in build container"$(END)))
|
|
$(call docker-build,$(SAMPLE_BUILD_IMAGE),Dockerfile-build-samples,$(BUILD_IMAGE))
|
|
|
|
.PHONY: unsupported-message
|
|
unsupported-message:
|
|
$(info $(SPACER)$(shell printf $(TITLE)"This makefile can only be ran on UNIX platforms"$(END)))
|
|
|
|
define docker-build
|
|
# Build the image first to compile the package/samples
|
|
$(DOCKER) build -t $1 \
|
|
-f $2 \
|
|
--build-arg BASE_IMAGE=$3 \
|
|
.
|
|
endef
|
|
|
|
include formatting.mk
|