forked from grand-mother/grand
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
69 lines (53 loc) · 1.93 KB
/
Makefile
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
PREFIX= $(PWD)
BUILD_TYPE= release
PYTHON= $(PWD)/bin/python
INSTALL_X= install -m 0755
INSTALL_F= install -m 0644
INSTALL_D= install -d
BUILD_DIR= $(PWD)/build-$(BUILD_TYPE)
ifeq ($(BUILD_TYPE), release)
CFLAGS+= -O3
else ifeq ($(BUILD_TYPE), debug)
CFLAGS+= "-O0 -g3"
else
$(error invalid BUILD_TYPE $(BUILD_TYPE))
endif
SOEXT= so
SYS = $(shell uname -s)
ifeq ($(SYS), Darwin)
SOEXT= dylib
endif
LIBS= turtle gull
GULL_DATA= IGRF13.COF WMM2020.COF
INSTALL_LIBS= $(addprefix $(PREFIX)/lib/lib,$(addsuffix .$(SOEXT),$(LIBS)))
INSTALL_DATA= $(addprefix $(PREFIX)/grand/libs/data/gull/,$(GULL_DATA))
BUILD_LIBS= $(BUILD_DIR)/grand/_core.abi3.so
BUILD_LIBS+= $(addprefix $(BUILD_DIR)/lib/lib,$(addsuffix .$(SOEXT),$(LIBS)))
MODULES= $(PREFIX)/grand/_core.abi3.so
MODULES+= $(addprefix $(PREFIX)/,$(shell find grand -name *.py 2>/dev/null))
$(BUILD_LIBS) $(addprefix $(BUILD_DIR)/src/gull/share/data/,$(GULL_DATA)): FORCE
@echo "==== Building $$(basename $@) module ===="
@$(MAKE) -C src BUILD_DIR=$(BUILD_DIR) PYTHON=$(PYTHON) CFLAGS=$(CFLAGS)
@echo "==== Successfully built $$(basename $@) module ===="
FORCE:
install: $(INSTALL_LIBS) $(MODULES) $(INSTALL_DATA)
@echo "==== Successfully installed libraries and modules ===="
$(PREFIX)/%.so: $(BUILD_DIR)/%.so
@echo "INSTALL $$(basename $@)" && \
$(INSTALL_D) $(shell dirname $@) && \
$(INSTALL_X) $^ $@
$(PREFIX)/%.dylib: $(BUILD_DIR)/%.dylib
@echo "INSTALL $$(basename $@)" && \
$(INSTALL_D) $(shell dirname $@) && \
$(INSTALL_X) $^ $@
$(PREFIX)/%.py: %.py
@echo "INSTALL $$(basename $@)" && \
$(INSTALL_D) $(shell dirname $@) && \
$(INSTALL_X) $^ $@
$(PREFIX)/grand/libs/data/gull/%: $(BUILD_DIR)/src/gull/share/data/%
@echo "INSTALL $$(basename $@)" && \
$(INSTALL_D) $(shell dirname $@) && \
$(INSTALL_F) $^ $@
clean:
@$(RM) -r grand/version.py grand/*.so lib/*.$(SOEXT) grand/libs/data build* dist* *.egg-info
@find . | grep -E "(__pycache__|\.pyc|\.pyo)" | xargs rm -rf