summaryrefslogtreecommitdiff
path: root/scripts/mkc_get_deps.in
blob: 74c8092003b521c0d66728120782b36f59622a3e (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
#!@AWK@ -f

# Usage: mkc_get_deps
# $1 -- project name
# ENVIRON ["AXCIENT_LIBDEPS"] -- dep1:prj1 dep2:prj2 ...

function print_all_deps (prj,             i,next_prj){
	if (prj in processed)
		return

	processed [prj]=1

	for (i=1; i <= count [prj]; ++i){
		next_prj = graph[prj, i]
		print_all_deps(next_prj)
	}

	if (topprj != prj)
		result [++result_sz] = prj
}

BEGIN {
	topprj = ARGV [1]
	if (!topprj)
		exit(10)

	cnt = split(ENVIRON ["AXCIENT_LIBDEPS"], deps, / +|:/)
	if (int(cnt/2)*2 != cnt)
		exit(11)

	for (i=1; i <= cnt; i += 2){
		from = deps [i]
		to   = deps [i+1]
		graph[to, ++count [to]] = from
	}

	print_all_deps(topprj)

	for (i=result_sz; i >= 1; --i)
		print result [i]

	print "" # for bmake
}