92 lines
1.6 KiB
Makefile
92 lines
1.6 KiB
Makefile
PROGRAMS=justnukeit
|
|
|
|
justnukeit_OBJS= \
|
|
Position \
|
|
Timeline \
|
|
Menu \
|
|
Level \
|
|
Player \
|
|
Joystick \
|
|
Keyboard \
|
|
Mouse \
|
|
Game \
|
|
main
|
|
|
|
justnukeit_INCS=sdl
|
|
justnukeit_LIBS=graphics unix threads bigarray sdl sdlloader sdlttf
|
|
|
|
MLI=$(wildcard *.mli)
|
|
ML=$(wildcard *.ml)
|
|
|
|
CMI=$(patsubst %.mli,%.cmi,$(MLI))
|
|
CMO=$(patsubst %.ml,%.cmo,$(ML))
|
|
CMX=$(patsubst %.ml,%.cmx,$(ML))
|
|
|
|
OCAMLDEP=ocamldep
|
|
OCAMLOPT=ocamlopt
|
|
OCAMLC=ocamlc
|
|
|
|
INCS=-I +sdl
|
|
LIBS=-ccopt -L+sdl
|
|
OPTS=-w A -g -thread $(INCS) $(LIBS)
|
|
|
|
define PROGRAM_template
|
|
ALL_OBJS += $($(1)_OBJS)
|
|
$(1): $$($(1)_OBJS:=.cmx)
|
|
@echo -n -e "\x1B[31;1m"
|
|
@echo "[L] $(1)"
|
|
@echo -n -e "\x1B[0m"
|
|
$(OCAMLOPT) $(OPTS) $($(1)_LIBS:=.cmxa) $($(1)_OBJS:=.cmx) -o $(1)
|
|
@echo ""
|
|
endef
|
|
|
|
$(foreach prog,$(PROGRAMS),$(eval $(call PROGRAM_template,$(prog))))
|
|
|
|
.PHONY: all
|
|
all: $(PROGRAMS)
|
|
|
|
doc:
|
|
ocamldoc $(INCS) -d doc -html $(ML) $(MLI)
|
|
|
|
%.cmi: %.mli
|
|
@echo -n -e "\x1B[31;1m"
|
|
@echo "[I] $<"
|
|
@echo -n -e "\x1B[0m"
|
|
$(OCAMLOPT) $(OPTS) -i $<
|
|
$(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) $(OPTS) -i $<
|
|
$(OCAMLC) $(OPTS) -c $<
|
|
echo ""
|
|
|
|
%.cmo %.cmi: %.ml
|
|
@echo -n -e "\x1B[31;1m"
|
|
@echo "[O] $<"
|
|
@echo -n -e "\x1B[0m"
|
|
$(OCAMLC) $(OPTS) -i $<
|
|
$(OCAMLC) $(OPTS) -c $<
|
|
echo ""
|
|
|
|
clean:
|
|
rm -f $(PROGRAMS) *~ *.cm* *.o *.a *.so .depend *.cmxa *.cma
|
|
|
|
.depend: $(ML) $(MLI)
|
|
$(OCAMLDEP) $(ML) $(MLI) > .depend
|
|
@echo ""
|
|
|
|
|
|
.SUFFIXES:
|
|
|
|
-include .depend
|
|
|