blob: 8b0edf04ab2620e339252277e1905ce069b419b1 [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 Rossum6403d281995-01-20 16:51:32 +000031INSTALL_PROGRAM=@INSTALL_PROGRAM@
32INSTALL_DATA= @INSTALL_DATA@
Guido van Rossum4a91df41994-10-10 17:58:27 +000033RANLIB= @RANLIB@
Guido van Rossum433c8ad1994-08-01 12:07:07 +000034
Guido van Rossumac405f61994-09-12 10:56:06 +000035# Machine-dependent subdirectories
36MACHDEP= @MACHDEP@
37
Guido van Rossum433c8ad1994-08-01 12:07:07 +000038# Install prefix for architecture-independent files
Guido van Rossum76be6ed1995-01-02 18:33:54 +000039prefix= @prefix@
Guido van Rossum433c8ad1994-08-01 12:07:07 +000040
41# Install prefix for architecture-dependent files
Guido van Rossum76be6ed1995-01-02 18:33:54 +000042exec_prefix= @exec_prefix@
Guido van Rossum433c8ad1994-08-01 12:07:07 +000043
Guido van Rossum90412791994-10-20 22:04:30 +000044# Expanded directories
45MANDIR=$(prefix)/man
46BINDIR=$(exec_prefix)/bin
47LIBDIR=$(exec_prefix)/lib
48INCLUDEDIR=$(prefix)/include
49SCRIPTDIR=$(prefix)/lib
50
Guido van Rossumac405f61994-09-12 10:56:06 +000051# Symbols used for using shared libraries
52SO= @SO@
53LDSHARED= @LDSHARED@
54CCSHARED= @CCSHARED@
55LINKFORSHARED= @LINKFORSHARED@
Guido van Rossum90412791994-10-20 22:04:30 +000056DESTSHARED= $(SCRIPTDIR)/python/$(MACHDEP)
Guido van Rossumac405f61994-09-12 10:56:06 +000057
Guido van Rossum433c8ad1994-08-01 12:07:07 +000058# Programs
59SHELL= /bin/sh
60
61# --with-PACKAGE options for configure script
62# e.g. --with-readline --with-svr5 --with-solaris --with-thread
63# (see README for an explanation)
64WITH=
65
66# Compiler options passed to subordinate makes
Guido van Rossum4e8af441994-08-19 15:33:54 +000067OPT= @OPT@
Guido van Rossum433c8ad1994-08-01 12:07:07 +000068
69# Subdirectories where to run make recursively
70SUBDIRS= Parser Objects Python Modules
71
72# Other subdirectories
73SUBDIRSTOO= Include Lib Doc Misc Demo readline Grammar
74
75# Files and directories to be distributed
76CONFIGFILES= configure configure.in acconfig.h config.h.in Makefile.in
77DISTFILES= README ChangeLog $(CONFIGFILES)
78DISTDIRS= $(SUBDIRS) $(SUBDIRSTOO) Ext-dummy
79DIST= $(DISTFILES) $(DISTDIRS)
80
81# Default target
82all: python
83
84# Build the interpreter
85python: Makefiles
Guido van Rossum810a92f1993-12-28 19:39:56 +000086 for i in $(SUBDIRS); do \
Guido van Rossum6d47d0d1995-08-07 21:58:40 +000087 (echo $$i; cd $$i; \
88 $(MAKE) OPT="$(OPT)" \
89 prefix="$(prefix)" \
90 exec_prefix="$(exec_prefix)" \
91 all); \
Guido van Rossum810a92f1993-12-28 19:39:56 +000092 done
93
Guido van Rossum433c8ad1994-08-01 12:07:07 +000094# Test the interpreter (twice, once without .pyc files, once with)
Guido van Rossum76be6ed1995-01-02 18:33:54 +000095TESTPATH= $(srcdir)/Lib:$(srcdir)/Lib/test:./Modules
Guido van Rossum433c8ad1994-08-01 12:07:07 +000096test: python
97 -rm -f $(srcdir)/Lib/test/*.pyc
98 PYTHONPATH=$(TESTPATH) ./python -c 'import autotest'
99 PYTHONPATH=$(TESTPATH) ./python -c 'import autotest'
Guido van Rossum810a92f1993-12-28 19:39:56 +0000100
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000101# Install the interpreter
102install: python
Guido van Rossum6403d281995-01-20 16:51:32 +0000103 $(INSTALL_PROGRAM) python $(BINDIR)/python
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000104 @echo If this is your first time, consider make libinstall...
Guido van Rossum810a92f1993-12-28 19:39:56 +0000105
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000106# Install the library.
107# If your system does not support "cp -r", try "copy -r" or perhaps
Guido van Rossum7522f031994-08-30 12:42:01 +0000108# something like find Lib -print | cpio -pacvdmu $(LIBDEST)
Guido van Rossum90412791994-10-20 22:04:30 +0000109LIBDEST= $(SCRIPTDIR)/python
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000110libinstall:
Guido van Rossum7522f031994-08-30 12:42:01 +0000111 -if test ! -d $(LIBDEST); \
112 then mkdir $(LIBDEST); \
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000113 fi
Guido van Rossum7522f031994-08-30 12:42:01 +0000114 cp -r $(srcdir)/Lib/* $(LIBDEST)
115 PYTHONPATH=$(LIBDEST) \
116 ./python $(LIBDEST)/compileall.py $(LIBDEST)
Guido van Rossum6d47d0d1995-08-07 21:58:40 +0000117 $(MAKE) \
118 OPT="$(OPT)" \
119 SO="$(SO)" \
120 LDSHARED="$(LDSHARED)" \
121 CCSHARED="$(CCSHARED)" \
122 LINKFORSHARED="$(LINKFORSHARED)" \
123 DESTSHARED="$(DESTSHARED)" \
124 sharedinstall
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000125
126# install the manual page
127maninstall:
Guido van Rossum6403d281995-01-20 16:51:32 +0000128 $(INSTALL_DATA) $(srcdir)/Misc/python.man \
Guido van Rossum90412791994-10-20 22:04:30 +0000129 $(MANDIR)/man1/python.1
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000130
131# install the include files
Guido van Rossum90412791994-10-20 22:04:30 +0000132INCLUDEPY= $(INCLUDEDIR)/Py
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000133inclinstall:
134 -if test ! -d $(INCLUDEPY); \
135 then mkdir $(INCLUDEPY); \
136 fi
Guido van Rossum6403d281995-01-20 16:51:32 +0000137 $(INSTALL_DATA) $(srcdir)/Include/*.h $(INCLUDEPY)
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000138
139# install the lib*.a files and miscellaneous stuff needed by extensions
Guido van Rossum90412791994-10-20 22:04:30 +0000140LIBP= $(LIBDIR)/python
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000141LIBPL= $(LIBP)/lib
142libainstall: all
143 -if test ! -d $(LIBP); \
144 then mkdir $(LIBP); \
145 fi
146 -if test ! -d $(LIBPL); \
147 then mkdir $(LIBPL); \
148 fi
149 for i in $(SUBDIRS); do \
Guido van Rossum6403d281995-01-20 16:51:32 +0000150 echo $$i; $(INSTALL_DATA) $$i/lib$$i.a $(LIBPL)/lib$$i.a; \
Guido van Rossum4a91df41994-10-10 17:58:27 +0000151 $(RANLIB) $(LIBPL)/lib$$i.a; \
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000152 done
Guido van Rossum6403d281995-01-20 16:51:32 +0000153 $(INSTALL_DATA) Modules/config.c $(LIBPL)/config.c
Guido van Rossum6d47d0d1995-08-07 21:58:40 +0000154 $(INSTALL_DATA) $(srcdir)/Modules/getpath.c $(LIBPL)/getpath.c
Guido van Rossum6403d281995-01-20 16:51:32 +0000155 $(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(LIBPL)/config.c.in
156 $(INSTALL_DATA) Modules/Makefile $(LIBPL)/Makefile
157 $(INSTALL_DATA) Modules/Setup $(LIBPL)/Setup
158 $(INSTALL_DATA) $(srcdir)/Modules/makesetup $(LIBPL)/makesetup
159 $(INSTALL_DATA) config.h $(LIBPL)/config.h
160 $(INSTALL_DATA) $(srcdir)/Python/frozenmain.c $(LIBPL)/frozenmain.c
Sjoerd Mullenderad5d2cf1995-08-09 09:18:20 +0000161 $(INSTALL_DATA) Modules/main.o $(LIBPL)/main.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000162
Guido van Rossumac405f61994-09-12 10:56:06 +0000163# install the dynamically loadable modules
164sharedinstall:
165 cd Modules; $(MAKE) \
166 OPT="$(OPT)" \
167 SO="$(SO)" \
168 LDSHARED="$(LDSHARED)" \
169 CCSHARED="$(CCSHARED)" \
170 LINKFORSHARED="$(LINKFORSHARED)" \
171 DESTSHARED="$(DESTSHARED)" \
172 sharedinstall
173
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000174# Build the sub-Makefiles
Guido van Rossumd09119e1995-01-17 16:45:08 +0000175Makefiles: config.status Modules/Makefile.pre
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000176 (cd Modules; $(MAKE) -f Makefile.pre Makefile)
177 for i in . $(SUBDIRS); do \
178 (echo $$i; cd $$i; $(MAKE) Makefile); \
179 done
180
Guido van Rossumd09119e1995-01-17 16:45:08 +0000181# Build the intermediate Makefile in Modules
182Modules/Makefile.pre: config.status
183 $(SHELL) config.status
184
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000185# Build the toplevel Makefile
186Makefile: Makefile.in config.status
187 CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) config.status
188
189# Run the configure script. If config.status already exists,
190# call it with the --recheck argument, which reruns configure with the
191# same options as it was run last time; otherwise run the configure
192# script with options taken from the $(WITH) variable
193config.status: $(srcdir)/configure
194 if test -f config.status; \
195 then $(SHELL) config.status --recheck; \
Guido van Rossumfb00a991995-01-12 12:26:50 +0000196 $(SHELL) config.status; \
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000197 else $(SHELL) $(srcdir)/configure $(WITH); \
198 fi
199
200.PRECIOUS: config.status python
201
202# Rerun configure with the same options as it was run last time,
203# provided the config.status script exists
204recheck:
205 $(SHELL) config.status --recheck
Guido van Rossumaf5b83e1995-01-04 19:02:35 +0000206 $(SHELL) config.status
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000207
208# Rebuild the configure script from configure.in; also rebuild config.h.in
209autoconf:
210 (cd $(srcdir); autoconf; autoheader)
211
212# Create a tags file for vi
213tags::
214 ctags -w -t Include/*.h
215 for i in $(SUBDIRS); do ctags -w -t -a $$i/*.[ch]; done
216 sort tags -o tags
217
218# Create a tags file for GNU Emacs
219TAGS::
Guido van Rossum5552eb71994-08-05 15:51:00 +0000220 etags Include/*.h
221 for i in $(SUBDIRS); do etags -a $$i/*.[ch]; done
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000222
223# Add dependencies to sub-Makefiles
Guido van Rossum810a92f1993-12-28 19:39:56 +0000224depend:
225 for i in $(SUBDIRS); do \
226 (echo $$i; cd $$i; $(MAKE) depend); \
227 done
Guido van Rossum627b2d71993-12-24 10:39:16 +0000228
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000229# Sanitation targets -- clean leaves libraries, executables and tags
230# files, which clobber removes those as well
231
Guido van Rossum627b2d71993-12-24 10:39:16 +0000232localclean:
233 -rm -f core *~ [@,#]* *.old *.orig *.rej
Guido van Rossum627b2d71993-12-24 10:39:16 +0000234
235clean: localclean
236 -for i in $(SUBDIRS); do \
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000237 (echo $$i; cd $$i; \
238 if test -f Makefile; \
239 then $(MAKE) clean; \
240 else $(MAKE) -f Makefile.*in clean; \
241 fi); \
Guido van Rossum627b2d71993-12-24 10:39:16 +0000242 done
243
Guido van Rossum810a92f1993-12-28 19:39:56 +0000244localclobber: localclean
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000245 -rm -f tags TAGS python
Guido van Rossumaf07a441995-02-13 19:45:27 +0000246 -rm -f config.log config.cache config.h Makefile
Guido van Rossum810a92f1993-12-28 19:39:56 +0000247
248clobber: localclobber
Guido van Rossum627b2d71993-12-24 10:39:16 +0000249 -for i in $(SUBDIRS); do \
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000250 (echo $$i; cd $$i; \
251 if test -f Makefile; \
252 then $(MAKE) clobber; \
Guido van Rossum7b4d4601995-03-22 12:27:16 +0000253 else $(MAKE) -f $(srcdir)/Makefile.in clobber; \
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000254 fi); \
Guido van Rossum627b2d71993-12-24 10:39:16 +0000255 done
256
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000257# Make things extra clean, before making a distribution
Guido van Rossum627b2d71993-12-24 10:39:16 +0000258distclean: clobber
Guido van Rossum7b4d4601995-03-22 12:27:16 +0000259 -$(MAKE) -f $(srcdir)/Makefile.in \
260 SUBDIRS="$(SUBDIRSTOO)" clobber
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000261 -rm -f config.status config.log config.cache config.h Makefile
Guido van Rossume7abf4e1995-09-18 22:12:20 +0000262 -rm -f Modules/Makefile
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000263 -for i in $(SUBDIRS) $(SUBDIRSTOO); do \
264 for f in $$i/*.in; do \
265 f=`basename "$$f" .in`; \
266 if test "$$f" != "*"; then \
267 echo rm -f "$$i/$$f"; \
268 rm -f "$$i/$$f"; \
269 fi; \
270 done; \
Guido van Rossum627b2d71993-12-24 10:39:16 +0000271 done
Guido van Rossum627b2d71993-12-24 10:39:16 +0000272
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000273# Find files with funny names
274find:
275 find $(DISTDIRS) -type d \
276 -o -name '*.[chs]' \
277 -o -name '*.py' \
278 -o -name '*.doc' \
279 -o -name '*.sty' \
280 -o -name '*.bib' \
281 -o -name '*.dat' \
282 -o -name '*.el' \
283 -o -name '*.fd' \
284 -o -name '*.in' \
285 -o -name '*.tex' \
286 -o -name '*,[vpt]' \
287 -o -name 'Setup' \
288 -o -name 'Setup.*' \
289 -o -name README \
290 -o -name Makefile \
291 -o -name ChangeLog \
292 -o -name RCS \
293 -o -name Repository \
294 -o -name Entries \
295 -o -name Tag \
296 -o -name tags \
297 -o -name TAGS \
298 -o -name .cvsignore \
299 -o -name MANIFEST \
300 -o -print
Guido van Rossum627b2d71993-12-24 10:39:16 +0000301
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000302# Build a distribution tar file (run make distclean first)
303# (This leaves the RCS and CVS directories in :-( )
304tar:
Guido van Rossum5552eb71994-08-05 15:51:00 +0000305 tar cf - $(DIST) | gzip --best >dist.tar.gz