cake
/
libp7
Archived
1
0
Fork 1

Added nice display

This commit is contained in:
Thomas Touhey 2016-10-27 14:36:24 +02:00
parent 6a236cdd91
commit dc3bf04544
3 changed files with 79 additions and 58 deletions

122
Makefile
View File

@ -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

View File

@ -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

4
configure vendored
View File

@ -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