chiark / gitweb /
Found in crybaby's working tree.
[rocl] / Makefile
1 # Makefile for RIGHT ON COMMAND-LINE
2 #
3 # $Id$
4
5 #----- Configuration stuff --------------------------------------------------
6
7 # --- Compiling and linking ---
8
9 CC = gcc
10 INCLUDES =
11 CFLAGS = \
12         -O2 -g -pedantic -Wall -funroll-loops -fomit-frame-pointer \
13         $(INCLUDES)
14 LD = gcc
15 LDFLAGS = -shared
16
17 # --- Installation ---
18
19 INST =
20 prefix = /usr/local
21 tcllibdir = $(prefix)/lib
22 pkglibdir = $(tcllibdir)/elite
23 bindir = $(prefix)/bin
24
25 INSTALL = install
26 RM = rm
27
28 #----- Main machinery -------------------------------------------------------
29 #
30 # Shouldn't need to fiddle with this stuff.
31
32 PACKAGE = rocl
33 VERSION = 1.1.5
34
35 TCLSCRIPTS = \
36         elite-editor elite-pairs elite-path elite-find elite-map \
37         elite-prices elite-describe elite-reach elite-cmdr elite-salesman \
38         elite-tantalus
39
40 SRCFILES = elite.c vec.c vec.h graph.c
41
42 PKGFILES = elite.so vec.so graph.so elite.tcl
43
44 all: $(PKGFILES) pkgIndex.tcl
45
46 elite.so: elite.o
47         $(LD) $(LDFLAGS) elite.o -o elite.so
48 vec.so: vec.o
49         $(LD) $(LDFLAGS) vec.o -o vec.so
50 graph.so: graph.o vec.so
51         $(LD) $(LDFLAGS) -Wl,-rpath,$(pkglibdir) graph.o vec.so -o graph.so
52 graph.o vec.o: vec.h
53
54 .SUFFIXES: .c .o
55 .c.o:; $(CC) -c $(CFLAGS) -o $@ $<
56
57 pkgIndex.tcl: $(PKGFILES)
58         LD_LIBRARY_PATH=$$(pwd) \
59           echo "pkg_mkIndex -verbose -direct -load Vec . $(PKGFILES) " | \
60           tclsh
61
62 install: all
63         $(INSTALL) -d $(INST)$(bindir) $(INST)$(pkglibdir)
64         $(INSTALL) -m 644 $(PKGFILES) pkgIndex.tcl $(INST)$(pkglibdir)
65         $(INSTALL) -m 755 $(TCLSCRIPTS) $(INST)$(bindir)
66
67 clean:
68         $(RM) -f *.o *.so pkgIndex.tcl
69
70 DISTDIR = $(PACKAGE)-$(VERSION)
71 DISTFILES = \
72         COPYING README Makefile $(SRCFILES) elite.tcl steele.cmdr \
73         elite.def vec.def graph.def $(TCLSCRIPTS) \
74         debian/rules debian/control debian/copyright debian/changelog
75 distdir: $(DISTFILES)
76         $(RM) -rf $(DISTDIR)
77         mkdir $(DISTDIR) $(DISTDIR)/debian
78         for i in $(DISTFILES); do \
79           case $$i in \
80             */*) \
81               dir=$${i%/*}; \
82               up=`echo $$dir | sed 's:[^/]\+:..:g'`; \
83               mkdir -p $(DISTDIR)/$$dir;; \
84             *) dir= up=;; \
85           esac; \
86           ln -s ../$$up/$$i $(DISTDIR)/$$i; \
87         done
88 disttar: distdir
89         tar chofz $(INST)$(DISTDIR).tar.gz $(DISTDIR)
90 distzip: distdir
91         cd $(DISTDIR) && zip -rq ../$(INST)$(DISTDIR).zip .
92 dist: disttar distzip
93         $(RM) -rf $(DISTDIR)
94 distcheck: dist
95         @echo "*** Packing..."
96         $(MAKE) dist
97         @echo "*** Unpacking..."
98         tar xfz $(DISTDIR).tar.gz
99         @echo "*** Test building..."
100         set -e; \
101         cd $(DISTDIR); \
102         $(MAKE) clean; \
103         $(MAKE); \
104         $(MAKE) install INST=inst; \
105         $(MAKE) dist
106         @echo "*** Tidying up..."
107         rm -rf $(DISTDIR)
108         @echo "*** All OK"
109
110 .PHONY: all install clean dist disttar distzip distdir distcheck
111
112 #----- That's all, folks ----------------------------------------------------