e87367d22f
Previously, the dependency graph was messed up; the copy target was a dependency of the root target, making it run concurrently when a -j8 flag is passed to make. This causes make to copy the build files before they are even built. With this change, each component copies its own files after building.
98 lines
2.7 KiB
Makefile
98 lines
2.7 KiB
Makefile
SHELL = bash
|
|
|
|
BUILD_DIR = build
|
|
DEVEL_BUILD_DIR = $(BUILD_DIR)/devel
|
|
PROD_BUILD_DIR = $(BUILD_DIR)/prod
|
|
|
|
FRONTEND_BUILD_DIR = frontend
|
|
FRONTEND_DEVEL_BUILD_DIR = $(FRONTEND_BUILD_DIR)/$(DEVEL_BUILD_DIR)
|
|
FRONTEND_DEVEL_ROOT_DIR = $(DEVEL_BUILD_DIR)
|
|
FRONTEND_PROD_BUILD_DIR = $(FRONTEND_BUILD_DIR)/$(PROD_BUILD_DIR)
|
|
FRONTEND_PROD_ROOT_DIR = $(PROD_BUILD_DIR)
|
|
|
|
API_BUILD_DIR = api
|
|
API_DEVEL_BUILD_DIR = $(API_BUILD_DIR)/$(DEVEL_BUILD_DIR)
|
|
API_DEVEL_ROOT_DIR = $(DEVEL_BUILD_DIR)
|
|
API_PROD_BUILD_DIR = $(API_BUILD_DIR)/$(PROD_BUILD_DIR)
|
|
API_PROD_ROOT_DIR = $(PROD_BUILD_DIR)
|
|
|
|
TEMPLATES_BUILD_DIR = templates
|
|
TEMPLATES_DEVEL_BUILD_DIR = $(TEMPLATES_BUILD_DIR)/$(DEVEL_BUILD_DIR)
|
|
TEMPLATES_DEVEL_ROOT_DIR = $(DEVEL_BUILD_DIR)
|
|
TEMPLATES_PROD_BUILD_DIR = $(TEMPLATES_BUILD_DIR)/$(PROD_BUILD_DIR)
|
|
TEMPLATES_PROD_ROOT_DIR = $(PROD_BUILD_DIR)
|
|
|
|
DB_BUILD_DIR = db
|
|
DB_DEVEL_BUILD_DIR = $(DB_BUILD_DIR)/$(DEVEL_BUILD_DIR)
|
|
DB_DEVEL_ROOT_DIR = $(DEVEL_BUILD_DIR)/db
|
|
DB_PROD_BUILD_DIR = $(DB_BUILD_DIR)/$(PROD_BUILD_DIR)
|
|
DB_PROD_ROOT_DIR = $(PROD_BUILD_DIR)/db
|
|
|
|
devel: devel-frontend devel-api devel-templates devel-db
|
|
|
|
prod: prod-frontend prod-api prod-templates prod-db
|
|
|
|
test: api
|
|
|
|
# TODO: This can probably be written better: instead of explicitly defining
|
|
# each target subdirectory, define them at the top and automatically do stuff.
|
|
|
|
.PHONY: frontend
|
|
frontend:
|
|
cd frontend && $(MAKE) $(MAKECMDGOALS)
|
|
|
|
.PHONY: api
|
|
api:
|
|
cd api && $(MAKE) $(MAKECMDGOALS)
|
|
|
|
.PHONY: templates
|
|
templates:
|
|
cd templates && $(MAKE) $(MAKECMDGOALS)
|
|
|
|
.PHONY: db
|
|
db:
|
|
cd db && $(MAKE) $(MAKECMDGOALS)
|
|
|
|
devel-frontend: frontend
|
|
cp -r $(FRONTEND_DEVEL_BUILD_DIR)/* $(FRONTEND_DEVEL_ROOT_DIR)
|
|
|
|
devel-api: api
|
|
cp -r $(API_DEVEL_BUILD_DIR)/* $(API_DEVEL_ROOT_DIR)
|
|
|
|
devel-templates: templates
|
|
cp -r $(TEMPLATES_DEVEL_BUILD_DIR)/* $(TEMPLATES_DEVEL_ROOT_DIR)
|
|
|
|
devel-db: db
|
|
cp -r $(DB_DEVEL_BUILD_DIR)/* $(DB_DEVEL_ROOT_DIR)
|
|
|
|
prod-frontend: frontend
|
|
cp -r $(FRONTEND_PROD_BUILD_DIR)/* $(FRONTEND_PROD_ROOT_DIR)
|
|
|
|
prod-api: api
|
|
cp -r $(API_PROD_BUILD_DIR)/* $(API_PROD_ROOT_DIR)
|
|
|
|
prod-templates: templates
|
|
cp -r $(TEMPLATES_PROD_BUILD_DIR)/* $(TEMPLATES_PROD_ROOT_DIR)
|
|
|
|
prod-db: db
|
|
cp -r $(DB_PROD_BUILD_DIR)/* $(DB_PROD_ROOT_DIR)
|
|
|
|
clean: clean-root clean-frontend clean-api clean-templates clean-db
|
|
|
|
clean-root:
|
|
rm -rf build
|
|
|
|
clean-frontend:
|
|
cd frontend && $(MAKE) $(MAKECMDGOALS)
|
|
|
|
clean-api:
|
|
cd api && $(MAKE) $(MAKECMDGOALS)
|
|
|
|
clean-templates:
|
|
cd templates && $(MAKE) $(MAKECMDGOALS)
|
|
|
|
clean-db:
|
|
cd db && $(MAKE) $(MAKECMDGOALS)
|
|
|
|
$(shell mkdir -p $(FRONTEND_DEVEL_ROOT_DIR) $(API_DEVEL_ROOT_DIR) $(TEMPLATES_DEVEL_ROOT_DIR) $(FRONTEND_PROD_ROOT_DIR) $(API_PROD_ROOT_DIR) $(TEMPLATES_DEVEL_ROOT_DIR))
|