# 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 ===

VERSION=	@VERSION@

srcdir=		@srcdir@
VPATH=		@srcdir@

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

DEFS=		@DEFS@


# === 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=		abstract.o bufferobject.o \
		classobject.o cobject.o complexobject.o \
		fileobject.o floatobject.o \
		frameobject.o funcobject.o intobject.o listobject.o \
		longobject.o dictobject.o methodobject.o \
		moduleobject.o object.o rangeobject.o \
		sliceobject.o stringobject.o \
		tupleobject.o typeobject.o

SRCS=		abstract.c bufferobject.c \
		classobject.c cobject.c complexobject.c \
		fileobject.c floatobject.c \
		frameobject.c funcobject.c intobject.c listobject.c \
		longobject.c dictobject.c methodobject.c \
		moduleobject.c object.c rangeobject.c \
		sliceobject.c stringobject.c \
		tupleobject.c typeobject.c

LIBRARY=	../libpython$(VERSION).a

# === Rules ===

all:		$(OBJS)

# This target is used by the master Makefile to add the objects to the library
add2lib:	$(OBJS)
		$(AR) cr $(LIBRARY) $(OBJS)
		touch add2lib

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

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

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

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

.PRECIOUS:	Makefile

abstract.o: abstract.c
bufferobject.o: bufferobject.c
classobject.o: classobject.c
cobject.o: cobject.c
complexobject.o: complexobject.c
fileobject.o: fileobject.c
floatobject.o: floatobject.c
frameobject.o: frameobject.c
funcobject.o: funcobject.c
intobject.o: intobject.c
listobject.o: listobject.c
longobject.o: longobject.c
dictobject.o: dictobject.c
methodobject.o: methodobject.c
moduleobject.o: moduleobject.c
object.o: object.c
rangeobject.o: rangeobject.c
sliceobject.o: sliceobject.c
stringobject.o: stringobject.c
tupleobject.o: tupleobject.c
typeobject.o: typeobject.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
