| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you 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. |
| |
| # build docker compose images: |
| # $ make -f Makefile.docker build-cpp |
| # To run the test suite |
| # $ make -f Makefile.docker cpp |
| |
| LANGUAGES = cpp cpp-alpine cpp-cmake32 c_glib go java js python python-alpine rust r r-sanitizer |
| MISC = lint iwyu clang-format docs pandas-master |
| TESTS = dask hdfs-integration spark-integration python-nopandas |
| |
| # declare images dependencies |
| DEPENDS_ON_CPP = build-c_glib build-python build-r |
| DEPENDS_ON_CPP_ALPINE = build-python-alpine |
| DEPENDS_ON_PYTHON = build-lint build-docs build-dask build-hdfs-integration \ |
| build-spark-integration build-python-nopandas \ |
| build-turbodbc-integration |
| DEPENDS_ON_LINT = build-iwyu build-clang-format |
| |
| SERVICES = $(LANGUAGES) $(MISC) $(TESTS) |
| .PHONY: clean build-% run-% $(SERVICES) |
| |
| DC := docker-compose |
| |
| clean: |
| $(DC) down -v |
| |
| # Default build target if no dependencies |
| build-%: |
| $(DC) build $* |
| |
| # The following targets create the dependencies of the form `build-X: build-Y` |
| $(DEPENDS_ON_CPP): build-%: build-cpp |
| $(DC) build $* |
| $(DEPENDS_ON_CPP_ALPINE): build-%: build-cpp-alpine |
| $(DC) build $* |
| $(DEPENDS_ON_PYTHON): build-%: build-python |
| $(DC) build $* |
| # The dependents of lint image don't build anything |
| $(DEPENDS_ON_LINT): build-%: build-lint |
| |
| # panda master is a special case due to --no-cache |
| build-pandas-master: build-python |
| $(DC) build --no-cache pandas-master |
| |
| run-%: build-% |
| $(DC) run --rm $* |
| |
| # Trick to get `service` expand to `run-service` |
| $(SERVICES): % : run-% |