cake
/
libg1m
Archived
1
0
Fork 0
This repository has been archived on 2024-03-16. You can view files and clone it, but cannot push or open issues or pull requests.
libg1m/Makefile.vars

169 lines
5.5 KiB
Makefile
Executable File
Raw Permalink 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
#******************************************************************************#
# Include configuration #
#******************************************************************************#
# Do it
-include Makefile.cfg
# Correct target
TARGET := $(if $(TARGET),$(TARGET)-)
#******************************************************************************#
# Project main information #
#******************************************************************************#
# Project name and description
NAME := g1m
DESCRIPTION := Library for reading and writing CASIO files
# 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
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=gnu11 \
$(if $(STATIC),,-fPIC) $(if $(OPTIMIZE_SIZE),-Os,-O2) \
-D LOGLEVEL="ll_$(LOG_LEVEL)" \
$(shell $(PKGCONFIG) --cflags $(ALLDEPS) 2>/dev/null) \
$(CMOREFLAGS)
# Linker
LD := $(TARGET)gcc
# - Specific linker flags
LDFLAGS_Windows := -lws2_32 -Wl,--out-implib,lib$(NAME).dll.a
LDFLAGS_Linux := $(if $(STATIC),,-Wl,-soname,$(SONAME) \
-e $(NAME)__version \
-Wl,-z,relro -Wl,-z,combreloc -Wl,-z,defs)
# - Linker flags
LDFLAGS := $(if $(STATIC),,-shared) \
$(shell $(PKGCONFIG) --libs $(ALLDEPS) 2>/dev/null) -lm \
$(if $(FOR_WINDOWS),$(LDFLAGS_Windows),$(LDFLAGS_Linux)) \
$(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