blob: e64345d6334b4ebd161e2dfb26f05a777b64ae2f [file] [log] [blame]
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001########################################################################
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002# Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
3# The Netherlands.
4#
Guido van Rossum433c8ad1994-08-01 12:07:07 +00005# All Rights Reserved
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00006#
7# Permission to use, copy, modify, and distribute this software and its
8# documentation for any purpose and without fee is hereby granted,
Guido van Rossum433c8ad1994-08-01 12:07:07 +00009# provided that the above copyright notice appear in all copies and that
Guido van Rossumaf5b83e1995-01-04 19:02:35 +000010# both that copyright notice and this permission notice appear in
Guido van Rossum433c8ad1994-08-01 12:07:07 +000011# supporting documentation, and that the names of Stichting Mathematisch
12# Centrum or CWI not be used in advertising or publicity pertaining to
13# distribution of the software without specific, written prior permission.
Guido van Rossumaf5b83e1995-01-04 19:02:35 +000014#
Guido van Rossum433c8ad1994-08-01 12:07:07 +000015# STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
16# THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
17# FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
18# FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
19# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
20# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
21# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22########################################################################
Guido van Rossum627b2d71993-12-24 10:39:16 +000023
Guido van Rossum433c8ad1994-08-01 12:07:07 +000024# Toplevel Makefile for Python
25# Note -- if recursive makes fail, try adding MAKE=make
Guido van Rossum627b2d71993-12-24 10:39:16 +000026
Guido van Rossum433c8ad1994-08-01 12:07:07 +000027# Substitutions by configure
28srcdir= @srcdir@
29VPATH= @srcdir@
30INSTALL= @INSTALL@
Guido van Rossum4a91df41994-10-10 17:58:27 +000031RANLIB= @RANLIB@
Guido van Rossum433c8ad1994-08-01 12:07:07 +000032
Guido van Rossumac405f61994-09-12 10:56:06 +000033# Machine-dependent subdirectories
34MACHDEP= @MACHDEP@
35
Guido van Rossum433c8ad1994-08-01 12:07:07 +000036# Install prefix for architecture-independent files
Guido van Rossum76be6ed1995-01-02 18:33:54 +000037prefix= @prefix@
Guido van Rossum433c8ad1994-08-01 12:07:07 +000038
39# Install prefix for architecture-dependent files
Guido van Rossum76be6ed1995-01-02 18:33:54 +000040exec_prefix= @exec_prefix@
Guido van Rossum433c8ad1994-08-01 12:07:07 +000041
Guido van Rossum90412791994-10-20 22:04:30 +000042# Expanded directories
43MANDIR=$(prefix)/man
44BINDIR=$(exec_prefix)/bin
45LIBDIR=$(exec_prefix)/lib
46INCLUDEDIR=$(prefix)/include
47SCRIPTDIR=$(prefix)/lib
48
Guido van Rossumac405f61994-09-12 10:56:06 +000049# Symbols used for using shared libraries
50SO= @SO@
51LDSHARED= @LDSHARED@
52CCSHARED= @CCSHARED@
53LINKFORSHARED= @LINKFORSHARED@
Guido van Rossum90412791994-10-20 22:04:30 +000054DESTSHARED= $(SCRIPTDIR)/python/$(MACHDEP)
Guido van Rossumac405f61994-09-12 10:56:06 +000055
Guido van Rossum433c8ad1994-08-01 12:07:07 +000056# Programs
57SHELL= /bin/sh
58
59# --with-PACKAGE options for configure script
60# e.g. --with-readline --with-svr5 --with-solaris --with-thread
61# (see README for an explanation)
62WITH=
63
64# Compiler options passed to subordinate makes
Guido van Rossum4e8af441994-08-19 15:33:54 +000065OPT= @OPT@
Guido van Rossum433c8ad1994-08-01 12:07:07 +000066
67# Subdirectories where to run make recursively
68SUBDIRS= Parser Objects Python Modules
69
70# Other subdirectories
71SUBDIRSTOO= Include Lib Doc Misc Demo readline Grammar
72
73# Files and directories to be distributed
74CONFIGFILES= configure configure.in acconfig.h config.h.in Makefile.in
75DISTFILES= README ChangeLog $(CONFIGFILES)
76DISTDIRS= $(SUBDIRS) $(SUBDIRSTOO) Ext-dummy
77DIST= $(DISTFILES) $(DISTDIRS)
78
79# Default target
80all: python
81
82# Build the interpreter
83python: Makefiles
Guido van Rossum810a92f1993-12-28 19:39:56 +000084 for i in $(SUBDIRS); do \
Guido van Rossum433c8ad1994-08-01 12:07:07 +000085 (echo $$i; cd $$i; $(MAKE) OPT="$(OPT)" all); \
Guido van Rossum810a92f1993-12-28 19:39:56 +000086 done
87
Guido van Rossum433c8ad1994-08-01 12:07:07 +000088# Test the interpreter (twice, once without .pyc files, once with)
Guido van Rossum76be6ed1995-01-02 18:33:54 +000089TESTPATH= $(srcdir)/Lib:$(srcdir)/Lib/test:./Modules
Guido van Rossum433c8ad1994-08-01 12:07:07 +000090test: python
91 -rm -f $(srcdir)/Lib/test/*.pyc
92 PYTHONPATH=$(TESTPATH) ./python -c 'import autotest'
93 PYTHONPATH=$(TESTPATH) ./python -c 'import autotest'
Guido van Rossum810a92f1993-12-28 19:39:56 +000094
Guido van Rossum433c8ad1994-08-01 12:07:07 +000095# Install the interpreter
96install: python
Guido van Rossum90412791994-10-20 22:04:30 +000097 $(INSTALL) python $(BINDIR)/python
Guido van Rossum433c8ad1994-08-01 12:07:07 +000098 @echo If this is your first time, consider make libinstall...
Guido van Rossum810a92f1993-12-28 19:39:56 +000099
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000100# Install the library.
101# If your system does not support "cp -r", try "copy -r" or perhaps
Guido van Rossum7522f031994-08-30 12:42:01 +0000102# something like find Lib -print | cpio -pacvdmu $(LIBDEST)
Guido van Rossum90412791994-10-20 22:04:30 +0000103LIBDEST= $(SCRIPTDIR)/python
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000104libinstall:
Guido van Rossum7522f031994-08-30 12:42:01 +0000105 -if test ! -d $(LIBDEST); \
106 then mkdir $(LIBDEST); \
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000107 fi
Guido van Rossum7522f031994-08-30 12:42:01 +0000108 cp -r $(srcdir)/Lib/* $(LIBDEST)
109 PYTHONPATH=$(LIBDEST) \
110 ./python $(LIBDEST)/compileall.py $(LIBDEST)
Guido van Rossum90412791994-10-20 22:04:30 +0000111 cd Modules; make sharedinstall
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000112
113# install the manual page
114maninstall:
115 $(INSTALL) $(srcdir)/Misc/python.man \
Guido van Rossum90412791994-10-20 22:04:30 +0000116 $(MANDIR)/man1/python.1
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000117
118# install the include files
Guido van Rossum90412791994-10-20 22:04:30 +0000119INCLUDEPY= $(INCLUDEDIR)/Py
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000120inclinstall:
121 -if test ! -d $(INCLUDEPY); \
122 then mkdir $(INCLUDEPY); \
123 fi
124 cp $(srcdir)/Include/*.h $(INCLUDEPY)
125
126# install the lib*.a files and miscellaneous stuff needed by extensions
Guido van Rossum90412791994-10-20 22:04:30 +0000127LIBP= $(LIBDIR)/python
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000128LIBPL= $(LIBP)/lib
129libainstall: all
130 -if test ! -d $(LIBP); \
131 then mkdir $(LIBP); \
132 fi
133 -if test ! -d $(LIBPL); \
134 then mkdir $(LIBPL); \
135 fi
136 for i in $(SUBDIRS); do \
137 echo $$i; $(INSTALL) $$i/lib$$i.a $(LIBPL)/lib$$i.a; \
Guido van Rossum4a91df41994-10-10 17:58:27 +0000138 $(RANLIB) $(LIBPL)/lib$$i.a; \
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000139 done
140 $(INSTALL) Modules/config.c $(LIBPL)/config.c
141 $(INSTALL) $(srcdir)/Modules/config.c.in $(LIBPL)/config.c.in
142 $(INSTALL) Modules/Makefile $(LIBPL)/Makefile
143 $(INSTALL) Modules/Setup $(LIBPL)/Setup
144 $(INSTALL) $(srcdir)/Modules/makesetup $(LIBPL)/makesetup
145 $(INSTALL) config.h $(LIBPL)/config.h
146 $(INSTALL) $(srcdir)/Python/frozenmain.c $(LIBPL)/frozenmain.c
147
Guido van Rossumac405f61994-09-12 10:56:06 +0000148# install the dynamically loadable modules
149sharedinstall:
150 cd Modules; $(MAKE) \
151 OPT="$(OPT)" \
152 SO="$(SO)" \
153 LDSHARED="$(LDSHARED)" \
154 CCSHARED="$(CCSHARED)" \
155 LINKFORSHARED="$(LINKFORSHARED)" \
156 DESTSHARED="$(DESTSHARED)" \
157 sharedinstall
158
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000159# Build the sub-Makefiles
160Makefiles: config.status
161 (cd Modules; $(MAKE) -f Makefile.pre Makefile)
162 for i in . $(SUBDIRS); do \
163 (echo $$i; cd $$i; $(MAKE) Makefile); \
164 done
165
166# Build the toplevel Makefile
167Makefile: Makefile.in config.status
168 CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) config.status
169
170# Run the configure script. If config.status already exists,
171# call it with the --recheck argument, which reruns configure with the
172# same options as it was run last time; otherwise run the configure
173# script with options taken from the $(WITH) variable
174config.status: $(srcdir)/configure
175 if test -f config.status; \
176 then $(SHELL) config.status --recheck; \
177 else $(SHELL) $(srcdir)/configure $(WITH); \
178 fi
179
180.PRECIOUS: config.status python
181
182# Rerun configure with the same options as it was run last time,
183# provided the config.status script exists
184recheck:
185 $(SHELL) config.status --recheck
Guido van Rossumaf5b83e1995-01-04 19:02:35 +0000186 $(SHELL) config.status
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000187
188# Rebuild the configure script from configure.in; also rebuild config.h.in
189autoconf:
190 (cd $(srcdir); autoconf; autoheader)
191
192# Create a tags file for vi
193tags::
194 ctags -w -t Include/*.h
195 for i in $(SUBDIRS); do ctags -w -t -a $$i/*.[ch]; done
196 sort tags -o tags
197
198# Create a tags file for GNU Emacs
199TAGS::
Guido van Rossum5552eb71994-08-05 15:51:00 +0000200 etags Include/*.h
201 for i in $(SUBDIRS); do etags -a $$i/*.[ch]; done
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000202
203# Add dependencies to sub-Makefiles
Guido van Rossum810a92f1993-12-28 19:39:56 +0000204depend:
205 for i in $(SUBDIRS); do \
206 (echo $$i; cd $$i; $(MAKE) depend); \
207 done
Guido van Rossum627b2d71993-12-24 10:39:16 +0000208
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000209# Sanitation targets -- clean leaves libraries, executables and tags
210# files, which clobber removes those as well
211
Guido van Rossum627b2d71993-12-24 10:39:16 +0000212localclean:
213 -rm -f core *~ [@,#]* *.old *.orig *.rej
Guido van Rossum627b2d71993-12-24 10:39:16 +0000214
215clean: localclean
216 -for i in $(SUBDIRS); do \
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000217 (echo $$i; cd $$i; \
218 if test -f Makefile; \
219 then $(MAKE) clean; \
220 else $(MAKE) -f Makefile.*in clean; \
221 fi); \
Guido van Rossum627b2d71993-12-24 10:39:16 +0000222 done
223
Guido van Rossum810a92f1993-12-28 19:39:56 +0000224localclobber: localclean
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000225 -rm -f tags TAGS python
Guido van Rossum810a92f1993-12-28 19:39:56 +0000226
227clobber: localclobber
Guido van Rossum627b2d71993-12-24 10:39:16 +0000228 -for i in $(SUBDIRS); do \
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000229 (echo $$i; cd $$i; \
230 if test -f Makefile; \
231 then $(MAKE) clobber; \
232 else $(MAKE) -f Makefile.in clobber; \
233 fi); \
Guido van Rossum627b2d71993-12-24 10:39:16 +0000234 done
235
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000236# Make things extra clean, before making a distribution
Guido van Rossum627b2d71993-12-24 10:39:16 +0000237distclean: clobber
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000238 -$(MAKE) SUBDIRS="$(SUBDIRSTOO)" clobber
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000239 -rm -f config.status config.log config.cache config.h Makefile
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000240 -for i in $(SUBDIRS) $(SUBDIRSTOO); do \
241 for f in $$i/*.in; do \
242 f=`basename "$$f" .in`; \
243 if test "$$f" != "*"; then \
244 echo rm -f "$$i/$$f"; \
245 rm -f "$$i/$$f"; \
246 fi; \
247 done; \
Guido van Rossum627b2d71993-12-24 10:39:16 +0000248 done
Guido van Rossum627b2d71993-12-24 10:39:16 +0000249
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000250# Find files with funny names
251find:
252 find $(DISTDIRS) -type d \
253 -o -name '*.[chs]' \
254 -o -name '*.py' \
255 -o -name '*.doc' \
256 -o -name '*.sty' \
257 -o -name '*.bib' \
258 -o -name '*.dat' \
259 -o -name '*.el' \
260 -o -name '*.fd' \
261 -o -name '*.in' \
262 -o -name '*.tex' \
263 -o -name '*,[vpt]' \
264 -o -name 'Setup' \
265 -o -name 'Setup.*' \
266 -o -name README \
267 -o -name Makefile \
268 -o -name ChangeLog \
269 -o -name RCS \
270 -o -name Repository \
271 -o -name Entries \
272 -o -name Tag \
273 -o -name tags \
274 -o -name TAGS \
275 -o -name .cvsignore \
276 -o -name MANIFEST \
277 -o -print
Guido van Rossum627b2d71993-12-24 10:39:16 +0000278
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000279# Build a distribution tar file (run make distclean first)
280# (This leaves the RCS and CVS directories in :-( )
281tar:
Guido van Rossum5552eb71994-08-05 15:51:00 +0000282 tar cf - $(DIST) | gzip --best >dist.tar.gz