summaryrefslogblamecommitdiffstats
path: root/Makefile.in
blob: d24abbbd5fe469f6cbf116f2b285c0cfe6c76a04 (plain) (tree)
1
2
3
4
5
6
7
8
9
10









                                        
                        
                              
                                 
                                                    
 
                                     
                                    
                                   


                                    


                         

                      
                      
                      

                     


                        
                        
                          
                          
                          
 

                                    



                             


                                                                      



                                                                                          
                    
                                 



                         
 
                                       
 
                                                                        

                                            
 
                                                  
                                                
                                             
                                             
                          
 


                                


                                  
                                                               



                                      
 

                                                                      
 

                                    




                                                                           

                              
                                     
                                  
                                                                
 
                      
                                    
                         

                                                         
                                              
                                             
 
                                        
                       
 
                                                 

                                    
 
                        
                                           
                            
                             
 

                                                                
                                 
 

                                                                        



                                                                  


                                                      
 


                                         





                                    
                                                                           
                                               
 
                                         
 
                                        
 
                                           
                          
 

                                                                            
                                              
                             
                                                                     
                                             
                                                                       



                                                                      
                     




                                        
                                             
                                   


                                  
                                                               





                                     
 
                                                              
                                     


                                                          
                                                          

                                                          
                                                           
                                                                                 




                                                          
                                                                                 
                                                          

                                                          

                                                            







                                                          
 
                   
                                                               

                                      
                        
                                      

                       
                                                                                  
                       
                


                                                
 
                         
                             
                          
 
                                                               
                                      
                                     
                                                               
                                   
                                
 
                                                                





                                                                


                                                                
                                                                



                                                       
 

                                                                  
                            




                                                  

                                              
                                      
                                                  
                                                                     
                    
 
                              
 
                      
                                      
              
 
               

                                                                
 

                                                                       
 

                                                   
                                                                 
                                             
                                                                      
 

                                                                    
 

                                                                   
                                                             
                                                         
                                                             
 

                                                              
 



                                                                                        
 
               
                                          
                                             
                                                
                           
                                                                                  
     

     

                                                      
 
            
                                                  
                                        





                                                               
 

                     
 
                 
                                               
                              















                                                                               
PACKAGE :=	@PACKAGE_NAME@
VERSION :=	@PACKAGE_VERSION@
RELEASE :=	@PACKAGE_RELEASE@
PACKAGE_BUGREPORT := @PACKAGE_BUGREPORT@

prefix :=	@prefix@
exec_prefix :=	@exec_prefix@
bindir :=	@bindir@
libdir :=	@libdir@
datadir :=	@datadir@
docdir :=	@docdir@
mandir :=	$(datadir)/man
localedir :=	$(datadir)/locale
etcdir :=	$(subst /usr/etc,/etc,$(prefix)/etc)

QUILT_DIR =	$(datadir)/$(PACKAGE)
SCRIPTS_DIR =	$(QUILT_DIR)/scripts
COMPAT_DIR =	$(QUILT_DIR)/compat
LIB_DIR =	$(libdir)/$(PACKAGE)

INSTALL :=	@INSTALL@
POD2MAN :=	@POD2MAN@
COLUMN :=	@COLUMN@
GETOPT :=	@GETOPT@
PERL :=		@PERL@
BASH :=		@BASH@
GREP :=		@GREP@
TAIL :=		@TAIL@
SED :=		@SED@
AWK :=		@AWK@
DIFF :=		@DIFF@
PATCH :=	@PATCH@
MKTEMP :=	@MKTEMP@
MSGFMT :=	@MSGFMT@
DIFFSTAT :=	@DIFFSTAT@
RPMBUILD :=	@RPMBUILD@
SENDMAIL :=	@SENDMAIL@

COMPAT_SYMLINKS	:= @COMPAT_SYMLINKS@
COMPAT_PROGRAMS	:= @COMPAT_PROGRAMS@

default: all

define COMPAT_SYMLINK_install
install-compat-symlink-$(strip $(1)): install-compat
	ln -sf $($(shell echo $(1) | $(AWK) '{print toupper($$1)}')) \
	       $(BUILD_ROOT)$(COMPAT_DIR)/$(strip $(1))
endef

$(foreach symlink, $(COMPAT_SYMLINKS), $(eval $(call COMPAT_SYMLINK_install, $(symlink))))

CC :=		@CC@
CPPFLAGS +=	@CPPFLAGS@ @DEFS@
CFLAGS +=	@CFLAGS@
LDFLAGS +=	@LDFLAGS@
LIBS :=		@LIBS@
EXEEXT :=	@EXEEXT@

ISODATE :=	$(shell date +%Y-%m-%d)

