[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
topological sort
From: |
Stefan Monnier |
Subject: |
topological sort |
Date: |
Sun, 13 May 2012 22:36:39 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.1.50 (gnu/linux) |
Some compilers/linkers care about the order in which the files are given
to them. I currently have a build rule which takes a .depend file,
massages it with a sed script and then passes it to `tsort', but I feel
silly: `make' already has those dependencies at hand, and it knows very
well how to do a topological sort, so it would make a lot more sense if
`make' could do that sorting for me.
Does anyone have an idea how to do it?
For reference, see appended the heart of my current hack.
Stefan
# OCAMLC wants its object files in the right order so the modules get
# initialized correctly. Ideally `make' should do this job (it already has
# the dependency info and knows all too weel how to do a topological sort),
# but I don't know how to get `make' to do what I want, so I used some `sed'
# magic to massage the .depend in a form that `tsort' can take.
ORDERED_OBJECTS = $(shell sed -e '/\([^ :]*\.cmo\):/{ : start; s/^\([^ :]*\):
*\([^ :\\][^ :\\]*\)/\2 \1\n\1:/; t loop2; /\\$$/{; N; s/\\.//; b start}; d; :
loop2; P; D}; d' .depend | tsort)
foo: $(ORDERED_OBJECTS) # $(FILES:.ml=.cmo)
$(OCAMLC) -o $@ $(ORDERED_OBJECTS)
depend:
$(OCAMLDEP) $(FILES) > .depend
-include .depend
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- topological sort,
Stefan Monnier <=