libcasio/Makefile.vars

165 lines
5.6 KiB
Makefile
Raw Normal View History

2017-06-12 01:06:23 +02:00
#!/usr/bin/make -f
#******************************************************************************#
# Include configuration #
#******************************************************************************#
# Do it
-include Makefile.cfg
# Correct target
TARGET := $(if $(TARGET),$(TARGET)-)
#******************************************************************************#
# Project main information #
#******************************************************************************#
# Project name and description
NAME := casio
DESCRIPTION := Library for manipulating CASIO protocols and file formats.
# Maintainer information
MAINTAINER_NAME := Thomas \"Cakeisalie5\" Touhey
MAINTAINER_MAIL := thomas@touhey.fr
# Project version
MAJOR := 0
MINOR := 1
INDEV := yes
# Project version string
VERSION := $(MAJOR).$(MINOR)$(if $(INDEV),-indev)
#******************************************************************************#
# Project directories #
#******************************************************************************#
# Headers directory - where all the headers are.
INCDIR := ./include
# Sources directory - where all the sources are.
SRCDIR := ./src
# Objects directory - where the objects will be put.
OBJDIR := ./obj
# Documentation directory - where the asciidoc sources for the manpages are.
DOCDIR := ./doc
# Manpages directory - where the manpages will be put.
MANDIR := ./man
#******************************************************************************#
# Object names #
#******************************************************************************#
# Dynamic library name
SONAME := $(if $(FOR_WINDOWS),lib$(NAME).dll,lib$(NAME).so.$(MAJOR))
SONAMES := $(if $(FOR_WINDOWS),lib$(NAME).dll,lib$(NAME).so.*)
# Static library name
ANAME := $(if $(FOR_WINDOWS),lib$(NAME).lib,lib$(NAME).a)
ANAMES := lib$(NAME).lib lib$(NAME).a lib$(NAME).dll.a
# Libs
DEPS := libfontcharacter
DEPS_PRIV := zlib $(if $(NO_LIBUSB),,libusb-1.0)
ALLDEPS := $(DEPS) $(DEPS_PRIV)
#******************************************************************************#
# Binary utilities #
#******************************************************************************#
# Package configuration
PKGCONFIG := $(TARGET)pkg-config
# Compiler
CC := $(TARGET)gcc
# - Check flags (warnings)
CWERROR := all extra no-attributes no-unused-macros no-vla no-multichar
ifdef MORE_WARNINGS
CWERROR += shadow write-strings redundant-decls format format-nonliteral \
format-security implicit-function-declaration \
date-time missing-prototypes return-type pointer-arith \
stack-protector no-unused-parameter
endif
CWARN := $(CWERROR:%=-W%)
# - For random manipulations (profiling, ...)
#CMOREFLAGS :=
# - All C compiling flags
CFLAGS := -I $(INCDIR) $(CWARN) -std=c99 -pedantic \
$(if $(STATIC),-DLIBCASIO_STATIC,-fPIC) $(if $(OPTIMIZE_SIZE),-Os,-O2) \
-D LOGLEVEL="casio_loglevel_$(LOG_LEVEL)" \
$(shell $(PKGCONFIG) --cflags $(ALLDEPS) 2>/dev/null) \
$(CMOREFLAGS)
# Linker
LD := $(TARGET)gcc
# - Specific linker flags
LDFLAGS := $(if $(STATIC),,-shared) \
$(shell $(PKGCONFIG) --libs $(ALLDEPS) 2>/dev/null) -lm
ifneq ($(FOR_WINDOWS),)
LDFLAGS += -Wl,--out-implib,lib$(NAME).dll.a \
-lws2_32 -lsetupapi -luuid
else
LDFLAGS += $(if $(STATIC),,-Wl,-soname,$(SONAME) \
-e lib$(NAME)__version \
-Wl,-z,relro -Wl,-z,combreloc -Wl,-z,defs)
endif
LDFLAGS += $(LDMOREFLAGS)
# Archive manager
AR := $(TARGET)ar
# Directory maker
MD := mkdir -p
# Copier
CP := cp
# Mover
MV := mv
# Symbolic link maker
LN := ln -sf
# File remover
RM := rm -f
# Documentation creator
A2X := a2x
# Installer
INST := install
# GZipper
GZIP := gzip -f
#******************************************************************************#
# Look up the sources and includes #
#******************************************************************************#
# Look up the sources
SRC := $(basename $(shell find $(SRCDIR) -mindepth 1 -type f \
-name "*.c" -printf "%P\n"))
DIRS := $(sort $(dir $(SRC)))
# Look up the includes
INCPUB := $(shell find $(INCDIR) -name "*.h" -and \
-not -path "*internals*" -printf "%P\n")
# Look up the includes
INC := $(shell find $(INCDIR) -name "*.h")
#******************************************************************************#
# Look for manpages #
#******************************************************************************#
# Get the manpages sections and contents
MAN_SECTIONS :=
define check-man
MAN_SECTIONS += $1
MAN_$1 += $2
endef
$(foreach doc, $(basename $(shell find $(DOCDIR) \
-maxdepth 1 -mindepth 1 -printf "%P\n" -type f -or -type l -name "*.*.txt")), \
$(eval $(call check-man,$(patsubst .%,%,$(suffix $(doc))),$(basename $(doc)))))
# Remove duplicate sections.
MAN_SECTIONS := $(sort $(MAN_SECTIONS))
#******************************************************************************#
# Check for DESTDIR (add as prefix to installation root) #
#******************************************************************************#
# Save original library and include dir.
OIINCDIR := $(IINCDIR)
OILIBDIR := $(ILIBDIR)
# Make it.
define add-dest-dir
$1 = $(DESTDIR)$($1)
endef
$(if $(DESTDIR), $(foreach idir,\
IBINDIR IPKGDIR ILIBDIR IINCDIR IMANDIR HBINDIR, \
$(eval $(call add-dest-dir,$(idir)))))
# END OF FILE