Skip to content
Snippets Groups Projects
.makefile 1.33 KiB
Newer Older
  • Learn to ignore specific revisions
  • # This file is used for common development targets that can be done with
    # needing the cumbersome bootstrapping process.
    #
    # You can use it like this:
    #
    #   make -f .makefile indent
    #
    # If you copy or link this file to `GNUmakefile` then you can just do:
    #
    #   make indent
    #
    # When copied to `GNUmakefile`, this file is can also be used for bootstrapping
    # Makefile targets. Since GNUmakefile is loaded before Makefile, we do the
    # bootstrapping tasks need to get a Makefile first, then we use the Makefile to
    # make our target.
    
    
    # Remind user when they are using GNUmakefile:
    ifeq ($(lastword $(MAKEFILE_LIST)),GNUmakefile)
        $(info *** NOTE: GNUmakefile in use. ***)
    endif
    
    
    MAKE_TARGETS := \
    	all \
    	all-am \
    	all-recursive \
    	install \
    	test \
    	test-all \
    	test-suite \
    
    # SOURCE_FILES := $(shell find . | grep '\.c$$')
    SOURCE_FILES := $(shell find tests/run-test-suite | grep '\.c$$')
    ifneq ($(shell which gindent),)
    INDENT := gindent
    else
    INDENT := indent
    endif
    
    #
    # Proxy make targets:
    #
    default: all
    
    # Proxy these targets to the real Makefile, after bootstrapping is necessary.
    $(MAKE_TARGETS): Makefile
    	@make -f $< $@
    
    Makefile: Makefile.in
    	./configure
    
    Makefile.in:
    	./bootstrap
    
    #
    # Development make targets:
    #
    indent:
    	$(INDENT) $(SOURCE_FILES)
    
    distclean purge:
    	git clean -dxf -e GNUmakefile
    
    	rm -fr tests/run-test-suite
    	git worktree prune