-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
74 lines (63 loc) · 2.22 KB
/
Makefile
File metadata and controls
74 lines (63 loc) · 2.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
PROJECT_SOURCE_DIR ?= $(abspath ./)
PROJECT_NAME ?= $(basename $(PROJECT_SOURCE_DIR))
BUILD_DIR ?= $(PROJECT_SOURCE_DIR)/build
INSTALL_DIR ?= $(BUILD_DIR)/install
NUM_JOB ?= 8
BUILD_TYPE ?= Release
all:
@echo nothing special
clean:
rm -rf $(BUILD_DIR)
force_clean:
docker run --rm -v `pwd`:`pwd` -w `pwd` -it alpine/make make clean
.PHONY: clean force_clean
lint:
pre-commit run -a
lint_install:
pre-commit install
CMAKE_ARGS ?= \
-DCMAKE_INSTALL_PREFIX=$(INSTALL_DIR) \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_BUILD_TYPE=$(BUILD_TYPE)
build:
mkdir -p $(BUILD_DIR) && cd $(BUILD_DIR) && \
cmake $(PROJECT_SOURCE_DIR) $(CMAKE_ARGS) && \
make -j $(NUM_JOB) && make install
.PHONY: build
data_pull:
make -C data pull
data_clean:
make -C data clean
.PHONY: data_pull data_clean
DOCKER_TAG_WINDOWS ?= ghcr.io/cubao/build-env-windows-x64:v0.0.1
DOCKER_TAG_LINUX ?= ghcr.io/cubao/build-env-manylinux2014-x64:v0.0.4
DOCKER_TAG_MACOS ?= ghcr.io/cubao/build-env-macos-arm64:v0.0.1
test_in_win:
docker run --rm -w `pwd` -v `pwd`:`pwd` -v `pwd`/build/win:`pwd`/build -it $(DOCKER_TAG_WINDOWS) bash
test_in_mac:
docker run --rm -w `pwd` -v `pwd`:`pwd` -v `pwd`/build/mac:`pwd`/build -it $(DOCKER_TAG_MACOS) bash
test_in_linux:
docker run --rm -w `pwd` -v `pwd`:`pwd` -v `pwd`/build/linux:`pwd`/build -it $(DOCKER_TAG_LINUX) bash
DEV_CONTAINER_NAME ?= $(USER)_$(subst /,_,$(PROJECT_NAME)____$(PROJECT_SOURCE_DIR))
DEV_CONTAINER_IMAG ?= $(DOCKER_TAG_LINUX)
test_in_dev_container:
docker ps | grep $(DEV_CONTAINER_NAME) \
&& docker exec -it $(DEV_CONTAINER_NAME) bash \
|| docker run --rm --name $(DEV_CONTAINER_NAME) \
--network host --security-opt seccomp=unconfined \
-v `pwd`:`pwd` -w `pwd` -it $(DEV_CONTAINER_IMAG) bash
RED := '\033[31;7m'
NC := '\033[0m'
test: data_pull
@cd $(BUILD_DIR) && for t in $(wildcard $(BUILD_DIR)/bin/test_*); do echo $$t && eval $$t >/dev/null 2>&1 && echo 'ok' || echo $(RED)Not Ok$(NC); done
.PHONY: test
tar.gz:
cd .. && \
tar -cvz --exclude .git -f $(PROJECT_NAME).tar.gz -C $(PROJECT_NAME) `ls $(PROJECT_NAME)` && \
ls -alh $(PROJECT_NAME).tar.gz
.PHONY: tar.gz
# https://stackoverflow.com/a/25817631
echo-% : ; @echo -n $($*)
Echo-% : ; @echo $($*)
ECHO-% : ; @echo $* = $($*)
echo-Tab: ; @echo -n ' '