github.com/jingruilea/kubeedge@v1.2.0-beta.0.0.20200410162146-4bb8902b3879/Makefile (about)

     1  # make all builds both cloud and edge binaries
     2  
     3  BINARIES=cloudcore \
     4  	admission \
     5  	edgecore \
     6  	edgesite \
     7  	keadm
     8  
     9  COMPONENTS=cloud \
    10  	edge
    11  
    12  .EXPORT_ALL_VARIABLES:
    13  OUT_DIR ?= _output
    14  
    15  define ALL_HELP_INFO
    16  # Build code.
    17  #
    18  # Args:
    19  #   WHAT: binary names to build. support: $(BINARIES) 
    20  #         the build will produce executable files under $(OUT_DIR)
    21  #         If not specified, "everything" will be built.
    22  #
    23  # Example:
    24  #   make
    25  #   make all
    26  #   make all HELP=y
    27  #   make all WHAT=cloudcore
    28  endef
    29  .PHONY: all
    30  ifeq ($(HELP),y)
    31  all: clean
    32  	@echo "$$ALL_HELP_INFO"
    33  else
    34  all: verify-golang
    35  	hack/make-rules/build.sh $(WHAT)
    36  endif
    37  
    38  
    39  define VERIFY_HELP_INFO
    40  # verify golang,vendor and codegen
    41  #
    42  # Example:
    43  # make verify 
    44  endef
    45  .PHONY: verify
    46  ifeq ($(HELP),y)
    47  verify:
    48  	@echo "$$VERIFY_HELP_INFO"
    49  else
    50  verify:verify-golang verify-vendor verify-codegen 
    51  endif
    52  
    53  .PHONY: verify-golang
    54  verify-golang: 
    55  	bash hack/verify-golang.sh
    56  
    57  .PHONY: verify-vendor
    58  verify-vendor: 
    59  	bash hack/verify-vendor.sh
    60  .PHONY: verify-codegen
    61  verify-codegen: 
    62  	bash cloud/hack/verify-codegen.sh
    63  
    64  define TEST_HELP_INFO
    65  # run golang test case.
    66  #
    67  # Args:
    68  #   WHAT: Component names to be testd. support: $(COMPONENTS) 
    69  #         If not specified, "everything" will be tested.
    70  #
    71  # Example:
    72  #   make test 
    73  #   make test HELP=y
    74  #   make test WHAT=cloud
    75  endef
    76  .PHONY: test 
    77  ifeq ($(HELP),y)
    78  test:
    79  	@echo "$$TEST_HELP_INFO"
    80  else
    81  test: 
    82  	hack/make-rules/test.sh $(WHAT)
    83  endif
    84  
    85  LINTS=cloud \
    86  	edge \
    87  	keadm \
    88  	bluetoothdevice
    89  define LINT_HELP_INFO
    90  # run golang lint check.
    91  #
    92  # Args:
    93  #   WHAT: Component names to be lint check. support: $(LINTS) 
    94  #         If not specified, "everything" will be lint check.
    95  #
    96  # Example:
    97  #   make lint 
    98  #   make lint HELP=y
    99  #   make lint WHAT=cloud
   100  endef
   101  .PHONY: lint 
   102  ifeq ($(HELP),y)
   103  lint:
   104  	@echo "$$LINT_HELP_INFO"
   105  else
   106  lint: 
   107  	hack/make-rules/lint.sh $(WHAT)
   108  endif
   109  
   110  
   111  INTEGRATION_TEST_COMPONENTS=edge
   112  define INTEGRATION_TEST_HELP_INFO
   113  # run integration test.
   114  #
   115  # Args:
   116  #   WHAT: Component names to be lint check. support: $(INTEGRATION_TEST_COMPONENTS) 
   117  #         If not specified, "everything" will be integration check.
   118  #
   119  # Example:
   120  #   make integrationtest 
   121  #   make integrationtest HELP=y
   122  endef
   123  
   124  .PHONY: integrationtest 
   125  ifeq ($(HELP),y)
   126  integrationtest:
   127  	@echo "$$INTEGRATION_TEST_HELP_INFO"
   128  else
   129  integrationtest: 
   130  	hack/make-rules/build.sh edgecore 
   131  	edge/test/integration/scripts/execute.sh
   132  endif
   133  
   134  CROSSBUILD_COMPONENTS=edgecore\
   135  	edgesite
   136  GOARM_VALUES=GOARM7 \
   137  	GOARM8
   138  
   139  define CROSSBUILD_HELP_INFO
   140  # cross build components.
   141  #
   142  # Args:
   143  #   WHAT: Component names to be lint check. support: $(CROSSBUILD_COMPONENTS) 
   144  #         If not specified, "everything" will be cross build.
   145  #
   146  # GOARM: go arm value, now support:$(GOARM_VALUES)
   147  #        If not specified ,default use GOARM=GOARM8 
   148  #
   149  #
   150  # Example:
   151  #   make crossbuild 
   152  #   make crossbuild HELP=y
   153  #   make crossbuild WHAT=edgecore
   154  #   make crossbuild WHAT=edgecore GOARM=GOARM7
   155  #
   156  endef
   157  .PHONY: crossbuild 
   158  ifeq ($(HELP),y)
   159  crossbuild:
   160  	@echo "$$CROSSBUILD_HELP_INFO"
   161  else
   162  crossbuild: clean 
   163  	hack/make-rules/crossbuild.sh $(WHAT) $(GOARM)
   164  endif
   165  
   166  
   167  
   168  SMALLBUILD_COMPONENTS=edgecore \
   169  	edgesite
   170  define SMALLBUILD_HELP_INFO
   171  # small build components.
   172  #
   173  # Args:
   174  #   WHAT: Component names to be lint check. support: $(SMALLBUILD_COMPONENTS) 
   175  #         If not specified, "everything" will be small build.
   176  #
   177  #
   178  # Example:
   179  #   make smallbuild 
   180  #   make smallbuild HELP=y
   181  #   make smallbuild WHAT=edgecore
   182  #   make smallbuild WHAT=edgesite
   183  #
   184  endef
   185  .PHONY: smallbuild 
   186  ifeq ($(HELP),y)
   187  smallbuild:
   188  	@echo "$$SMALLBUILD_HELP_INFO"
   189  else
   190  smallbuild: clean
   191  	hack/make-rules/smallbuild.sh $(WHAT)
   192  endif
   193  
   194  
   195  define E2E_HELP_INFO
   196  # e2e test.
   197  #
   198  # Example:
   199  #   make e2e 
   200  #   make e2e HELP=y
   201  #
   202  endef
   203  .PHONY: e2e 
   204  ifeq ($(HELP),y)
   205  e2e:
   206  	@echo "$$E2E_HELP_INFO"
   207  else
   208  e2e: 
   209  #	bash tests/e2e/scripts/execute.sh device_crd
   210  #	This has been commented temporarily since there is an issue of CI using same master for all PRs, which is causing failures when run parallely
   211  	bash tests/e2e/scripts/execute.sh
   212  endif
   213  
   214  define KEADM_E2E_HELP_INFO
   215  # keadm e2e test.
   216  #
   217  # Example:
   218  #   make keadm_e2e
   219  #   make keadm_e2e HELP=y
   220  #
   221  endef
   222  .PHONY: keadm_e2e
   223  ifeq ($(HELP),y)
   224  keadm_e2e:
   225  	@echo "KEADM_E2E_HELP_INFO"
   226  else
   227  keadm_e2e:
   228  	bash tests/e2e/scripts/keadm_e2e.sh
   229  endif
   230  
   231  define CLEAN_HELP_INFO
   232  # Clean up the output of make.
   233  #
   234  # Example:
   235  #   make clean 
   236  #   make clean HELP=y
   237  #
   238  endef
   239  .PHONY: clean 
   240  ifeq ($(HELP),y)
   241  clean:
   242  	@echo "$$CLEAN_HELP_INFO"
   243  else
   244  clean: 
   245  	hack/make-rules/clean.sh
   246  endif
   247  
   248  
   249  QEMU_ARCH ?= x86_64
   250  ARCH ?= amd64
   251  IMAGE_TAG ?= $(shell git describe --tags)
   252  GO_LDFLAGS='$(shell hack/make-rules/version.sh)'
   253  
   254  .PHONY: cloudimage
   255  cloudimage:
   256  	docker build --build-arg GO_LDFLAGS=${GO_LDFLAGS} -t kubeedge/cloudcore:${IMAGE_TAG} -f build/cloud/Dockerfile .
   257  
   258  .PHONY: admissionimage
   259  admissionimage:
   260  	docker build --build-arg GO_LDFLAGS=${GO_LDFLAGS} -t kubeedge/admission:${IMAGE_TAG} -f build/admission/Dockerfile .
   261  
   262  .PHONY: csidriverimage
   263  csidriverimage:
   264  	docker build --build-arg GO_LDFLAGS=${GO_LDFLAGS} -t kubeedge/csidriver:${IMAGE_TAG} -f build/csidriver/Dockerfile .
   265  
   266  .PHONY: edgeimage
   267  edgeimage:
   268  	mkdir -p ./build/edge/tmp
   269  	rm -rf ./build/edge/tmp/*
   270  	curl -L -o ./build/edge/tmp/qemu-${QEMU_ARCH}-static.tar.gz https://github.com/multiarch/qemu-user-static/releases/download/v3.0.0/qemu-${QEMU_ARCH}-static.tar.gz
   271  	tar -xzf ./build/edge/tmp/qemu-${QEMU_ARCH}-static.tar.gz -C ./build/edge/tmp
   272  	docker build -t kubeedge/edgecore:${IMAGE_TAG} \
   273  	--build-arg GO_LDFLAGS=${GO_LDFLAGS} \
   274  	--build-arg BUILD_FROM=${ARCH}/golang:1.13.8-alpine3.10 \
   275  	--build-arg RUN_FROM=${ARCH}/docker:dind \
   276  	-f build/edge/Dockerfile .
   277  
   278  .PHONY: edgesiteimage
   279  edgesiteimage:
   280  	mkdir -p ./build/edgesite/tmp
   281  	rm -rf ./build/edgesite/tmp/*
   282  	curl -L -o ./build/edgesite/tmp/qemu-${QEMU_ARCH}-static.tar.gz https://github.com/multiarch/qemu-user-static/releases/download/v3.0.0/qemu-${QEMU_ARCH}-static.tar.gz
   283  	tar -xzf ./build/edgesite/tmp/qemu-${QEMU_ARCH}-static.tar.gz -C ./build/edgesite/tmp
   284  	docker build -t kubeedge/edgesite:${IMAGE_TAG} \
   285  	--build-arg GO_LDFLAGS=${GO_LDFLAGS} \
   286  	--build-arg BUILD_FROM=${ARCH}/golang:1.13.8-alpine3.10 \
   287  	--build-arg RUN_FROM=${ARCH}/docker:dind \
   288  	-f build/edgesite/Dockerfile .
   289  
   290  .PHONY: bluetoothdevice
   291  bluetoothdevice: clean
   292  	hack/make-rules/bluetoothdevice.sh
   293  
   294  .PHONY: bluetoothdevice_image
   295  bluetoothdevice_image:bluetoothdevice
   296  	docker build -t bluetooth_mapper:v1.0 ./mappers/bluetooth_mapper/