#-----------------------------------------------------------------------
DIRT +=		$(shell find . -name '*~')
DIRT +=		$(shell find . -name '.\#*')

SRC +=		COPYING AUTHORS TODO Makefile.in \
		configure.ac config/install-sh \
		quilt.spec.in quilt.changes \
		bash_completion quilt.quiltrc
DIRT +=		quilt.spec

BIN_IN :=	quilt guards
BIN_SRC :=	$(BIN_IN:%=%.in)
BIN :=		$(BIN_IN)
SRC +=		$(BIN_SRC:%=bin/%)
DIRT +=		$(BIN_IN:%=bin/%)

QUILT_IN :=	$(patsubst quilt/%.in,%,$(wildcard quilt/*.in))
QUILT_SRC :=	$(QUILT_IN:%=%.in)
QUILT :=	$(QUILT_IN)
SRC +=		$(QUILT_SRC:%=quilt/%)
DIRT +=		$(QUILT_IN:%=quilt/%)

SCRIPTS_IN :=	patchfns parse-patch inspect dependency-graph edmail \
		remove-trailing-ws

SCRIPTS_SRC :=	$(SCRIPTS_IN:%=%.in)
SCRIPTS :=	$(SCRIPTS_IN)
SRC +=		$(SCRIPTS_SRC:%=scripts/%)
DIRT +=		$(SCRIPTS_IN:%=scripts/%)

SRC +=		$(wildcard compat/*.in) $(wildcard compat/*.sh)
DIRT +=		$(patsubst %.in,%,$(wildcard compat/*.in)) compat/compatfns

LIB_SRC :=	backup-files.c
LIB :=		backup-files$(EXEEXT)
SRC +=		$(LIB_SRC:%=lib/%)
DIRT +=		lib/backup-files$(EXEEXT) $(LIB_SRC:%.c=lib/%.o)

DOC_IN :=	README
DOC_SRC :=	$(DOC_IN:%=doc/%.in)
DOC :=		$(DOC_IN)
SRC +=		$(DOC_SRC)
SRC +=          doc/main.tex doc/quilt.pdf doc/Makefile \
		doc/quilt.1.in doc/README.MAIL
DIRT +=		$(DOC_IN:%=doc/%) doc/quilt.1

MAN1 :=		bin/guards.1 doc/quilt.1
DIRT +=		$(MAN1)

#DEBIAN :=	changelog control copyright rules
#
#SRC +=		$(DEBIAN:%=debian/%)

LINGUAS :=	fr de ja
PO :=		quilt.pot $(LINGUAS:%=%.po)
SRC +=		$(PO:%=po/%)
DIRT +=         po/*.mo po/*~

SRC +=		$(wildcard test/*.test) test/run test/Makefile \
		test/test.quiltrc
SRC +=		changes2changelog

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

all : scripts compat-programs $(if $(MSGFMT),$(LINGUAS:%=po/%.mo))

.PHONY :: compat-programs
compat-programs : $(COMPAT_PROGRAMS:%=compat/%)
	@for program in $+; do \
	    test -x $$program || chmod +x $$program; \
	done

$(LIB:%=lib/%) : $(LIB_SRC:%.c=lib/%.o)
	$(CC) -o $@ $(LDFLAGS) $^ $(LIBS)

%.mo : %.po
	msgfmt --statistics -o $@ $<

%.po : po/quilt.pot
	msgmerge -o $@ $@ $^

scripts : $(BIN:%=bin/%) $(QUILT:%=quilt/%) $(SCRIPTS:%=scripts/%) compat \
	  $(LIB:%=lib/%) $(DOC:%=doc/%) $(MAN1)

dist : clean $(PACKAGE)-$(VERSION).tar.gz

snapshot : $(PACKAGE)-$(ISODATE).tar.bz2

rpm rpmbuild : $(PACKAGE)-$(VERSION).tar.gz
	$(RPMBUILD) -ta $<

po/quilt.pot: $(filter-out debian/control.in doc/quilt.1.in doc/README.in, \
			   $(wildcard */*.in))
	rm -f po/quilt.pot; touch po/quilt.pot
	for file in $+ ; do \
	  if test -n "`$(SED) -ne '1{ /@BASH''@/p }' $$file`"; then \
	    bash --dump-po-strings $$file ; \
	  elif test -n "`$(SED) -ne '1{ /@PERL''@/p }' $$file`"; then \
	    xgettext --from-code=UTF-8 --omit-header --language=Perl \
	    	     --keyword=_ -o - $$file; \
	  else \
	    echo "Don't know how to handle $$file" >&2 ; \
	    exit 1; \
	  fi \
	done \
	|msguniq \
	|msgcat --force-po -F - $@ -o $@

