include Makefile.inc

srcdir= @srcdir@
VPATH = @srcdir@
top_srcdir= @top_srcdir@

INSTALL= @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
#LIBEFENCE = -lefence

#DEBUG = -g
installprefix=$(ROOT)

#LIBEFENCE = -lefence

CVSTAG = r$(subst .,-,$(VERSION))

################################### Leave this stuff alone

### These are variables meant to be exported

BINDIR=$(prefix)/bin
RPMBINDIR=$(subst usr/bin,bin,$(BINDIR))
MANDIR=$(prefix)/man/man8
LIBDIR=$(libdir)
INCDIR=$(prefix)/include/rpm
ETCDIR=$(ROOT)/etc

# -----------------------------------------------------------------------

SUBDIRS = popt @MISCDIR@ lib build tools @PO@
ALLSUBDIRS = popt misc lib build tools po
INSTSUBDIRS = lib @PO@
OTHERSUBDIRS = docs autodeps
OBJS = rpm.o query.o install.o verify.o checksig.o ftp.o url.o build.o \
       @GETTEXTSTUB@
PROGS = @RPM@ rpm2cpio
LIBS = @LIBS@ @LIBINTL@ @LIBDL@
LOADLIBES = -lrpmbuild -lpopt -lrpm @LIBMISC@
LDFLAGS_STATIC = @LDFLAGS_STATIC@

SOURCES = $(subst .o,.c,$(OBJS))

ifeq (.depend-done,$(wildcard .depend-done))
TARGET=everything
else
TARGET=@TARGET@
endif

all: $(TARGET)

rpm: lib/librpm.a build/librpmbuild.a @MISCPATH@ $(OBJS) 
	$(CC) -o rpm $(LDFLAGS_STATIC) $(OBJS) $(LDFLAGS) $(LOADLIBES) $(LIBS) \
		$(LIBEFENCE)

rpm.shared: lib/librpm.a build/librpmbuild.a $(OBJS)
	$(CC) -o rpm.shared $(LDFLAGS) $(OBJS) $(LOADLIBES) $(LIBS) \
		$(LIBEFENCE)

# we don't normally build this, so ./configure doesn't try very hard
# to make it work
rpmconvert: lib/librpm.a convertdb.o oldrpmdb.o
	$(CC) -o rpmconvert $(LDFLAGS) convertdb.o oldrpmdb.o -lgdbm \
		$(LOADLIBES) $(LIBS)

rpm2cpio: lib/librpm.a rpm2cpio.o
	$(CC) -o rpm2cpio $(LDFLAGS) rpm2cpio.o $(LOADLIBES) $(LIBS)

rpm.o: rpm.c query.h install.h lib/rpmlib.h Makefile
	$(CC) $(CFLAGS) -DRPMNLSPACKAGE=\"$(RPMNLSPACKAGE)\" \
		-DRPMNLSDIR=\"$(RPMNLSDIR)\" \
		-DVERSION=\"$(VERSION)\"  \
		-DLIBRPMALIAS_FILENAME="\"$(LIBRPMALIAS_FILENAME)"\" \
		-c $(srcdir)/rpm.c

# these rules should be in here, but they drive me batty
#Makefile: Makefile.in misc/Makefile.in lib/Makefile.in build/Makefile.in \
          #tools/Makefile.in po/Makefile.in config.status
	#sh ./config.status

#config.status: configure
	#sh ./config.status --recheck

#configure: configure.in
	#cd $(srcdir); autoconf

everything: make-subdirs $(PROGS)

make-subdirs:
	for d in $(SUBDIRS); do \
		(cd $$d; $(MAKE)) \
		  || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac;\
	done && test -z "$$fail"

newtree:
	rm -f RCS
	ln -sf /usr/rhs/RCS/rpm-2.0 RCS
	for d in $(SUBDIRS) $(OTHERSUBDIRS); do \
		mkdir -p $$d ;\
		(cd $$d; rm -f RCS; ln -sf /usr/rhs/RCS/rpm-2.0/$$d RCS) \
		  || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac;\
	done && test -z "$$fail"

$(PROGS): $(OBJS)

