5 obj_files = sys.argv[1:]
7 defined = dict((x,set([]))
for x
in obj_files)
8 undefined = dict((x,set([]))
for x
in obj_files)
9 nm_re = re.compile(
"[0-9a-fA-F]*\s*([BCDRTU])\s+([A-Za-z_][A-Za-z_0-9]*)\s*")
10 def nm_match(x):
return ( nm_re.match(line)
for line
in os.popen(
'nm -g '+x) )
12 if m.group(1)==
'U': undefined[x].add(m.group(2))
13 else: defined[x].add(m.group(2))
17 v = [], [x
for x
in seq], set(x
for x
in seq)
18 while len(v[1]): [(v[1].append(y),v[2].add(y))
for y
in
19 f((
lambda x: (v[0].append(x),x)[1])(v[1].pop()))
if not y
in v[2]]
24 if not needs.has_key(x):
25 needs[x]=[y
for y
in obj_files
if len(defined[y]&undefined[x])]
30 print x,
'depends on',reduce((
lambda a,b: a+
" "+b),deps[x],
"")
33 results = [ os.path.splitext(x)[0]
for x
in obj_files
if 'main' in defined[x] ]
34 print "RESULTS="+reduce((
lambda a,b: a+
" "+b),results,
"")
39 if "XOpenDisplay" in undefined[x]:
return True
44 if not (x+
'.o')
in objs: objs.append(x+
'.o')
45 sobjs = reduce((
lambda a,b: a+
" "+b),objs,
"")
47 print x+
":"+sobjs+
" ; @echo LINK $@; $(LINKCMD) $^ -lX11 -o $@"
49 print x+
":"+sobjs+
" ; @echo LINK $@; $(LINKCMD) $^ -o $@"