119 lines
4.1 KiB
Makefile
119 lines
4.1 KiB
Makefile
|
#!/usr/bin/make -f
|
|||
|
#******************************************************************************#
|
|||
|
# Include configuration #
|
|||
|
#******************************************************************************#
|
|||
|
-include Makefile.cfg
|
|||
|
|
|||
|
#******************************************************************************#
|
|||
|
# Project main information #
|
|||
|
#******************************************************************************#
|
|||
|
# Project name
|
|||
|
NAME := g1m
|
|||
|
|
|||
|
# Author information
|
|||
|
AUTHOR := Thomas \"Cakeisalie5\" Touhey
|
|||
|
AUTHOR_MAIL := thomas@touhey.fr
|
|||
|
|
|||
|
# Project license
|
|||
|
LICENSE := GPLv2
|
|||
|
|
|||
|
# Project version
|
|||
|
VERSION_MAJOR := 0
|
|||
|
VERSION_MINOR := 1
|
|||
|
INDEV := yes
|
|||
|
VERSION := $(VERSION_MAJOR).$(VERSION_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
|
|||
|
|
|||
|
#******************************************************************************#
|
|||
|
# Binary utilities #
|
|||
|
#******************************************************************************#
|
|||
|
# Compiler
|
|||
|
CC := gcc
|
|||
|
# - Check flags (warnings)
|
|||
|
CHKFLAGS := -Wall -Wextra -Wno-attributes
|
|||
|
# - For random manipulations (profiling, ...)
|
|||
|
CMOREFLAGS :=
|
|||
|
# - All C compiling flags
|
|||
|
CFLAGS := -I $(INCDIR) $(CHKFLAGS) -std=gnu11 -fPIC -O2 \
|
|||
|
-fstack-protector-strong -D LOGLEVEL="ll_$(LOG_LEVEL)" \
|
|||
|
-D_GNU_SOURCE -D_USE_GNU \
|
|||
|
-D AUTHOR="$(AUTHOR)" -D AUTHOR_MAIL="$(AUTHOR_MAIL)" \
|
|||
|
-D LICENSE="$(LICENSE)" -D VERSION="$(VERSION)" \
|
|||
|
$(CMOREFLAGS)
|
|||
|
|
|||
|
# Linker
|
|||
|
LD := gcc
|
|||
|
# - Linker flags
|
|||
|
LDFLAGS := -shared -lusb-1.0 \
|
|||
|
-e __lib$(NAME)_version \
|
|||
|
-Wl,-soname,lib$(NAME).so.$(VERSION_MAJOR) \
|
|||
|
-Wl,-z,relro -Wl,-z,combreloc -Wl,-z,defs
|
|||
|
|
|||
|
# Directory maker
|
|||
|
MD := mkdir -p
|
|||
|
# Symbolic link maker
|
|||
|
LN := ln -sf
|
|||
|
# File remover
|
|||
|
RM := rm -f
|
|||
|
# Documentation creator
|
|||
|
A2X := a2x
|
|||
|
# Installer
|
|||
|
INST := install
|
|||
|
# GZipper
|
|||
|
GZIP := gzip -f
|
|||
|
|
|||
|
#******************************************************************************#
|
|||
|
# Look for sources #
|
|||
|
#******************************************************************************#
|
|||
|
SRC := $(basename $(shell find $(SRCDIR) -name "*.c" -printf "%P\n"))
|
|||
|
|
|||
|
#******************************************************************************#
|
|||
|
# Look for public headers (not internals.h or internals/**/*.h #
|
|||
|
#******************************************************************************#
|
|||
|
INCPUB := $(basename $(shell find $(INCDIR) \
|
|||
|
-name "*.h" -and -not -path "*internals*" -printf "%P\n" | sort))
|
|||
|
|
|||
|
#******************************************************************************#
|
|||
|
# 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) #
|
|||
|
#******************************************************************************#
|
|||
|
define add-dest-dir
|
|||
|
$1 = $(DESTDIR)$($1)
|
|||
|
endef
|
|||
|
$(if $(DESTDIR), $(foreach idir,ILIBDIR IINCDIR IMANDIR UDEVDIR, \
|
|||
|
$(eval $(call add-dest-dir,$(idir)))))
|
|||
|
|
|||
|
# END OF FILE
|