install: all
	[ -d $(installprefix)/$(RPMBINDIR) ] || \
		mkdir -p $(installprefix)/$(RPMBINDIR)
	[ -d $(installprefix)/$(RPMNLSDIR) ] || \
		mkdir -p $(installprefix)/$(RPMNLSDIR)
	[ -d $(installprefix)/$(BINDIR) ] || mkdir -p $(installprefix)/$(BINDIR)
	[ -d $(installprefix)/$(MANDIR) ] || mkdir -p $(installprefix)/$(MANDIR)
	[ -d $(installprefix)/$(ETCDIR) ] || mkdir -p $(installprefix)/$(ETCDIR)
	[ -d $(installprefix)/$(LIBDIR) ] || mkdir -p $(installprefix)/$(LIBDIR)
	[ -d $(installprefix)/$(INCDIR) ] || mkdir -p $(installprefix)/$(INCDIR)
	[ -d $(installprefix)/$(RPMCONFIGDIR) ] ||  \
		mkdir -p $(installprefix)/$(INCDIR)
	if [ -x ./rpm ]; then \
	    $(INSTALL_PROGRAM) -s -m 755 rpm $(installprefix)/$(RPMBINDIR); \
	else \
	    $(INSTALL_PROGRAM) -s -m 755 rpm.shared $(installprefix)/$(RPMBINDIR)/rpm; \
	fi
	$(INSTALL_PROGRAM) -m 755 $(srcdir)/gendiff $(installprefix)/$(BINDIR)
	$(INSTALL_PROGRAM) -m 755 $(topdir)/find-provides.sh $(installprefix)/$(BINDIR)/find-provides
	$(INSTALL_PROGRAM) -m 755 $(topdir)/find-requires.sh $(installprefix)/$(BINDIR)/find-requires
	$(INSTALL_PROGRAM) -s -m 755 rpm2cpio $(installprefix)/$(BINDIR)
	$(INSTALL_DATA) -m 644 $(srcdir)/rpm.8 $(installprefix)/$(MANDIR)
	$(INSTALL_DATA) -m 644 $(srcdir)/rpm2cpio.8 $(installprefix)/$(MANDIR)
	$(INSTALL_DATA) -m 644 $(topdir)/lib-rpmrc $(installprefix)/$(LIBDIR)/rpmrc
	$(INSTALL_DATA) -m 644 $(srcdir)/rpmpopt $(installprefix)/$(LIBDIR)/rpmpopt
	(cd lib; $(MAKE) LIBDIR=$(installprefix)/$(LIBDIR) INCDIR=$(installprefix)/$(INCDIR) install)
	for d in $(INSTSUBDIRS); do \
		(cd $$d; $(MAKE) installprefix=$(installprefix) LIBDIR=$(installprefix)/$(LIBDIR) INCDIR=$(installprefix)/$(INCDIR) install) ;\
	done

.PHONY:                tar
tar:
	rm -rf /tmp/rpm-$(VERSION)
	make installprefix=/tmp/rpm-$(VERSION)$(ROOT) install
	mkdir -p /tmp/rpm-$(VERSION)@prefix@/src/redhat/SOURCES
	mkdir -p /tmp/rpm-$(VERSION)@prefix@/src/redhat/SPECS
	mkdir -p /tmp/rpm-$(VERSION)@prefix@/src/redhat/SRPMS
	mkdir -p /tmp/rpm-$(VERSION)@prefix@/src/redhat/RPMS
	mkdir -p /tmp/rpm-$(VERSION)@prefix@/src/redhat/BUILD
	mkdir -p /tmp/rpm-$(VERSION)@varprefix@/lib/rpm
	mkdir -p /tmp/rpm-$(VERSION)/var/tmp
#	Couldn't figure de ARCH value   
#	mkdir -p /tmp/rpm-$(VERSION)/usr/local/src/redhat/RPMS/i386
	cd /tmp/rpm-$(VERSION) ; tar cvf /tmp/rpm-$(VERSION).tar .

.PHONY:		clean
clean:
	for d in $(ALLSUBDIRS); do \
		(cd $$d; $(MAKE) $@) ;\
	done
	rm -f *.a *.o core *~ $(PROGS) rpm.shared
	find . -name "*.orig" -exec rm {} \;
	find . -name core -exec rm {} \;

.PHONY:		distclean
distclean:	
	for d in $(ALLSUBDIRS); do \
		(cd $$d; $(MAKE) $@) ;\
	done
	rm -f *.a *.o core *~ $(PROGS) rpm.shared librpmrc find-provides.sh find-requires.sh
	rm -f .depend-done Makefile Makefile.inc config.h config.cache 
	rm -f config.status config.log lib-rpmrc


.PHONY:		depend
depend:
	topdir_path=`( cd $(top_srcdir) && pwd )` ; \
	$(CPP) -MM $(CFLAGS) $(srcdir)/$(SOURCES) | \
		sed s+$$topdir_path+$(top_srcdir)+g > .depend ; \
	for d in $(ALLSUBDIRS); do \
		(cd $$d; $(MAKE) $@) ;\
	done
	echo > .depend-done

.PHONY: noconfig
noconfig:
	find . -name "Makefile" -exec rm {} \; 
	rm -f *gz *rpm config.*

.PHONY: archive
archive: 
	@echo " "
	@echo "I hope you checked everything out and made sure it builds"
	@echo "maybe someday Erik will get around to making that automatic."
	@echo
	@echo "This is version $(VERSION)."
	@sleep 5
	cvs tag -F $(CVSTAG) .
	@rm -rf /tmp/rpm-$(VERSION) /tmp/rpm
	@cd /tmp; cvs export -r$(CVSTAG) rpm
	@mv /tmp/rpm /tmp/rpm-$(VERSION)
	@rm /tmp/rpm-$(VERSION)/popt/popt.spec
	@cd /tmp/rpm-$(VERSION); ./autogen.sh ; make depend; make distclean
	@cd /tmp/rpm-$(VERSION); ./autogen.sh --noconfigure
	@cd /tmp; tar czSpf rpm-$(VERSION).tar.gz rpm-$(VERSION)
	@rm -rf /tmp/rpm-$(VERSION)
	@cp /tmp/rpm-$(VERSION).tar.gz .
	@rm -f /tmp/rpm-$(VERSION).tar.gz 
	@echo " "
	@echo "The final archive is ./rpm-$(VERSION).tar.gz."

ifeq (.depend,$(wildcard .depend))
include .depend
endif