doc/README : doc/README.in $(QUILT:%=quilt/%)
	@echo "README.in -> README"
	@while read line; do \
		case "$$line" in \
		'@REFERENCE''@') \
			$(MAKE) -s reference |egrep -v '^make'\
			;; \
		*) \
			echo $$line \
			;; \
		esac ; \
	done 2>&1 < $< > $@

doc/quilt.1: doc/quilt.1.in $(QUILT:%=quilt/%) compat-programs
	@echo "quilt.1.in -> quilt.1"
	@here=`pwd`;                                     \
	PATH="$$here/compat:$$PATH";		         \
	export PATH;                                     \
	 while read line; do                             \
	  case "$$line" in                               \
	    '@REFERENCE''@')                             \
	       for cmd in $(sort $(QUILT:%=quilt/%)) ; do \
		($(BASH) -c ". scripts/patchfns ; LC_ALL=C . $$here/$$cmd -h")| \
		   sed -e 's/Usage: quilt //'            \
	               -e 's/^\([^ ]*\)/\\fB\1\\fP/'     \
		       -e 's/^/.IP "/' -e 's/$$/ " 4/' | \
	           head -n 1;                            \
	         echo ;                                  \
		($(BASH) -c ". scripts/patchfns ; LC_ALL=C . $$here/$$cmd -h")| \
	         grep -v 'Usage: quilt' |                \
	           sed -e $$'s/^\t//'                    \
	               -e $$'s/\t/\\\n/' |               \
	           sed -e 's/^\(-.*\)$$/.IP "    \1" 8/' \
	               -e 's/\$$EDITOR ([^)]*)/$$EDITOR/'; \
	         echo;                                   \
	       done                                      \
	     ;;                                          \
	     *)                                          \
	       echo "$$line"                             \
	     ;;                                          \
	   esac ;                                        \
	done 2>&1 < $< > $@

.PHONY :: reference
reference : $(QUILT:%=quilt/%) compat-programs scripts/patchfns
	@PATH="`pwd`/compat:$$PATH"; \
	export PATH; \
	dir=$(CURDIR); \
	for i in $(QUILT:%=quilt/%); \
	do \
		echo; \
		($(BASH) -c ". scripts/patchfns ; cd $$dir ;LC_ALL=C . $$i -h"); \
		echo; \
	done | \
	sed -e 's/\$$EDITOR ([^)]*)/$$EDITOR/' \
	    -e '/^$$/!s/^/  /' \
	    -e 's/^  Usage: *//'

bin/guards.1 : bin/guards
	mkdir -p `dirname $@`
	$(POD2MAN) $< > $@

$(PACKAGE)-$(VERSION).tar.gz : $(SRC) configure $(PACKAGE).spec
	rm -f $(PACKAGE)-$(VERSION) $@
	ln -s . $(PACKAGE)-$(VERSION)
	tar chf - $(+:%=$(PACKAGE)-$(VERSION)/%) | gzip -9 > $@
	rm -f $(PACKAGE)-$(VERSION)
	@echo "File $@ created."

$(PACKAGE)-$(ISODATE).tar.bz2 : $(SRC) configure $(PACKAGE).spec
	rm -f $(PACKAGE)-$(ISODATE) $@
	ln -s . $(PACKAGE)-$(ISODATE)
	tar chf - $(+:%=$(PACKAGE)-$(ISODATE)/%) | bzip2 -9 > $@
	rm -f $(PACKAGE)-$(ISODATE)
	@echo "File $@ created."

$(PACKAGE).spec : $(PACKAGE).spec.in $(PACKAGE).changes Makefile
	@echo "Generating spec file" ; \
	set -e ; \
	changelog="`./changes2changelog $(PACKAGE).changes`" ; \
	awk '{ gsub(/@VERSION''@/, "$(VERSION)") ; \
	       gsub(/@RELEASE''@/, "$(RELEASE)") ; \
	       gsub(/@CHANGELOG''@/, changelog) ; \
	       print }' changelog="$$changelog" $< > $@

