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





                                       
                    
                                                         
                                        


                
                  





                             


                                             

                                  


                                             



                                        

                                   
 


                                                       
 

                                   


                                                                    
 


                                                           
 
 


                                                   
 








                                                            




                                
                                    
                           


                     
                          




                                                       




                                                    

           




                                  


                           









                                         


                                            

 
                                                          


                                   

                                                     
                                
 
                                                                












                                
                     


                            
         


                            



                            



                           



                                    


            
MAKEFLAGS += --no-builtin-rules
MAKEFLAGS += --no-builtin-variables
MAKEFLAGS += --no-print-directory
MAKEFLAGS += --warn-undefined-variables


package     := grepc
DISTVERSION := $(shell git describe --always 2>/dev/null)
DISTNAME    := $(package)-$(DISTVERSION)


srcdir      := .
builddir    := tmp
DESTDIR     :=
prefix      := /usr/local
exec_prefix := $(prefix)


BINDIR       := $(srcdir)/bin
DATAROOTDIR  := $(srcdir)/share
DOCDIR       := $(DATAROOTDIR)/doc/$(package)
MANDIR       := $(DATAROOTDIR)/man

bindir       := $(exec_prefix)/bin
datarootdir  := $(prefix)/share
docdir       := $(datarootdir)/doc/$(package)
mandir       := $(datarootdir)/man

_prefix      := $(DESTDIR)$(prefix)
_exec_prefix := $(DESTDIR)$(exec_prefix)
_bindir      := $(DESTDIR)$(bindir)
_docdir      := $(DESTDIR)$(docdir)
_mandir      := $(DESTDIR)$(mandir)

BINDIRS      := $(sort $(shell find $(BINDIR) -type d))
DOCDIRS      := $(sort $(shell find $(DOCDIR) -type d))
MANDIRS      := $(sort $(shell find $(MANDIR) -type d))

_DIRS        := $(sort $(builddir))

_bindirs     := $(patsubst $(srcdir)/%,$(_exec_prefix)/%,$(BINDIRS))
_docdirs     := $(patsubst $(srcdir)/%,$(_prefix)/%,$(DOCDIRS))
_mandirs     := $(patsubst $(srcdir)/%,$(_prefix)/%,$(MANDIRS))

_dirs        := $(sort $(_bindir) $(_docdir) $(_mandir))
_alldirs     := $(sort $(_bindirs) $(_docdirs) $(_mandirs))
_subdirs     := $(filter-out $(_dirs),$(_alldirs))


BIN      := $(sort $(shell find $(BINDIR) -type f))
DOC      := $(sort $(shell find $(DOCDIR) -type f))
MAN      := $(sort $(shell find $(MANDIR) -type f))

_bin     := $(patsubst $(srcdir)/%,$(_exec_prefix)/%,$(BIN))
_doc     := $(patsubst $(srcdir)/%,$(_prefix)/%,$(DOC))
_man     := $(patsubst $(srcdir)/%,$(_prefix)/%,$(MAN))
_prog    := $(_bin)
_data    := $(_doc) $(_man)

_bin_rm  := $(addsuffix -rm,$(wildcard $(_bin)))
_doc_rm  := $(addsuffix -rm,$(wildcard $(_doc)))
_man_rm  := $(addsuffix -rm,$(wildcard $(_man)))


INSTALL         := install
INSTALL_DIR     := $(INSTALL) -d
INSTALL_PROGRAM := $(INSTALL)
INSTALL_DATA    := $(INSTALL) -m 644
MKDIR           := mkdir -p
RM              := rm


modules     := bin doc man
install     := $(foreach x,$(modules),install-$(x))
installdirs := $(foreach x,$(modules),installdirs-$(x))
uninstall   := $(addprefix un,$(install))


DISTFILE    := $(builddir)/$(DISTNAME).tar
compression := gz xz
dist        := $(foreach x,$(compression),dist-$(x))


.PHONY: all
all:


.PHONY: install     $(install)
.PHONY: installdirs $(installdirs)
.PHONY: uninstall   $(uninstall)
.PHONY: dist        $(dist)
.PHONY: dist-tar
.PHONY: clean


.SECONDEXPANSION:

install:        $(install)
$(install):     install-%:     $$(_%)
installdirs:    $(installdirs)
$(installdirs): installdirs-%: $$(_%dirs)
uninstall:      $(uninstall)
$(uninstall):   uninstall-%:   $$(_%_rm)
dist:           $(dist)
$(dist):        dist-%:        $(DISTFILE).%
dist-tar:       $(DISTFILE)


$(_prog): $(_exec_prefix)/%: $(srcdir)/% Makefile | $$(@D)
	$(info INSTALL	$@)
	$(INSTALL_PROGRAM) -T $< $@

$(_data): $(_prefix)/%: $(srcdir)/% Makefile | $$(@D)
	$(info INSTALL	$@)
	$(INSTALL_DATA) -T $< $@

$(DISTFILE): $(shell git ls-files 2>/dev/null) Makefile | $$(@D)
	$(info TAR	$@)
	tar cf $@ -T /dev/null
	git ls-files \
	| xargs tar rf $@

$(DISTFILE).gz: %.gz: % Makefile
	$(info GZIP	$@)
	gzip -knf $<

$(DISTFILE).xz: %.xz: % Makefile
	$(info XZ	$@)
	xz -kf $<

$(_subdirs): | $$(@D)
	$(info INSTALL	$@/)
	$(INSTALL_DIR) $@

$(_dirs):
	$(info INSTALL	$@/)
	$(INSTALL_DIR) $@

$(_DIRS):
	$(info MKDIR	$@/)
	$(MKDIR) $@

%-rm:
	$(info RM	$*)
	$(RM) $*

clean:
	$(info RM -rf	$(builddir))
	$(RM) -rf $(builddir)


V :=
$(V).SILENT: