forked from Kreyren/Zernit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
132 lines (98 loc) · 3.64 KB
/
Makefile
File metadata and controls
132 lines (98 loc) · 3.64 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
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
# FIXME: in-code docs needed
# FIXME: Windows doesn't support makefiles natively -> if you have a better method then please MR it or make an issue
## Syntax capture ##
all:
@ printf '%s\n' "Unknown option '$1' parsed in target all"
@ exit 2
## BUILD ##
# All build targets are expected in 'build/build-LANG' where 'LANG' is the unique identifier of the language used
# FIXME: Replace 'exit 1' with helpful messages
build: build-rustlang build-clang-c build-gcc-c build-gcc-ccp build-clang build-brainfuck build-python build-vlang build-golang
@ printf 'WARN: %s\n' "You are abould to build all targets on multilang project"
# FIXME: Build in '$repodir/build/build-rustlang' instead of '$repodir/target' for multilang support
build-rustlang:
@ cargo build --verbose
# FIXME: Add logic
build-clang-c:
@ # Make a build directory
@ [ ! -d build ] && { mkdir build || exit 1 ;} || exit 0
@ [ ! -d build/build-clang-c ] && { mkdir build/build-clang-c || exit 1 ;} || exit 0
@ # Compilation
@ [ ! -f build/build-clang-c/zernit-clang-c ] && { clang src/bin/main.c -o build/build-clang-c/zernit-clang-c || exit 1 ;} || exit 0
@ printf '%s\n' "Compilation of target for clang-c finished"
build-gcc-c:
@ # Make a build directory
@ [ ! -d build ] && { mkdir build || exit 1 ;} || exit 0
@ [ ! -d build/target-gcc-c ] && { mkdir build/build-gcc-c || exit 1 ;} || exit 0
@ # Compilation
@ [ ! -f build/build-gcc-c/zernit-gcc-c ] && { gcc src/bin/main.c -o build/build-gcc-c/zernit-gcc-c || exit 1 ;} || exit 0
@ printf '%s\n' "Compilation of target for gcc-c finished"
# FIXME: Replace 'exit 1' with helpful messages
build-gcc-ccp:
@ # Make a build directory
@ [ ! -d build ] && { mkdir build || exit 1 ;}
@ [ ! -d build/target-gcc ] && { mkdir build/build-gcc || exit 1 ;}
@ # Compilation
@ [ ! -f build/build-gcc ] && { gcc src/bin/main.c -o build/build-gcc/gcc-zernit || exit 1 ;}
@ printf '%s\n' "Compilation of target for gcc finished"
build-clang-ccp:
@ printf 'FIXME: %s\n' "translate zernit in clang"
@ exit 1
build-brainfuck:
@ printf 'FIXME: %s\n' "translate zernit in brainfuck"
@ exit 1
# FIXME: requires python3.6+ and pip3
build-python:
@ pip3 install -r requirements.txt
build-vlang:
@ [ ! -d build ] && mkdir build
@ [ ! -d build/build-vlang ] && mkdir build/build-vlang
@ /opt/vlang/v -o build/build-vlang/zernit-vlang src/bin/main.v
build-golang:
@ [ ! -d build ] && mkdir build
@ [ ! -d build/build-golang ] && mkdir build/build-golang
@ go build -o build/build-golang/zernit-golang src/bin/main.go
## CHECK/TESTS ##
check:
@ printf 'FIXME: %s\n' "Check all targets if executed"
@ exit 1
check-gcc-c:
@ printf 'FIXME: %s\n' "Add tests for gc"
@ exit 1
check-clang-c:
@ printf 'FIXME: %s\n' "Add tests for gcc"
@ exit 1
check-gcc-ccp:
@ printf 'FIXME: %s\n' "Add tests for clang"
@ exit 1
check-python:
@ printf 'FIXME: %s\n' "Add tests for python"
@ exit 1
check-rustlang:
@ printf 'FIXME: %s\n' "Add tests for rustlang"
@ exit 1
check-brainfuck:
@ printf 'FIXME: %s\n' "Add tests for brainfuck"
@ exit 1
check-shell:
@ printf 'FIXME: %s\n' "Add tests for shell"
@ exit 1
check-bash:
@ printf 'FIXME: %s\n' "Add tests for bash"
@ exit 1
check-vlang:
@ printf 'FIXME: %s\n' "Add tests for vlang"
@ exit 1
## BENCHES ##
# FIXME: Run all benches if this is executed
bench: bench-rustlang
# FIXME: Run vendor and
bench-rustlang:
@ cargo bench
## CLEAN ##
clean: clean-vendor clean-benches
@ [ -d build ] && { rm -rf build || exit 1 ;} || exit 0
@ printf '%s\n' "Build directory has been cleaned"
clean-vendor:
@ # FIXME: Output helpful message if directory doesn't exists
@ [ -d vendor ] && { rm -rf vendor || exit 1 ;} || exit 0