Added nice display
This commit is contained in:
parent
6a236cdd91
commit
dc3bf04544
122
Makefile
122
Makefile
|
@ -1,21 +1,32 @@
|
|||
#******************************************************************************#
|
||||
# _____ _ #
|
||||
# Makefile |_ _|__ _ _| |__ ___ _ _ #
|
||||
# | Project: libp7 | |/ _ \| | | | '_ \ / _ \ | | | #
|
||||
# | | (_) | |_| | | | | __/ |_| | #
|
||||
# By: thomas <thomas@touhey.fr> |_|\___/ \__,_|_| |_|\___|\__, |.fr #
|
||||
# Last updated: 2016/10/13 07:32:33 |___/ #
|
||||
# #
|
||||
#******************************************************************************#
|
||||
#!/usr/bin/make -f
|
||||
# INCLUDE VARS
|
||||
include Makefile.vars
|
||||
|
||||
# DEDUCED VARS
|
||||
# - All objects
|
||||
ALLOBJ := $(foreach mod,$(MODULES),$(SRC_$(mod):%=$(OBJDIR)/$(mod)/%.o))
|
||||
ALLMAN := $(foreach s,$(MAN_SECTIONS),$(MAN_$(s):%=$(MANDIR)/man$(s)/%.$(s)))
|
||||
# - All manpages
|
||||
ALLMAN := $(foreach s,$(MAN_SECTIONS),\
|
||||
$(MAN_$(s):%=$(MANDIR)/man$(s)/%.$(s)))
|
||||
# - Configuration version checking dependencies
|
||||
CHECKCFG := $(if $(shell test -f Makefile.cfg || echo y),check-config, \
|
||||
$(if $(shell [ "$(VERSION)" = "$(CONFIG_VERSION)" ] || echo y), \
|
||||
check-config-version))
|
||||
# - Commands prefix
|
||||
PCMD := $(if $(MAKE_FULL_LOG),,@)
|
||||
# - All messages
|
||||
# -- Command messages
|
||||
define cmd
|
||||
@$(if $(MAKE_FULL_LOG),#)printf "\e[32m>\e[0m \e[1m%s\e[0m %s\n" "$1" "$2"
|
||||
endef
|
||||
# -- Normal messages
|
||||
define msg
|
||||
@$(if $(MAKE_FULL_LOG),#)printf "\e[35m>\e[0m %s\n" "$1"
|
||||
endef
|
||||
# -- Remove messages
|
||||
define rmsg
|
||||
@$(if $(MAKE_FULL_LOG),#)printf "\e[31m>\e[0m %s\n" "$1"
|
||||
endef
|
||||
|
||||
# TARGETS
|
||||
## General targets
|
||||
|
@ -77,53 +88,63 @@ all-lib: $(CHECKCFG) lib$(NAME).so
|
|||
|
||||
## - Make a module object directory
|
||||
$(MODULES:%=$(OBJDIR)/%):
|
||||
$(MD) $@
|
||||
$(call cmd,mkdir,$@)
|
||||
$(PCMD)$(MD) $@
|
||||
|
||||
## - Make a module object out of a module source file
|
||||
define make-moduleobj-rule
|
||||
$(OBJDIR)/$1/%.o: $(SRCDIR)/$1/%.c | $(OBJDIR)/$1
|
||||
$(CC) -c -o $$@ $$< $(CFLAGS)
|
||||
$(call cmd,cc,$$@)
|
||||
$(PCMD)$(CC) -c -o $$@ $$< $(CFLAGS)
|
||||
endef
|
||||
$(foreach mod,$(MODULES), \
|
||||
$(eval $(call make-moduleobj-rule,$(mod))))
|
||||
|
||||
## - Make the dynamic library
|
||||
lib$(NAME).so: $(ALLOBJ)
|
||||
$(LD) -o $@ $^ $(LDFLAGS)
|
||||
$(call cmd,ld,$@)
|
||||
$(PCMD)$(LD) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
## - Remove object files
|
||||
mclean-lib:
|
||||
$(RM) $(ALLOBJ)
|
||||
$(call rmsg,Removing object files.)
|
||||
$(PCMD)$(RM) $(ALLOBJ)
|
||||
|
||||
## - Clean and remove final library
|
||||
clean-lib: mclean-lib
|
||||
$(RM) lib$(NAME).so
|
||||
$(call rmsg,Removing the library.)
|
||||
$(PCMD)$(RM) lib$(NAME).so
|
||||
|
||||
## - Remake library
|
||||
re-lib: clean-lib all-lib
|
||||
|
||||
## - Install header
|
||||
define make-installinc-rule
|
||||
install-lib-$(INCDIR)/$1.h: $(INCDIR)/$1.h
|
||||
$(INST) -m 644 $(INCDIR)/$1.h "$(IINCDIR)/$1.h"
|
||||
endef
|
||||
$(foreach inc,$(INCPUB), \
|
||||
$(eval $(call make-installinc-rule,$(inc))))
|
||||
|
||||
## - Install library
|
||||
install-lib: $(CHECKCFG) $(if $(INSTALL_DEVEL),$(INCPUB:%=install-lib-$(INCDIR)/%.h))
|
||||
$(INST) -m 755 lib$(NAME).so "$(ILIBDIR)/lib$(NAME).so.$(VERSION_MAJOR)"
|
||||
install-lib: $(CHECKCFG)
|
||||
$(call msg,Installing the library.)
|
||||
$(PCMD)$(INST) -m 755 -d "$(ILIBDIR)"
|
||||
$(PCMD)$(INST) -m 644 lib$(NAME).so "$(ILIBDIR)/lib$(NAME).so.$(VERSION_MAJOR)"
|
||||
$(if $(INSTALL_DEVEL),\
|
||||
$(LN) lib$(NAME).so.$(VERSION_MAJOR) "$(ILIBDIR)/lib$(NAME).so")
|
||||
$(call msg,Installing development files.))
|
||||
$(if $(INSTALL_DEVEL),\
|
||||
$(PCMD)$(LN) lib$(NAME).so.$(VERSION_MAJOR) "$(ILIBDIR)/lib$(NAME).so")
|
||||
$(if $(INSTALL_DEVEL),\
|
||||
$(PCMD)$(INST) -m 755 -d "$(IINCDIR)")
|
||||
$(if $(INSTALL_DEVEL),\
|
||||
$(PCMD)$(INST) -m 644 -t "$(IINCDIR)" $(INCPUB:%=$(INCDIR)/%.h))
|
||||
$(if $(INSTALL_UDEV_RULE),\
|
||||
$(INST) -m 644 udev.rules "$(UDEVDIR)/60-casio-usb.rules")
|
||||
$(call msg,Installing the udev rule.))
|
||||
$(if $(INSTALL_UDEV_RULE),\
|
||||
$(PCMD)$(INST) -m 755 -d "$(UDEVDIR)")
|
||||
$(if $(INSTALL_UDEV_RULE),\
|
||||
$(PCMD)$(INST) -m 644 udev.rules "$(UDEVDIR)/60-casio-usb.rules")
|
||||
|
||||
## - Uninstall library
|
||||
uninstall-lib: $(CHECKCFG)
|
||||
$(RM) "$(ILIBDIR)/lib$(NAME).a" "$(ILIBDIR)/lib$(NAME).so"*
|
||||
$(RM) "$(IINCDIR)/lib$(NAME).h"
|
||||
$(RM) -r "$(IINCDIR)/lib$(NAME)"
|
||||
$(RM) "$(UDEVDIR)/60-casio-usb.rules"
|
||||
$(call rmsg,Uninstalling the library.)
|
||||
$(PCMD)$(RM) "$(ILIBDIR)/lib$(NAME).a" "$(ILIBDIR)/lib$(NAME).so"*
|
||||
$(PCMD)$(RM) "$(IINCDIR)/lib$(NAME).h"
|
||||
$(PCMD)$(RM) -r "$(IINCDIR)/lib$(NAME)"
|
||||
$(PCMD)$(RM) "$(UDEVDIR)/60-casio-usb.rules"
|
||||
|
||||
## Documentation related
|
||||
## - Make all manpages
|
||||
|
@ -131,42 +152,47 @@ all-doc: $(ALLMAN)
|
|||
|
||||
## - Make manpages directories
|
||||
$(MAN_SECTIONS:%=$(MANDIR)/man%):
|
||||
$(MD) $@
|
||||
$(call cmd,mkdir,$@)
|
||||
$(PCMD)$(MD) $@
|
||||
|
||||
## - Make-A-Manpage
|
||||
define make-manpage-rule
|
||||
$(MANDIR)/man$1/%.$1: $(DOCDIR)/%.$1.txt | $(MANDIR)/man$1
|
||||
$(A2X) -f manpage -D $$| $$<
|
||||
$(MANDIR)/man$1/%.$1: $(DOCDIR)/%.$1.txt | $(MANDIR)/man$1
|
||||
$(call cmd,a2x,$$<)
|
||||
$(PCMD)$(A2X) -f manpage -D $$| $$< 2>/dev/null
|
||||
endef
|
||||
$(foreach section, $(MAN_SECTIONS), \
|
||||
$(eval $(call make-manpage-rule,$(section))))
|
||||
|
||||
## - Remove all manpages
|
||||
clean-doc:
|
||||
$(RM) $(ALLMAN)
|
||||
$(call rmsg,Removing manpages.)
|
||||
$(PCMD)$(RM) $(ALLMAN)
|
||||
|
||||
## - Remake docs
|
||||
re-doc: clean-doc all-doc
|
||||
|
||||
## - Install-A-Manpage
|
||||
define make-installmanpage-rule
|
||||
install-doc-$1-$2:| $(MANDIR)/man$1/$2.$1
|
||||
$(INST) -m 644 $(MANDIR)/man$1/$2.$1 "$(IMANDIR)/man$1/$2.$1"
|
||||
$(GZIP) "$(IMANDIR)/man$1/$2.$1"
|
||||
## - Install-A-Manpage-Section
|
||||
define make-installmansection-rule
|
||||
install-doc-$1: $(MAN_$1:%=$(MANDIR)/man$1/%.$1)
|
||||
$(call msg,Installing manpages section $1.)
|
||||
$(PCMD)$(INST) -m 755 -d "$(IMANDIR)/man$1"
|
||||
$(PCMD)$(INST) -m 644 -t "$(IMANDIR)/man$1" $(MAN_$1:%=$(MANDIR)/man$1/%.$1)
|
||||
$(PCMD)$(GZIP) $(MAN_$1:%="$(IMANDIR)/man$1/%.$1")
|
||||
endef
|
||||
$(foreach section, $(MAN_SECTIONS), \
|
||||
$(foreach manpage, $(MAN_$(section)), \
|
||||
$(eval $(call make-installmanpage-rule,$(section),$(manpage)))))
|
||||
$(eval $(call make-installmansection-rule,$(section))))
|
||||
|
||||
## - Install manpages
|
||||
install-doc: $(CHECKCFG) $(if $(INSTALL_MANPAGES),\
|
||||
$(foreach s,$(MAN_SECTIONS),$(MAN_$(s):%=install-doc-$(s)-%)))
|
||||
$(MAN_SECTIONS:%=install-doc-%))
|
||||
|
||||
## - Clean a man section
|
||||
define make-uninstall-doc-rule
|
||||
uninstall-doc-$1:
|
||||
$(RM) "$(IMANDIR)/man$1/libp7.$1"
|
||||
$(RM) "$(IMANDIR)/man$1/p7_"*".$1"
|
||||
$(call rmsg,Uninstalling manpages section $1.)
|
||||
$(PCMD)$(RM) "$(IMANDIR)/man$1/lib$(NAME).$1"
|
||||
$(PCMD)$(RM) "$(IMANDIR)/man$1/$(NAME)_"*".$1"
|
||||
endef
|
||||
$(foreach sec,$(MAN_SECTIONS), \
|
||||
$(eval $(call make-uninstall-doc-rule,$(sec))))
|
||||
|
@ -182,7 +208,8 @@ deb:
|
|||
# PHONY
|
||||
# - General
|
||||
.PHONY: all mostlyclean mclean clean fclean re install uninstall
|
||||
.PHONY: getname getauthor getmail getversion check-config check-config-version
|
||||
.PHONY: getname getauthor getmail getversion
|
||||
.PHONY: check-config check-config-version
|
||||
# - Library-related
|
||||
.PHONY: all-lib mclean-lib clean-lib re-lib install-lib uninstall-lib
|
||||
.PHONY: $(INCPUB:%=install-lib-$(INCDIR)/%.h)
|
||||
|
@ -190,8 +217,7 @@ deb:
|
|||
.PHONY: install-bin uninstall-bin
|
||||
# - Documentation related
|
||||
.PHONY: all-doc clean-doc install-doc uninstall-doc
|
||||
.PHONY: $(foreach s,$(MAN_SECTIONS),$(MAN_$(s):%=install-doc-$(s)-%))
|
||||
.PHONY: $(MAN_SECTIONS:%=uninstall-doc-%)
|
||||
.PHONY: $(MAN_SECTIONS:%=install-doc-%) $(MAN_SECTIONS:%=uninstall-doc-%)
|
||||
# - Packaging
|
||||
.PHONY: deb
|
||||
|
||||
|
|
|
@ -1,13 +1,4 @@
|
|||
#!/usr/bin/make -f
|
||||
#******************************************************************************#
|
||||
# _____ _ #
|
||||
# Makefile.vars |_ _|__ _ _| |__ ___ _ _ #
|
||||
# | Project: libp7 | |/ _ \| | | | '_ \ / _ \ | | | #
|
||||
# | | (_) | |_| | | | | __/ |_| | #
|
||||
# By: thomas <thomas@touhey.fr> |_|\___/ \__,_|_| |_|\___|\__, |.fr #
|
||||
# Last updated: 2016/09/27 14:39:53 |___/ #
|
||||
# #
|
||||
#******************************************************************************#
|
||||
# INCLUDE CONFIGURATION
|
||||
-include Makefile.cfg
|
||||
|
||||
|
@ -68,7 +59,7 @@
|
|||
## Documentation creator
|
||||
A2X := a2x
|
||||
## Installer
|
||||
INST := install -D
|
||||
INST := install
|
||||
## GZipper
|
||||
GZIP := gzip -f
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ version="$(make -sC $(dirname $0) getversion)"
|
|||
platform="$(gcc --print-multiarch)"
|
||||
platform="$([ "$platform" ] && echo "/$platform")"
|
||||
# - Basic things
|
||||
make_full_log=
|
||||
loglevel=none # none, info, warn, error, fatal
|
||||
root=''
|
||||
# - main things
|
||||
|
@ -35,6 +36,7 @@ Defaults for the options are specified in brackets.
|
|||
General options:
|
||||
--help display this help and exit
|
||||
--version display version information and quit
|
||||
--make-full-log display full commands while making
|
||||
|
||||
Build options:
|
||||
--loglevel library log level [$loglevel]
|
||||
|
@ -87,6 +89,7 @@ if [ $put_help ]; then usage; fi
|
|||
|
||||
# - get options
|
||||
for arg ; do case "$arg" in
|
||||
--make-full-log) make_full_log=yes ;;
|
||||
--loglevel=*)
|
||||
level="${arg#*=}"
|
||||
# check if is in array
|
||||
|
@ -127,6 +130,7 @@ cat <<EOF
|
|||
# Makefile configuration generated by ./configure
|
||||
# - Configuration version
|
||||
CONFIG_VERSION = $version
|
||||
MAKE_FULL_LOG = $make_full_log
|
||||
# - Build options
|
||||
LOG_LEVEL = $loglevel
|
||||
# - Install options
|
||||
|
|
Reference in New Issue