summaryrefslogtreecommitdiff
path: root/rules.ninja
blob: c1fe30c10b3d90a47eaa8c3bba9a0500066cbf7b (plain)
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
rule gen
  command = lua $basedir/setup.lua $gendir
  generator = 1

# toolchain
rule cc
  command = $cc -MD -MF $out.d $cflags -c -o $out $in
  depfile = $out.d
  deps = gcc
  description = 	CC	$out

rule cpp
  command = $cc -MD -MF $out.d $cflags -E -P -o $out $in
  depfile = $out.d
  deps = gcc
  description = 	CPP	$out

rule as
  command = $as $asflags -o $out $in
  description = 	AS	$out

rule link
  command = $cc $ldflags -o $out $in $ldlibs
  description = 	LINK	$out

rule ar
  command = rm -f $out && $ar crs $out $in
  description = 	AR	$out

rule ld
  command = $ld -o $out $in
  description = 	LD	$out

rule objcopy
  command = $objcopy $objcopyflags $in $out

rule rsp
  command = ln -f $rspfile $out
  description = 	RSP	$out
  rspfile = $out.tmp
  rspfile_content = $in_newline

# TODO: Enable dependency-tracking for nasm when
# https://bugzilla.nasm.us/show_bug.cgi?id=3392280#c6 is fixed.
rule nasm
  command = nasm $nasmflags -o $out $in

rule mc
  command = $mc $mcflags -o $out $in

rule muse
  command = muse $museflags -o $out $in

rule probe
  command = sh $basedir/scripts/probe.sh $var $out $cc $cflags $ldflags -o /dev/null -x c $in

rule probe-size
  command = sh $basedir/scripts/probe-size.sh $var $out $cc $cflags -c -o /dev/null -x c $in

# misc tools
rule touch
  command = touch $out

rule empty
  command = >$out
  description = 	EMPTY	$out

rule copy
  command = ln -f $in $out
  description = 	COPY	$out

rule cat
  command = cat $in >$out

rule gzip
  command = gzip -c -9 -n <$in >$out
  description = 	GZIP	$out

rule yacc
  command = yacc $yaccflags $in
  description = 	YACC	$out

rule sed
  command = sed $expr $in >$out
  description = 	SED	$out

rule awk
  command = awk $expr $in >$out
  description = 	AWK	$out

rule grep
  command = grep $expr $in >$out

rule printf
  command = printf $args >$out

rule tic
  command = tic $ticflags $in

rule wayland-proto
  command = wayland-scanner $type <$in >$out

rule git-hash
  command = sh $basedir/scripts/hash.sh $repo $args $in >$out
  description = 	HASH	$args

rule git-tree
  command = sh $basedir/scripts/tree.sh $repo $repo_tag $in $out
  description = 	TREE	$out
  restat = 1

rule git-commit
  command = sh $basedir/scripts/commit.sh $repo $repo_branch $repo_tag $out

rule git-archive
  command = git -C $repo archive -o $$PWD/$out $repo_tag

rule git-init
  command = git init $repo_flags $repo && touch $out

rule fspec-hash
  command = $builddir/pkg/fspec-sync/host/fspec-hash <$in >$out

rule fetch
  command = cd $basedir && sh $$OLDPWD/$script $gendir && touch $$OLDPWD/$out
  description = 	FETCH	$gendir
  restat = 1
  generator = 1
  pool = console