Makefiles: now using generic OCamlMakefile.

This commit is contained in:
Glenn Y. Rolland 2008-02-18 22:55:00 +01:00
parent 9e602e666a
commit 5735439d1a
3 changed files with 1320 additions and 74 deletions

View file

@ -1,76 +1,14 @@
PROGRAMS=justnukeit
RESULT=justnukeit
SOURCES=\
Position.ml \
Maze.ml \
Player.ml \
main.ml
LIBS=bigarray sdl unix
INCDIRS=+sdl
LIBDIRS=+sdl
OCAMLFLAGS=-w A -g -thread
justnukeit_OBJS=Position.cmx Maze.cmx Player.cmx main.cmx
justnukeit_LIBS=graphics.cmxa unix.cmxa threads.cmxa
MODULES=$(patsubst %.mli,%,$(wildcard *.mli)) $(patsubst %.ml,%,$(wildcard *.ml))
CMI=$(patsubst %.ml,%.cmi,$(MODULES:=.ml))
CMO=$(patsubst %.ml,%.cmo,$(MODULES:=.ml))
CMX=$(patsubst %.ml,%.cmx,$(MODULES:=.ml))
LIB=
OCAMLDEP=ocamldep
OCAMLOPT=ocamlopt
OCAMLC=ocamlc
OPTS=-w A -g -thread
define PROGRAM_template
ALL_OBJS += $$($(1)_OBJS)
$(1): $$($(1)_OBJS)
@echo -n -e "\x1B[31;1m"
@echo "[L] $@"
@echo -n -e "\x1B[0m"
$(OCAMLOPT) $(OPTS) $($(1)_LIBS) $($(1)_OBJS) -o $(1)
@echo ""
endef
$(foreach prog,$(PROGRAMS),$(eval $(call PROGRAM_template,$(prog))))
.PHONY: all
all: $(PROGRAMS)
%.cmi: %.mli
@echo -n -e "\x1B[31;1m"
@echo "[I] $<"
@echo -n -e "\x1B[0m"
@$(OCAMLC) -i $<
#@$(OCAMLC) $(OPTS) -c $<
@$(OCAMLOPT) $(OPTS) -c $<
@echo ""
%.cmx: %.ml
@echo -n -e "\x1B[31;1m"
@echo "[C] $<"
@echo -n -e "\x1B[0m"
@$(OCAMLOPT) $(OPTS) -i $<
@$(OCAMLOPT) $(OPTS) -c $<
@echo ""
%.cmo %.cmi: %.ml %.cmi %.mli
@echo "[O] $<"
@$(OCAMLC) -i $<
@$(OCAMLC) $(OPTS) -c $<
echo ""
%.cmo %.cmi: %.ml
@echo -n -e "\x1B[31;1m"
@echo "[O] $<"
@echo -n -e "\x1B[0m"
@$(OCAMLC) -i $<
@$(OCAMLC) $(OPTS) -c $<
echo ""
clean:
rm -f $(PROGRAMS) *~ *.cm* *.o *.a *.so .depend *.cmxa *.cma
.depend: $(MODULES:=.ml)
$(OCAMLDEP) $(MODULES:=.ml) $(MODULES:=.mli) > .depend
@echo ""
.SUFFIXES:
-include .depend
all: native-code
-include OCamlMakefile

77
Makefile.old Normal file
View file

@ -0,0 +1,77 @@
PROGRAMS=justnukeit
justnukeit_OBJS=Position.cmx Maze.cmx Player.cmx main.cmx
justnukeit_LIBS=graphics.cmxa unix.cmxa threads.cmxa bigarray.cmxa sdl.cmxa
MODULES=$(patsubst %.mli,%,$(wildcard *.mli)) $(patsubst %.ml,%,$(wildcard *.ml))
CMI=$(patsubst %.ml,%.cmi,$(MODULES:=.ml))
CMO=$(patsubst %.ml,%.cmo,$(MODULES:=.ml))
CMX=$(patsubst %.ml,%.cmx,$(MODULES:=.ml))
LIB=
INCDIRS=+sdl
OCAMLDEP=ocamlfind ocamldep
OCAMLOPT=ocamlfind ocamlopt
OCAMLC=ocamlfind ocamlc
OPTS=-w A -g -thread -Isdl
define PROGRAM_template
ALL_OBJS += $$($(1)_OBJS)
$(1): $$($(1)_OBJS)
@echo -n -e "\x1B[31;1m"
@echo "[L] $@"
@echo -n -e "\x1B[0m"
$(OCAMLOPT) $(OPTS) $($(1)_LIBS) $($(1)_OBJS) -o $(1)
@echo ""
endef
$(foreach prog,$(PROGRAMS),$(eval $(call PROGRAM_template,$(prog))))
.PHONY: all
all: $(PROGRAMS)
%.cmi: %.mli
@echo -n -e "\x1B[31;1m"
@echo "[I] $<"
@echo -n -e "\x1B[0m"
@$(OCAMLC) -i $<
#@$(OCAMLC) $(OPTS) -c $<
@$(OCAMLOPT) $(OPTS) -c $<
@echo ""
%.cmx: %.ml
@echo -n -e "\x1B[31;1m"
@echo "[C] $<"
@echo -n -e "\x1B[0m"
@$(OCAMLOPT) $(OPTS) -i $<
@$(OCAMLOPT) $(OPTS) -c $<
@echo ""
%.cmo %.cmi: %.ml %.cmi %.mli
@echo "[O] $<"
@$(OCAMLC) -i $<
@$(OCAMLC) $(OPTS) -c $<
echo ""
%.cmo %.cmi: %.ml
@echo -n -e "\x1B[31;1m"
@echo "[O] $<"
@echo -n -e "\x1B[0m"
@$(OCAMLC) -i $<
@$(OCAMLC) $(OPTS) -c $<
echo ""
clean:
rm -f $(PROGRAMS) *~ *.cm* *.o *.a *.so .depend *.cmxa *.cma
.depend: $(MODULES:=.ml)
$(OCAMLDEP) $(MODULES:=.ml) $(MODULES:=.mli) > .depend
@echo ""
.SUFFIXES:
-include .depend

1231
OCamlMakefile Normal file

File diff suppressed because it is too large Load diff