Updated systems.
[com-informatimago:com-informatimago.git] / implementations.mk
1 #******************************************************************************
2 #FILE:                          implementations.mk
3 #LANGUAGE:                      make
4 #SYSTEM:                        UNIX
5 #USER-INTERFACE:        None
6 #DESCRIPTION
7 #       This Makefile defines targets to compile my lisp sources with
8 #       various implementations.
9 #AUTHORS
10 #       <PJB> Pascal J. Bourguignon
11 #MODIFICATIONS
12 #   2010-06-27 <PJB> Factorized out from */Makefile.
13 #   2001-06-19 <PJB> Reorganized and simplified.
14 #LEGAL
15 #       Copyright Pascal J. Bourguignon 1992 - 2010
16 #
17 #   This script is free software; you can redistribute it and/or
18 #   modify it under the terms of the GNU  General Public
19 #   License as published by the Free Software Foundation; either
20 #   version 2 of the License, or (at your option) any later version.
21 #
22 #   This script is distributed in the hope that it will be useful,
23 #   but WITHOUT ANY WARRANTY; without even the implied warranty of
24 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
25 #   General Public License for more details.
26 #
27 #   You should have received a copy of the GNU General Public
28 #   License along with this library; see the file COPYING.LIB.
29 #   If not, write to the Free Software Foundation,
30 #   59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
31 #******************************************************************************
32
33 all::
34
35
36 CC            := gcc
37 AWK           := awk
38 EGREP         := egrep
39 WISH          := wish
40
41
42 # COMPILERS      = abcl allegro clisp cmucl ecl openmcl sbcl 
43 COMPILERS      = allegro clisp cmucl ecl openmcl sbcl
44
45 ABCL              := abcl
46 ALLEGRO       := alisp
47 CLISP         := clisp
48 ECL           := ecl
49 SBCL          := sbcl
50 CMUCL         := cmucl
51 OPENMCL       := openmcl
52
53 ALLEGRO_FLAGS := 
54 CLISP_FLAGS   := -ansi -q -norc -Kfull -E iso-8859-1 -Efile UTF-8 -Eterminal UTF-8  -on-error debug
55 CMUCL_FLAGS   := -noinit -nositeinit 
56 ECL_FLAGS     := -norc 
57 OPENMCL_FLAGS := 
58 SBCL_FLAGS    := --noinform --sysinit /dev/null --userinit /dev/null 
59
60 LC_CTYPE       = en_US.UTF-8
61
62 DECLAIMS       = '(DECLAIM (OPTIMIZE (SAFETY 3) (DEBUG 3) (SPEED 0) (SPACE 0)))'
63 COMPILES       = '(load "compile.lisp")'
64
65 LINE           = ";;;;======================================================================\n"
66
67 all::show-compilers
68
69 show-compilers:
70         @printf ";;;; Absent compilers:   "
71         @for compiler in $(COMPILERS) ; do\
72                 if  type -p $$compiler >/dev/null 2>&1 ; then \
73                         true ;\
74                 else \
75                         printf "%s "  $$compiler ;\
76                 fi ;\
77          done
78         @printf "\n;;;; Will compile with:  "
79         @for compiler in $(COMPILERS) ; do \
80                 if  type -p $$compiler >/dev/null 2>&1 ; then \
81                         printf  "%s "  $$compiler ;\
82                 fi ;\
83          done
84         @printf "\n"
85
86 allegro:
87         @printf $(LINE)
88         @if  type -p $(ALLEGRO) >/dev/null 2>&1 ; then \
89                 echo ";;;; Compiling with Allegro Common Lisp" ;\
90                 ( LC_CTYPE=$(LC_CTYPE) $(ALLEGRO) $(ALLEGRO_FLAGS) \
91                 -e $(DECLAIMS) \
92                 -e $(COMPILES) \
93                 -e '(EXCL::EXIT-LISP 0)' \
94                 ) ;\
95         fi
96
97
98 clisp:
99         @printf $(LINE)
100         @if  type -p $(CLISP)  >/dev/null 2>&1 ; then \
101                 echo ";;;; Compiling with Common Lisp" ;\
102                 ( LC_CTYPE=$(LC_CTYPE) $(CLISP) $(CLISP_FLAGS) \
103                 -x $(DECLAIMS) \
104                 -x $(COMPILES) \
105                 -x '(EXT:QUIT 0)' \
106             ) 2>&1 | $(AWK) -f ../post-clisp.awk ;\
107         fi
108
109 cmucl:
110         @printf $(LINE)
111         @if type -p $(CMUCL)  >/dev/null 2>&1 ; then \
112                 echo ";;;; Compiling with Carmegie-Mellon University Common Lisp" ;\
113                 ( LC_CTYPE=$(LC_CTYPE) $(CMUCL) $(CMUCL_FLAGS) \
114             -eval '(setf extensions:*gc-verbose* nil)' \
115                 -eval $(DECLAIMS) \
116                 -eval $(COMPILES) \
117                 -eval '(EXTENSIONS:quit)' \
118                 ) 2>&1 | $(AWK) '/^; Converted /{next;} /^; Byte Compiling /{next;} /^; Compiling Creation Form/{next;} /^; Converted /{next;} {print;}' ;\
119         fi
120
121 ecl:
122         @printf $(LINE)
123         @if type -p $(ECL)  >/dev/null 2>&1 ; then \
124                 echo ";;;; Compiling with Embeddable Common Lisp" ;\
125                 ( LC_CTYPE=$(LC_CTYPE) $(ECL) $(ECL_FLAGS) \
126                 -eval $(DECLAIMS) \
127                 -eval $(COMPILES) \
128                 -eval '(system:quit)' \
129                 ) ;\
130         fi
131
132 openmcl:
133         @printf $(LINE)
134         @if type -p $(OPENMCL)  >/dev/null 2>&1 ; then \
135                 echo ";;;; Compiling with Open Macintosh Common Lisp" ;\
136                 ( LC_CTYPE=$(LC_CTYPE) $(OPENMCL) $(OPENMCL_FLAGS)  \
137                 -eval $(DECLAIMS) \
138                 -eval $(COMPILES) \
139                 -eval '(ccl:quit)' \
140                 ) ;\
141         fi
142
143 sbcl:
144         @printf $(LINE)
145         @if  type -p $(SBCL)  >/dev/null 2>&1 ; then \
146                 echo ";;;; Compiling with Steel-Banks Common Lisp" ;\
147                 ( LC_CTYPE=$(LC_CTYPE) $(SBCL) $(SBCL_FLAGS) \
148                 --eval '(DECLAIM (OPTIMIZE (SB-EXT::INHIBIT-WARNINGS 3)))' \
149                 --eval $(DECLAIMS) \
150                 --eval $(COMPILES) \
151                 --eval '(SB-EXT:QUIT)' \
152                 ) 2>&1 | $(EGREP) -v '^(; compiling top level form|; recognizing )' ;\
153         fi
154
155
156 system.asd summary summary.html:clisp
157
158 help::
159         @echo 'Please choose the compiler: make $(COMPILERS)'
160         @echo 'make system.asd # generates the ASDF system.'
161         @echo 'make summary    # generates the summary.html file.'
162
163
164
165 install::
166         -mkdir -p $(PACKAGES)/$(PACKAGE_PATH)
167         install -m 644 *.lisp *.asd        $(PACKAGES)/$(PACKAGE_PATH)/
168 #        -publish OBJ-*
169 #        -umask 022 ; cp -r OBJ-*           $(PACKAGES)/$(PACKAGE_PATH)/
170
171 clean::
172         -rm -rf obj-* OBJ-* *.lib *.fas *.fasl *.x86f
173
174 distclean::clean
175
176 clean-install::
177         -rm -rf $(PACKAGES)/$(PACKAGE_PATH)/{obj-*,OBJ-*,*.lib,*.fas,*.fasl,*.x86f}
178
179 vars::
180         @echo TARGET=$(TARGET)
181         @echo MAKEDIR=$(MAKEDIR)
182         @echo PREFIX=$(PREFIX)
183         @echo MODULE=$(MODULE)
184         @echo PACKAGE_PATH=$(PACKAGE_PATH)
185         @echo "    Note: use 'make VAR=value' to override." 
186
187 etags tags TAGS:
188         find $$(pwd) -name \[^#.]\*.lisp -print \
189         | tee -a /dev/stderr -a /dev/stdout \
190         | etags -
191         @echo Done.
192
193 #### THE END ####