1# $Id: Makefile,v 1.4 2010-02-28 21:32:23 dhmunro Exp $
2# see README for usage
3
4SHELL=/bin/sh
5
6ALLDIRS=play gist yorick regexp matrix fft doc
7CONFIGDIRS=play yorick
8
9all: yorexe gistexe docs
10
11yorexe: libyor
12	@$(MAKE) -C yorick
13
14gistexe: libgist
15	@$(MAKE) -C gist gist
16
17docs: yorexe
18	@$(MAKE) -C doc docs
19
20# libraries are built in a fixed order:
21# libplay, then libgist, then libyor
22#   - the libraries are accumulated, that is,
23#     libyor.a contains libgist.a contains libplay.a
24
25libyor: libgist
26	@$(MAKE) -C regexp libyor
27	@$(MAKE) -C matrix libyor
28	@$(MAKE) -C fft libyor
29	@$(MAKE) -C yorick libyor
30
31libgist: libplay
32	@$(MAKE) -C gist libgist.a
33
34libplay: Make.cfg
35	@$(MAKE) -C play libplay
36
37LD_STATIC=
38Make.cfg:
39	LD_STATIC=$(LD_STATIC) ./configure
40
41config: distclean
42	@$(MAKE) "LD_STATIC=$(LD_STATIC)" Make.cfg
43
44prefix=.
45Y_PLATFORM=.
46Y_SITE=.
47Y_HOME=.
48ysite:
49	if S="s?^prefix=.*?prefix=\"$(prefix)\"?;\
50	s?^Y_PLATFORM=.*?Y_PLATFORM=\"$(Y_PLATFORM)\"?;\
51	s?^Y_SITE=.*?Y_SITE=\"$(Y_SITE)\"?;\
52	s?^Y_HOME=.*?Y_HOME=\"$(Y_HOME)\"?";\
53	sed -e "$$S" ysite.sh >ysite.sh1; then mv ysite.sh1 ysite.sh; fi
54	@if test -r ysite.grp; then chmod g+w ysite.sh; fi
55
56reloc:
57	$(MAKE) Y_HOME=relocate ysite
58
59clean::
60	@rm -f Make.del yorapi.def
61	@if test ! -r Make.cfg; then touch Make.cfg Make.del; fi
62	@for d in $(ALLDIRS); do ( $(MAKE) -C $$d TGT=exe clean; ); done
63	@if test -r Make.del; then rm -f Make.cfg Make.del; fi
64	rm -f *~ '#'* *.o cfg* ysite.sh? core* *.core a.out
65	rm -f i/*~ i0/*~ i-start/*~ g/*~ extend/*~
66	rm -rf relocate
67
68distclean::
69	@touch Make.cfg
70	@for d in $(ALLDIRS); do ( $(MAKE) -C $$d TGT=exe distclean; ); done
71	rm -f *~ '#'* *.o cfg* Make.* ysite.sh? core* *.core a.out
72	rm -f i/*~ i0/*~ i-start/*~ g/*~ extend/*~
73	rm -rf relocate
74
75siteclean: distclean
76	@rm -f ysite.grp
77	@$(MAKE) prefix=. Y_PLATFORM=. Y_SITE=. Y_HOME=relocate ysite
78
79
80check:
81	@$(MAKE) -C yorick check
82
83INSTALL_ROOT=
84Y_BINDIR=
85Y_DOCDIR=
86install: yorexe gistexe docs
87	./instally.sh +both "$(INSTALL_ROOT)" "$(Y_BINDIR)" "$(Y_DOCDIR)"
88
89install1: yorexe gistexe
90	./instally.sh +home "$(INSTALL_ROOT)" "$(Y_BINDIR)" "$(Y_DOCDIR)"
91
92uninstall:
93	./instally.sh -both "$(INSTALL_ROOT)" "$(Y_BINDIR)" "$(Y_DOCDIR)"
94
95uninstall1:
96	./instally.sh -home "$(INSTALL_ROOT)" "$(Y_BINDIR)" "$(Y_DOCDIR)"
97
98dist: siteclean
99	W=`pwd`;N=`basename "$$W"`;R=`tail -n 1 VERSION`;cd ..;\
100	tar cvf - $$N|gzip - >$$N.$$R.tgz;
101
102# Usage: make YGROUP=altgrp sharable
103# default group is "yorick", affects instally.sh
104YGROUP=yorick
105sharable:
106	@rm -f ysite.grp
107	echo "$(YGROUP)" >ysite.grp
108	chgrp -R $(YGROUP) .
109	chmod -R g+w .
110	find . -type d | xargs chmod g+s
111
112relocatable: siteclean
113	@rm -rf relocate
114	$(MAKE) Y_HOME=relocate ysite
115	$(MAKE) install
116	cp install.rel relocate/README
117	cp emacs/yorick.el relocate
118	mkdir relocate/contrib
119	W=`pwd`;N=`basename "$$W"`;R=`tail -n 1 VERSION`;\
120	mv relocate $$N-$$R;tar cvf - $$N-$$R|gzip - >$$N-$$R.tgz;\
121	rm -rf $$N-$$R
122
123dumpconfig:
124	@$(MAKE) -C yorick dumpconfig
125
126# targets for ./configure
127echocc:
128	echo "$(CC)" >cfg.tmp
129echorl:
130	echo "$(RANLIB)" >cfg.tmp
131echoar:
132	echo "$(AR)" >cfg.tmp
133echoml:
134	echo "$(MATHLIB)" >cfg.tmp
135pkgconfig:
136	@for d in $(CONFIGDIRS); do ( $(MAKE) -C $$d config; ); done
137