blob: d044b9f44c3e742fac21e732a8509c6f80101715 [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 Rossum586480b1996-05-28 22:49:08 +000024# Top-level Makefile for Python
25#
26# As distributed, this file is called Makefile.in; it is processed
27# into the real Makefile by running the script ./configure, which
28# replaces things like @spam@ with values appropriate for your system.
29# This means that if you edit Makefile, your changes get lost the next
30# time you run the configure script. Ideally, you can do:
31#
32# ./configure
33# make
34# make test
35# make install
36#
37# The top-level Makefile invokes make recursively in a number of
38# subdirectories (see the SUBDIRS variable below). If you want to,
39# you can invoke make in individual subdirectories. However, the
40# sub-Makefiles are also generated by configure, and the quickest way
41# to make sure they are up to date is by running make (or "make
42# Makefiles") at the top level. This is particularly important for
43# Modules/Makefile, which has to be regenerated every time you edit
44# Modules/Setup. The python executable is built in the Modules
45# directory and then moved to the top-level directory. The recursive
46# makes pass three options to subordinate makes: OPT (a quick way to
47# change some compiler options; it defaults to -O), prefix and
48# exec_prefix (the installation paths).
49#
50# If recursive makes fail, try invoking make as "make MAKE=make".
51#
52# See also the section "Build instructions" in the README file.
Guido van Rossum627b2d71993-12-24 10:39:16 +000053
Guido van Rossum3912fd81996-07-24 02:35:43 +000054# Interpreter version number, for library destination pathnames
55VERSION= 1.4
56
Guido van Rossum433c8ad1994-08-01 12:07:07 +000057# Substitutions by configure
58srcdir= @srcdir@
59VPATH= @srcdir@
Guido van Rossum4a91df41994-10-10 17:58:27 +000060RANLIB= @RANLIB@
Guido van Rossum433c8ad1994-08-01 12:07:07 +000061
Guido van Rossumac405f61994-09-12 10:56:06 +000062# Machine-dependent subdirectories
63MACHDEP= @MACHDEP@
64
Guido van Rossum433c8ad1994-08-01 12:07:07 +000065# Install prefix for architecture-independent files
Guido van Rossum76be6ed1995-01-02 18:33:54 +000066prefix= @prefix@
Guido van Rossum433c8ad1994-08-01 12:07:07 +000067
68# Install prefix for architecture-dependent files
Guido van Rossum76be6ed1995-01-02 18:33:54 +000069exec_prefix= @exec_prefix@
Guido van Rossum433c8ad1994-08-01 12:07:07 +000070
Guido van Rossum90412791994-10-20 22:04:30 +000071# Expanded directories
72MANDIR=$(prefix)/man
73BINDIR=$(exec_prefix)/bin
74LIBDIR=$(exec_prefix)/lib
75INCLUDEDIR=$(prefix)/include
76SCRIPTDIR=$(prefix)/lib
77
Guido van Rossumac405f61994-09-12 10:56:06 +000078# Symbols used for using shared libraries
79SO= @SO@
80LDSHARED= @LDSHARED@
81CCSHARED= @CCSHARED@
82LINKFORSHARED= @LINKFORSHARED@
Guido van Rossum3912fd81996-07-24 02:35:43 +000083DESTSHARED= $(SCRIPTDIR)/python$(VERSION)/$(MACHDEP)
Guido van Rossumac405f61994-09-12 10:56:06 +000084
Guido van Rossum586480b1996-05-28 22:49:08 +000085# Shell used by make (some versions default to the login shell, which is bad)
Guido van Rossum433c8ad1994-08-01 12:07:07 +000086SHELL= /bin/sh
87
Guido van Rossum586480b1996-05-28 22:49:08 +000088# Portable install script (configure doesn't always guess right)
89INSTALL= @srcdir@/install-sh -c
90INSTALL_PROGRAM=${INSTALL}
91INSTALL_DATA= ${INSTALL} -m 644
92
Guido van Rossum433c8ad1994-08-01 12:07:07 +000093# --with-PACKAGE options for configure script
94# e.g. --with-readline --with-svr5 --with-solaris --with-thread
95# (see README for an explanation)
96WITH=
97
98# Compiler options passed to subordinate makes
Guido van Rossum4e8af441994-08-19 15:33:54 +000099OPT= @OPT@
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000100
101# Subdirectories where to run make recursively
102SUBDIRS= Parser Objects Python Modules
103
104# Other subdirectories
105SUBDIRSTOO= Include Lib Doc Misc Demo readline Grammar
106
107# Files and directories to be distributed
108CONFIGFILES= configure configure.in acconfig.h config.h.in Makefile.in
109DISTFILES= README ChangeLog $(CONFIGFILES)
110DISTDIRS= $(SUBDIRS) $(SUBDIRSTOO) Ext-dummy
111DIST= $(DISTFILES) $(DISTDIRS)
112
113# Default target
114all: python
115
116# Build the interpreter
117python: Makefiles
Guido van Rossumbfc1bbe1996-06-20 14:30:38 +0000118 @for i in $(SUBDIRS); do \
119 (echo Making in subdirectory $$i; cd $$i; \
Guido van Rossum6d47d0d1995-08-07 21:58:40 +0000120 $(MAKE) OPT="$(OPT)" \
121 prefix="$(prefix)" \
122 exec_prefix="$(exec_prefix)" \
123 all); \
Guido van Rossum810a92f1993-12-28 19:39:56 +0000124 done
125
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000126# Test the interpreter (twice, once without .pyc files, once with)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000127TESTPATH= $(srcdir)/Lib:$(srcdir)/Lib/test:./Modules
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000128test: python
129 -rm -f $(srcdir)/Lib/test/*.pyc
130 PYTHONPATH=$(TESTPATH) ./python -c 'import autotest'
131 PYTHONPATH=$(TESTPATH) ./python -c 'import autotest'
Guido van Rossum810a92f1993-12-28 19:39:56 +0000132
Guido van Rossum586480b1996-05-28 22:49:08 +0000133# Install everything
134install: bininstall libinstall maninstall inclinstall \
135 libainstall sharedinstall
136
Guido van Rossum3912fd81996-07-24 02:35:43 +0000137# Install most things with $(VERSION) affixed
138altinstall: altbininstall libinstall libainstall sharedinstall
139
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000140# Install the interpreter
Guido van Rossum586480b1996-05-28 22:49:08 +0000141bininstall: python
Guido van Rossumbfc1bbe1996-06-20 14:30:38 +0000142 @for i in $(BINDIR); \
Guido van Rossum586480b1996-05-28 22:49:08 +0000143 do \
144 if test ! -d $$i; then \
145 echo "Creating directory $$i"; \
146 mkdir $$i; \
147 chmod 755 $$i; \
148 else true; \
149 fi; \
150 done
Guido van Rossum6403d281995-01-20 16:51:32 +0000151 $(INSTALL_PROGRAM) python $(BINDIR)/python
Guido van Rossum810a92f1993-12-28 19:39:56 +0000152
Guido van Rossum3912fd81996-07-24 02:35:43 +0000153# Install the interpreter with $(VERSION) affixed
154altbininstall: python
155 @for i in $(BINDIR); \
156 do \
157 if test ! -d $$i; then \
158 echo "Creating directory $$i"; \
159 mkdir $$i; \
160 chmod 755 $$i; \
161 else true; \
162 fi; \
163 done
164 $(INSTALL_PROGRAM) python $(BINDIR)/python$(VERSION)
165
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000166# Install the library.
167# If your system does not support "cp -r", try "copy -r" or perhaps
Guido van Rossum7522f031994-08-30 12:42:01 +0000168# something like find Lib -print | cpio -pacvdmu $(LIBDEST)
Guido van Rossum3912fd81996-07-24 02:35:43 +0000169LIBDEST= $(SCRIPTDIR)/python$(VERSION)
Guido van Rossum586480b1996-05-28 22:49:08 +0000170libinstall: python
Guido van Rossumbfc1bbe1996-06-20 14:30:38 +0000171 @for i in $(SCRIPTDIR) $(LIBDEST); \
Guido van Rossum586480b1996-05-28 22:49:08 +0000172 do \
173 if test ! -d $$i; then \
174 echo "Creating directory $$i"; \
175 mkdir $$i; \
176 chmod 755 $$i; \
177 else true; \
178 fi; \
179 done
Guido van Rossum7522f031994-08-30 12:42:01 +0000180 cp -r $(srcdir)/Lib/* $(LIBDEST)
181 PYTHONPATH=$(LIBDEST) \
182 ./python $(LIBDEST)/compileall.py $(LIBDEST)
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000183
Guido van Rossum586480b1996-05-28 22:49:08 +0000184# Install the manual page
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000185maninstall:
Guido van Rossumbfc1bbe1996-06-20 14:30:38 +0000186 @for i in $(MANDIR) $(MANDIR)/man1; \
Guido van Rossum586480b1996-05-28 22:49:08 +0000187 do \
188 if test ! -d $$i; then \
189 echo "Creating directory $$i"; \
190 mkdir $$i; \
191 chmod 755 $$i; \
192 else true; \
193 fi; \
194 done
Guido van Rossum6403d281995-01-20 16:51:32 +0000195 $(INSTALL_DATA) $(srcdir)/Misc/python.man \
Guido van Rossum90412791994-10-20 22:04:30 +0000196 $(MANDIR)/man1/python.1
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000197
Guido van Rossum586480b1996-05-28 22:49:08 +0000198# Install the include files
Guido van Rossum90412791994-10-20 22:04:30 +0000199INCLUDEPY= $(INCLUDEDIR)/Py
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000200inclinstall:
Guido van Rossumbfc1bbe1996-06-20 14:30:38 +0000201 @for i in $(INCLUDEDIR) $(INCLUDEPY); \
Guido van Rossum586480b1996-05-28 22:49:08 +0000202 do \
203 if test ! -d $$i; then \
204 echo "Creating directory $$i"; \
205 mkdir $$i; \
206 chmod 755 $$i; \
207 else true; \
208 fi; \
209 done
Guido van Rossumbfc1bbe1996-06-20 14:30:38 +0000210 @for i in $(srcdir)/Include/*.h; \
211 do \
212 echo $(INSTALL_DATA) $$i $(INCLUDEPY); \
213 $(INSTALL_DATA) $$i $(INCLUDEPY); \
214 done
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000215
Guido van Rossum586480b1996-05-28 22:49:08 +0000216# Install the lib*.a files and miscellaneous stuff needed by extensions
Guido van Rossum90412791994-10-20 22:04:30 +0000217LIBP= $(LIBDIR)/python
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000218LIBPL= $(LIBP)/lib
219libainstall: all
Guido van Rossumbfc1bbe1996-06-20 14:30:38 +0000220 @for i in $(LIBDIR) $(LIBP) $(LIBPL); \
Guido van Rossum586480b1996-05-28 22:49:08 +0000221 do \
222 if test ! -d $$i; then \
223 echo "Creating directory $$i"; \
224 mkdir $$i; \
225 chmod 755 $$i; \
226 else true; \
227 fi; \
228 done
Guido van Rossumbfc1bbe1996-06-20 14:30:38 +0000229 @for i in $(SUBDIRS); do \
230 echo Installing in subdirectory $$i; \
Guido van Rossum586480b1996-05-28 22:49:08 +0000231 $(INSTALL_DATA) $$i/lib$$i.a $(LIBPL)/lib$$i.a; \
Guido van Rossum4a91df41994-10-10 17:58:27 +0000232 $(RANLIB) $(LIBPL)/lib$$i.a; \
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000233 done
Guido van Rossum6403d281995-01-20 16:51:32 +0000234 $(INSTALL_DATA) Modules/config.c $(LIBPL)/config.c
Guido van Rossum6d47d0d1995-08-07 21:58:40 +0000235 $(INSTALL_DATA) $(srcdir)/Modules/getpath.c $(LIBPL)/getpath.c
Guido van Rossum6403d281995-01-20 16:51:32 +0000236 $(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(LIBPL)/config.c.in
237 $(INSTALL_DATA) Modules/Makefile $(LIBPL)/Makefile
238 $(INSTALL_DATA) Modules/Setup $(LIBPL)/Setup
Guido van Rossum70a86591996-07-21 02:46:47 +0000239 $(INSTALL_PROGRAM) $(srcdir)/Modules/makesetup $(LIBPL)/makesetup
Guido van Rossum6403d281995-01-20 16:51:32 +0000240 $(INSTALL_DATA) config.h $(LIBPL)/config.h
241 $(INSTALL_DATA) $(srcdir)/Python/frozenmain.c $(LIBPL)/frozenmain.c
Sjoerd Mullenderad5d2cf1995-08-09 09:18:20 +0000242 $(INSTALL_DATA) Modules/main.o $(LIBPL)/main.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000243
Guido van Rossum586480b1996-05-28 22:49:08 +0000244# Install the dynamically loadable modules
Guido van Rossumac405f61994-09-12 10:56:06 +0000245sharedinstall:
246 cd Modules; $(MAKE) \
247 OPT="$(OPT)" \
248 SO="$(SO)" \
249 LDSHARED="$(LDSHARED)" \
250 CCSHARED="$(CCSHARED)" \
251 LINKFORSHARED="$(LINKFORSHARED)" \
252 DESTSHARED="$(DESTSHARED)" \
Guido van Rossum3912fd81996-07-24 02:35:43 +0000253 prefix="$(prefix)" \
254 exec_prefix="$(exec_prefix)" \
Guido van Rossumac405f61994-09-12 10:56:06 +0000255 sharedinstall
256
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000257# Build the sub-Makefiles
Guido van Rossumd09119e1995-01-17 16:45:08 +0000258Makefiles: config.status Modules/Makefile.pre
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000259 (cd Modules; $(MAKE) -f Makefile.pre Makefile)
Guido van Rossumbfc1bbe1996-06-20 14:30:38 +0000260 @for i in . $(SUBDIRS); do \
261 (echo making Makefile in subdirectory $$i; cd $$i; \
262 $(MAKE) Makefile); \
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000263 done
264
Guido van Rossumd09119e1995-01-17 16:45:08 +0000265# Build the intermediate Makefile in Modules
266Modules/Makefile.pre: config.status
267 $(SHELL) config.status
268
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000269# Build the toplevel Makefile
270Makefile: Makefile.in config.status
271 CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) config.status
272
273# Run the configure script. If config.status already exists,
274# call it with the --recheck argument, which reruns configure with the
275# same options as it was run last time; otherwise run the configure
276# script with options taken from the $(WITH) variable
277config.status: $(srcdir)/configure
278 if test -f config.status; \
279 then $(SHELL) config.status --recheck; \
Guido van Rossumfb00a991995-01-12 12:26:50 +0000280 $(SHELL) config.status; \
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000281 else $(SHELL) $(srcdir)/configure $(WITH); \
282 fi
283
284.PRECIOUS: config.status python
285
286# Rerun configure with the same options as it was run last time,
287# provided the config.status script exists
288recheck:
289 $(SHELL) config.status --recheck
Guido van Rossumaf5b83e1995-01-04 19:02:35 +0000290 $(SHELL) config.status
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000291
292# Rebuild the configure script from configure.in; also rebuild config.h.in
293autoconf:
Guido van Rossum00682671996-06-28 20:15:41 +0000294 (cd $(srcdir); autoconf)
295 (cd $(srcdir); autoheader)
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000296
297# Create a tags file for vi
298tags::
299 ctags -w -t Include/*.h
300 for i in $(SUBDIRS); do ctags -w -t -a $$i/*.[ch]; done
301 sort tags -o tags
302
303# Create a tags file for GNU Emacs
304TAGS::
Guido van Rossum5552eb71994-08-05 15:51:00 +0000305 etags Include/*.h
306 for i in $(SUBDIRS); do etags -a $$i/*.[ch]; done
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000307
308# Add dependencies to sub-Makefiles
Guido van Rossum810a92f1993-12-28 19:39:56 +0000309depend:
Guido van Rossumbfc1bbe1996-06-20 14:30:38 +0000310 @for i in $(SUBDIRS); do \
311 (echo making depend in subdirectory $$i; cd $$i; \
312 $(MAKE) depend); \
Guido van Rossum810a92f1993-12-28 19:39:56 +0000313 done
Guido van Rossum627b2d71993-12-24 10:39:16 +0000314
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000315# Sanitation targets -- clean leaves libraries, executables and tags
316# files, which clobber removes those as well
317
Guido van Rossum627b2d71993-12-24 10:39:16 +0000318localclean:
319 -rm -f core *~ [@,#]* *.old *.orig *.rej
Guido van Rossum627b2d71993-12-24 10:39:16 +0000320
321clean: localclean
322 -for i in $(SUBDIRS); do \
Guido van Rossumbfc1bbe1996-06-20 14:30:38 +0000323 (echo making clean in subdirectory $$i; cd $$i; \
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000324 if test -f Makefile; \
325 then $(MAKE) clean; \
326 else $(MAKE) -f Makefile.*in clean; \
327 fi); \
Guido van Rossum627b2d71993-12-24 10:39:16 +0000328 done
329
Guido van Rossum810a92f1993-12-28 19:39:56 +0000330localclobber: localclean
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000331 -rm -f tags TAGS python
Guido van Rossumbfc1bbe1996-06-20 14:30:38 +0000332 -rm -f config.log config.cache config.h
Guido van Rossum810a92f1993-12-28 19:39:56 +0000333
334clobber: localclobber
Guido van Rossum627b2d71993-12-24 10:39:16 +0000335 -for i in $(SUBDIRS); do \
Guido van Rossumbfc1bbe1996-06-20 14:30:38 +0000336 (echo clobbering subdirectory $$i; cd $$i; \
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000337 if test -f Makefile; \
338 then $(MAKE) clobber; \
Guido van Rossum7b4d4601995-03-22 12:27:16 +0000339 else $(MAKE) -f $(srcdir)/Makefile.in clobber; \
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000340 fi); \
Guido van Rossum627b2d71993-12-24 10:39:16 +0000341 done
342
Guido van Rossumbfc1bbe1996-06-20 14:30:38 +0000343# Make things extra clean, before making a distribution:
344# remove all generated files, even Makefile[.pre]
Guido van Rossum627b2d71993-12-24 10:39:16 +0000345distclean: clobber
Guido van Rossum7b4d4601995-03-22 12:27:16 +0000346 -$(MAKE) -f $(srcdir)/Makefile.in \
347 SUBDIRS="$(SUBDIRSTOO)" clobber
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000348 -rm -f config.status config.log config.cache config.h Makefile
Guido van Rossume7abf4e1995-09-18 22:12:20 +0000349 -rm -f Modules/Makefile
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000350 -for i in $(SUBDIRS) $(SUBDIRSTOO); do \
351 for f in $$i/*.in; do \
352 f=`basename "$$f" .in`; \
353 if test "$$f" != "*"; then \
354 echo rm -f "$$i/$$f"; \
355 rm -f "$$i/$$f"; \
356 fi; \
357 done; \
Guido van Rossum627b2d71993-12-24 10:39:16 +0000358 done
Guido van Rossum627b2d71993-12-24 10:39:16 +0000359
Guido van Rossum586480b1996-05-28 22:49:08 +0000360# Check for smelly exported symbols (not starting with Py/_Py)
361smelly: all
362 for i in $(SUBDIRS); do \
363 echo --- $$i ---; \
364 nm -p $$i/lib$$i.a | \
365 sed -n "/ [TDB] /s/.* //p" | grep -v "^_*Py" | sort -u; \
366 done
367
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000368# Find files with funny names
Guido van Rossumbfc1bbe1996-06-20 14:30:38 +0000369funny:
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000370 find $(DISTDIRS) -type d \
371 -o -name '*.[chs]' \
372 -o -name '*.py' \
373 -o -name '*.doc' \
374 -o -name '*.sty' \
375 -o -name '*.bib' \
376 -o -name '*.dat' \
377 -o -name '*.el' \
378 -o -name '*.fd' \
379 -o -name '*.in' \
380 -o -name '*.tex' \
381 -o -name '*,[vpt]' \
382 -o -name 'Setup' \
383 -o -name 'Setup.*' \
384 -o -name README \
385 -o -name Makefile \
386 -o -name ChangeLog \
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000387 -o -name Repository \
Guido van Rossumbfc1bbe1996-06-20 14:30:38 +0000388 -o -name Root \
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000389 -o -name Entries \
390 -o -name Tag \
391 -o -name tags \
392 -o -name TAGS \
393 -o -name .cvsignore \
394 -o -name MANIFEST \
395 -o -print