ifndef OCAMLC
OCAMLC=ocamlc
endif
ifndef OCAMLOPT
OCAMLOPT=ocamlopt
endif
ifndef CAMLP4O
CAMLP4O=camlp4o
endif
ifndef PREFIX
PREFIX=/usr/local
endif
INCLUDES=-I +labltk
CAMLP4=-pp $(CAMLP4O)
OCAMLDEP=ocamldep
CAMLLIBS=unix.cma str.cma labltk.cma # libjpf.cma mylibs.cma
OCAMLFLAGS=$(INCLUDES) $(CAMLP4) -g -custom $(CAMLLIBS) -cclib -lunix
OCAMLOPTFLAGS=$(INCLUDES) $(CAMLP4) $(CAMLLIBS:.cma=.cmxa) -inline 50 -cclib -lunix
ifdef PROFILING
OCAMLC=ocamlcp
OCAMLOPTFLAGS = -p $(INCLUDES) $(CAMLLIBS:.cma=.cmxa) -inline 40 -cclib -lunix
endif
OBJS = augSet.cmx augMap.cmx mTimer.cmx common.cmx lstrings.cmx options.cmx \
constants.cmx fqueue.cmx state.cmx saveState.cmx \
rk4.cmx fast_physics.cmx \
collision.cmx physics.cmx help.cmx display.cmx
VERSION := $(shell cat VERSION)
PREFIX = planets-$(VERSION)
FILES := $(shell sed -e s/.*/$(PREFIX)\\/\&/ FILES)
BINFILES := $(shell sed -e s/.*/$(PREFIX)\\/\&/ BINFILES)
all: planets planets.1.gz
install: planets.1.gz
if [ -x planets ]; then install planets $(PREFIX)/bin/planets; fi
if [ -x planets.bc ]; then install planets.bc $(PREFIX)/bin/planets; fi
if [ -x $(PREFIX)/share/applications ]; \
then install planets.desktop $(PREFIX)/share/applications; fi
if [ -x $(PREFIX)/share/applnk/Games ]; \
then install planets.desktop $(PREFIX)/share/applnk/Games; fi
if [ -x $(PREFIX)/share/pixmaps ]; \
then install planets.png $(PREFIX)/share/pixmaps; fi
if [ -x $(PREFIX)/share/man/man1 ]; \
then install planets.1.gz $(PREFIX)/share/man/man1; fi
planets.1.gz: planets.1
gzip -c planets.1 > planets.1.gz
rpm: planets.spec src
rpmbuild -ta ../planets-$(VERSION).tgz
src: planets.spec
if [ ! -x planets-$(VERSION) ]; then ln -s . planets-$(VERSION); fi
tar cfz ../planets-$(VERSION).tgz $(FILES)
rm planets-$(VERSION)
w32: planets
cp /usr/bin/cygwin1.dll .
zip -r ../planets.zip planets.exe cygwin1.dll getting_started.html \
README.txt KEYBINDINGS.txt LICENSE CHANGES BUGS CREDITS \
COPYING VERSION uni.*
rm cygwin1.dll
bin: all
if [ ! -x planets-$(VERSION) ]; then ln -s . planets-$(VERSION); fi
tar cfz ../planets-x86_Linux-$(VERSION).tgz $(BINFILES)
rm planets-$(VERSION)
planets: $(OBJS)
$(OCAMLOPT) -o planets $(OCAMLOPTFLAGS) $^
planets.bc: $(OBJS:.cmx=.cmo)
$(OCAMLC) -o planets.bc $(OCAMLFLAGS) $^
test: test.ml
$(OCAMLC) -o test $(OCAMLFLAGS) $^
sqrt: sqrt.ml
$(OCAMLOPT) -o sqrt $(OCAMLOPTFLAGS) $^
collision: constants.cmx options.cmx fqueue.cmx state.cmx collision.cmx
$(OCAMLOPT) -o collision $(OCAMLOPTFLAGS) $^
convert: convert.ml
$(OCAMLC) -o convert $(OCAMLFLAGS) $^
common.ml: common.src.ml VERSION
sed s/__VERSION__/$(VERSION)/ < common.src.ml > common.ml
planets.spec: planets.src.spec VERSION
sed s/__VERSION__/$(VERSION)/ < planets.src.spec > planets.spec
# Common rules
.SUFFIXES: .ml .mli .cmo .cmi .cmx
.ml.cmo:
$(OCAMLC) $(OCAMLFLAGS) -c $<
.mli.cmi:
$(OCAMLC) $(OCAMLFLAGS) -c $<
.ml.cmx:
$(OCAMLOPT) $(OCAMLOPTFLAGS) -c $<
# Clean up
clean:
rm -f *.[0-9].gz
rm -f *.exe
rm -f *.obj
rm -f *.o
rm -f *.cm[iox]
rm -f planets
rm -f planets.bc
# Dependencies
dep:
$(OCAMLDEP) $(CAMLP4) $(INCLUDES) *.ml *.mli > .depend
include .depend
syntax highlighted by Code2HTML, v. 0.9.1