$(patsubst %.in,%,$(wildcard quilt/*.in scripts/*.in)) :: Makefile
% :: %.in
	@echo "$< -> $@" >&2
	@sed -e 's:@LIB''@:$(LIB_DIR):g' \
	     -e 's:@QUILT''@:$(QUILT_DIR):g' \
	     -e 's:@SCRIPTS''@:$(SCRIPTS_DIR):g' \
	     -e 's:@PERL''@:$(PERL):g' \
	     -e 's:@BASH''@:$(BASH):g' \
	     -e 's:@VERSION''@:$(VERSION):g' \
	     -e 's:@RELEASE''@:$(RELEASE):g' \
	     -e 's:@MTA''@:$(MTA):g' \
	     -e 's:@LOCALEDIR''@:$(localedir):g' \
	     -e 's:@DOCSUBDIR''@:$(docdir)/$(PACKAGE)-$(VERSION):g' \
	     $< > $@

lib/backup-files.o :: Makefile

Makefile : Makefile.in
	@echo "Please run ./configure"
	@false

install-main ::
	$(INSTALL) -d $(BUILD_ROOT)$(bindir)
	$(INSTALL) -m 755 $(BIN:%=bin/%) $(BUILD_ROOT)$(bindir)/

	$(INSTALL) -d $(BUILD_ROOT)$(QUILT_DIR)
	$(INSTALL) -m 755 $(QUILT:%=quilt/%) $(BUILD_ROOT)$(QUILT_DIR)/

	$(INSTALL) -d $(BUILD_ROOT)$(SCRIPTS_DIR)
	$(INSTALL) -m 755 $(patsubst %,scripts/%, \
			     $(filter-out patchfns,$(SCRIPTS))) \
		  $(BUILD_ROOT)$(SCRIPTS_DIR)
	$(INSTALL) -m 644 scripts/patchfns $(BUILD_ROOT)$(SCRIPTS_DIR)

	$(INSTALL) -d $(BUILD_ROOT)$(LIB_DIR)
	$(INSTALL) -m 755 -s $(LIB:%=lib/%) $(BUILD_ROOT)$(LIB_DIR)/

	$(INSTALL) -d $(BUILD_ROOT)$(docdir)/$(PACKAGE)-$(VERSION)/
	$(INSTALL) -m 644 doc/README \
		$(BUILD_ROOT)$(docdir)/$(PACKAGE)-$(VERSION)/
	$(INSTALL) -m 644 doc/quilt.pdf doc/README.MAIL \
		$(BUILD_ROOT)$(docdir)/$(PACKAGE)-$(VERSION)/

	$(INSTALL) -d $(BUILD_ROOT)$(mandir)/man1
	$(INSTALL) -m 644 $(MAN1) $(BUILD_ROOT)$(mandir)/man1/

	$(INSTALL) -d $(BUILD_ROOT)$(etcdir)
	$(INSTALL) -d $(BUILD_ROOT)$(etcdir)/bash_completion.d
	$(INSTALL) -m 644 bash_completion $(BUILD_ROOT)$(etcdir)/bash_completion.d/quilt
	$(INSTALL) -m 644 quilt.quiltrc $(BUILD_ROOT)$(etcdir)/

install-compat:
	@rm -rf $(BUILD_ROOT)$(COMPAT_DIR)
ifneq ($(COMPAT_PROGRAMS)$(COMPAT_SYMLINKS),)
	$(INSTALL) -d $(BUILD_ROOT)$(COMPAT_DIR)
ifneq ($(COMPAT_PROGRAMS),)
	$(INSTALL) -m 755 $(COMPAT_PROGRAMS:%=compat/%) $(BUILD_ROOT)$(COMPAT_DIR)
endif
endif

install: scripts install-main install-compat \
	 $(COMPAT_SYMLINKS:%=install-compat-symlink-%)

uninstall ::
	rm -rf $(BIN:%=$(BUILD_ROOT)$(bindir)/%) \
	       $(BUILD_ROOT)$(LIB_DIR) \
	       $(BUILD_ROOT)$(QUILT_DIR) \
	       $(patsubst %,$(BUILD_ROOT)$(mandir)/man1/%, \
		   $(notdir $(MAN1))) \
	       $(BUILD_ROOT)$(etcdir)/bash_completion.d/quilt \
	       $(BUILD_ROOT)$(etcdir)/quilt.quiltrc \
	       $(BUILD_ROOT)$(docdir)/$(PACKAGE)-$(VERSION)/

clean :
	rm -f $(DIRT)

distclean : clean
	rm -f config.log config.status Makefile
	rm -rf autom4te.cache/

ifneq ($(MSGFMT),)
install-main ::
	for lang in $(LINGUAS) ; do \
		install -d $(BUILD_ROOT)$(localedir)/$$lang/LC_MESSAGES ; \
		install -m 644 po/$$lang.mo \
		    $(BUILD_ROOT)$(localedir)/$$lang/LC_MESSAGES/quilt.mo ; \
	done

uninstall ::
	for lang in $(LINGUAS) ; do \
		rm -f $(BUILD_ROOT)$(localedir)/$$lang/LC_MESSAGES/quilt.mo ; \
	done
endif

.PHONY :: all install uninstall clean distclean