# NOTE: Makefile.in is converted into Makefile by the configure script
# in the parent directory.  Once configure has run, you can recreate
# the Makefile by running just config.status.

# === Variables set by config.stat ===

srcdir=		@srcdir@
VPATH=		@srcdir@

CC=		@CC@
RANLIB=		@RANLIB@
AR=		@AR@

DEFS=		@DEFS@
LIBOBJS=	@LIBOBJS@
LIBS=		@LIBS@
DLINCLDIR=	@DLINCLDIR@

# Machine-dependent subdirectories
MACHDEP=	@MACHDEP@


# === Other things that are customizable but not by configure ===

INCLDIR=	$(srcdir)/../Include
OPT=		@OPT@
CFLAGS=		$(OPT) -I$(INCLDIR) -I.. $(DEFS)

MKDEP=		mkdep
SHELL=		/bin/sh


# === Fixed definitions ===

OBJS=		\
		bltinmodule.o \
		ceval.o compile.o \
		errors.o \
		frozen.o \
		getargs.o getcompiler.o getcopyright.o getmtime.o \
		getplatform.o getversion.o graminit.o \
		import.o importdl.o \
		marshal.o modsupport.o mystrtoul.o \
		pyfpe.o pystate.o pythonrun.o \
		sigcheck.o structmember.o sysmodule.o \
		traceback.o \
		$(LIBOBJS)

LIB=		libPython.a

SYSLIBS=	-lm


# === Rules ===

all:		$(LIB)

$(LIB):		$& $(OBJS)
		-rm -f $(LIB)
		$(AR) cr $(LIB) $(OBJS)
		$(RANLIB) $(LIB)

clean:
		-rm -f *.o core *~ [@,#]* *.old *.orig *.rej

clobber:	clean
		-rm -f *.a tags TAGS

Makefile:	$(srcdir)/Makefile.in ../config.status
		(cd ..; CONFIG_FILES=Python/Makefile CONFIG_HEADERS= \
		$(SHELL) config.status)

getplatform.o:	getplatform.c Makefile
		$(CC) -c $(CFLAGS) -DPLATFORM='"$(MACHDEP)"' \
		      $(srcdir)/getplatform.c

importdl.o:	importdl.c
		$(CC) -c $(CFLAGS) -I$(DLINCLDIR) $(srcdir)/importdl.c

depend:
		$(MKDEP) $(CFLAGS) `echo $(OBJS) | tr ' ' '\012' | \
					sed 's|\(.*\)\.o|$(srcdir)/\1.c|'`

.PRECIOUS:	Makefile

bltinmodule.o: bltinmodule.c
ceval.o: ceval.c
compile.o: compile.c
dup2.o: dup2.c
errors.o: errors.c
fmod.o: fmod.c
frozen.o: frozen.c
frozenmain.o: frozenmain.c
getargs.o: getargs.c
getcompiler.o: getcompiler.c
getcopyright.o: getcopyright.c
getcwd.o: getcwd.c
getmtime.o: getmtime.c
getopt.o: getopt.c
getplatform.o: getplatform.c
getversion.o: getversion.c
graminit.o: graminit.c
import.o: import.c
importdl.o: importdl.c
marshal.o: marshal.c
memmove.o: memmove.c
modsupport.o: modsupport.c
mystrtoul.o: mystrtoul.c
pyfpe.o: pyfpe.c
pystate.o: pystate.c
pythonrun.o: pythonrun.c
sigcheck.o: sigcheck.c
strerror.o: strerror.c
strtod.o: strtod.c
structmember.o: structmember.c
sysmodule.o: sysmodule.c
thread.o: thread.c
traceback.o: traceback.c
version.o: version.c

# DO NOT DELETE THIS LINE -- mkdep uses it.
# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
