forked from uberspark/uberspark
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
142 lines (100 loc) · 4.13 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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
######
# top-level Makefile for uberSpark
# author: amit vasudevan ([email protected])
######
###### paths
export USPARK_SRCROOTDIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
export USPARK_BUILDTRUSSESDIR := $(USPARK_SRCROOTDIR)/build-trusses
export USPARK_SRCDIR = $(USPARK_SRCROOTDIR)/src-nextgen
export USPARK_DOCSDIR = $(USPARK_SRCROOTDIR)/docs
export USPARK_INSTALLPREPDIR = $(USPARK_SRCROOTDIR)/_install
ROOT_DIR ?= ~
export USPARK_NAMESPACEROOTDIR := $(ROOT_DIR)/uberspark
export USPARK_INSTALL_BINDIR := /usr/bin
export SUDO := sudo
###### helper functions
define docker_run
docker run --rm -i \
-e D_CMD="$(1)" \
-e D_CMDARGS="$(2)" \
-e MAKE="make" \
-v $(USPARK_SRCROOTDIR):/home/docker/uberspark \
-t hypcode/uberspark-build-x86_64
find -type f -exec touch {} +
endef
###### default target
.PHONY: all
all: build_bootstrap docs_html frontend
@echo uberspark toolkit build success!
###### build bootstrap target
.PHONY: build_bootstrap
build_bootstrap: generate_buildtruss build_sdefpp
### shared definitions pre-processing tool
.PHONY: build_sdefpp
build_sdefpp: generate_buildtruss
$(call docker_run,make -f sdefpp.mk, -w all)
.PHONY: dbgrun_sdefpp
dbgrun_sdefpp: build_sdefpp
$(call docker_run,make -f sdefpp.mk, -w dbgrun)
###### build truss generation targets
### generate x86_64 build truss
.PHONY: buildcontainer-x86_64
buildcontainer-x86_64:
@echo building x86_64 build truss...
docker build --rm -f $(USPARK_BUILDTRUSSESDIR)/build-x86_64.Dockerfile -t hypcode/uberspark-build-x86_64 $(USPARK_BUILDTRUSSESDIR)/.
@echo successfully built x86_64 build truss!
### arch independent build truss target
.PHONY: generate_buildtruss
generate_buildtruss: buildcontainer-x86_64
###### documentation targets
.PHONY: docs_html
docs_html: build_bootstrap
$(call docker_run,make -f build-docs.mk, -w docs_html)
.PHONY: docs_pdf
docs_pdf: build_bootstrap
$(call docker_run,make -f build-docs.mk, -w docs_pdf)
###### libraries targets
### build libraries
.PHONY: libs
libs: build_bootstrap
$(call docker_run,make -f build-libs.mk, -w all)
###### frontend build targets
.PHONY: frontend
frontend: build_bootstrap
$(call docker_run,make -f build-frontend.mk, -w all)
###### installation targets
# install tool binary to /usr/bin and namespace to ~/uberspark/
.PHONY: install
install: build_bootstrap
$(call docker_run,make -f install.mk, -w all)
@echo Populating namespace within: $(USPARK_NAMESPACEROOTDIR)...
rm -rf $(USPARK_NAMESPACEROOTDIR)
mkdir -p $(USPARK_NAMESPACEROOTDIR)
mkdir -p $(USPARK_NAMESPACEROOTDIR)/docs
mkdir -p $(USPARK_NAMESPACEROOTDIR)/bridges
mkdir -p $(USPARK_NAMESPACEROOTDIR)/platforms
mkdir -p $(USPARK_NAMESPACEROOTDIR)/staging_golden/uberspark
mkdir -p $(USPARK_NAMESPACEROOTDIR)/staging
mkdir -p $(USPARK_NAMESPACEROOTDIR)/staging/default/uberspark
cp -Rf $(USPARK_INSTALLPREPDIR)/docs/* $(USPARK_NAMESPACEROOTDIR)/docs/
cp -Rf $(USPARK_INSTALLPREPDIR)/bridges/* $(USPARK_NAMESPACEROOTDIR)/bridges/
cp -Rf $(USPARK_INSTALLPREPDIR)/platforms/* $(USPARK_NAMESPACEROOTDIR)/platforms/
cp -Rf $(USPARK_INSTALLPREPDIR)/staging/* $(USPARK_NAMESPACEROOTDIR)/staging_golden/uberspark
cp -Rf $(USPARK_INSTALLPREPDIR)/staging/* $(USPARK_NAMESPACEROOTDIR)/staging/default/uberspark
ln -sf $(USPARK_NAMESPACEROOTDIR)/staging/default $(USPARK_NAMESPACEROOTDIR)/staging/current
@echo Populated install namespace successfully
@echo Installing binary to $(USPARK_INSTALL_BINDIR)...
@echo Note: You may need to enter your sudo password.
$(SUDO) cp -f $(USPARK_INSTALLPREPDIR)/bin/uberspark $(USPARK_INSTALL_BINDIR)/uberspark
@echo Installation success! Use uberspark --version to check.
###### (debug) shell target
.PHONY: dbgshell
dbgshell: generate_buildtruss
$(call docker_run,/bin/bash,)
###### cleanup targets
.PHONY: clean
clean: generate_buildtruss
$(call docker_run,make -f sdefpp.mk, -w clean)
$(call docker_run,make -f build-docs.mk, -w docs_clean)
$(call docker_run,make -f build-frontend.mk, -w clean)
$(call docker_run,make -f install.mk, -w clean)