#!/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 ifneq ($(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.