libmonochrome/Makefile

96 lines
2.6 KiB
Makefile
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/make -f
#******************************************************************************#
# #
# Makefile #
# | Project : libmonochrome #
# #
# By: thomas <thomas@touhey.fr> #
# Last updated: 2015/12/23 10:02:49 #
# #
#******************************************************************************#
# INCLUDE CONFIGURATION
include Makefile.vars Makefile.cfg
# DEDUCED VARIABLES
ALLOBJ = $(SRC:%=$(OBJDIR)/%.o)
ALLINC = $(INCPUB:%=$(INCDIR)/%.h) $(INCINT:%=$(INCDIR)/%.h)
# STYLE VARS
define \n
endef
# RULES
## General
## - Make everything (default)
all: lib$(NAME).a
## Library related
## - Make the object directory
$(OBJDIR):
$(MD) $@
## - Make an object file out of a C source file
$(OBJDIR)/%.o: $(SRCDIR)/%.c $(ALLINC)
$(CC) -c -o $@ $< $(CFLAGS)
## - Make the library
lib$(NAME).a: $(OBJDIR) $(ALLOBJ)
$(AR) rc $@ $(ALLOBJ)
$(RANLIB) $@
## - Clean the object files
clean:
$(RM) $(ALLOBJ)
## - Clean the object files and the binary
fclean: clean
$(RM) lib$(NAME).a
## - Remake the library
re: fclean all
## - Install library and includes
install:
$(INST) -D -m 644 lib$(NAME).a $(ILIBDIR)/lib$(NAME).a
$(foreach inc, $(INCPUB), \
$(INST) -D -m 644 $(INCDIR)/$(inc).h $(IINCDIR)/$(inc).h$(\n))
## Documentation related
## - Make man directories
define make-mandir-rule
$(MANDIR)/man$1:
$(MD) $$@
endef
$(foreach section,$(MAN_SECTS), \
$(eval $(call make-mandir-rule,$(section))))
## - Make-A-Manpage
define make-manpage-rule
$(MANDIR)/man$1/$2.$1: $(DOCDIR)/$2.$1.txt | $(MANDIR)/man$1
$(A2X) -f manpage -D $$| $$<
endef
$(foreach section,$(MAN_SECTS), \
$(foreach page,$(MAN_$(section)), \
$(eval $(call make-manpage-rule,$(section),$(page)))))
## - Make all manpages
all-doc: $(foreach section,$(MAN_SECTS),$(MAN_$(section):%=$(MANDIR)/man$(section)/%.$(section)))
## - Clean all manpages
clean-doc:
$(RM) $(foreach section,$(MAN_SECTS),$(MAN_$(section):%=$(MANDIR)/man$(section)/%.$(section)))
## Install doc
install-doc:
$(foreach man, $(MAN), \
$(INST) -D -m 644 $(MANDIR)/$(man) $(IMANDIR)/$(man)$(\n))
$(GZIP) $(MAN:%=$(IMANDIR)/%)
## Doz rulz are phunny
.PHONY: all clean fclean re install
.PHONY: all-doc install-doc
# END OF FILE