magic/scripts/defs.mak.in

232 lines
9.5 KiB
Makefile
Executable File

# defs.mak.in --
# source file for autoconf-generated "defs.mak" for magic
# @configure_input@
# Feel free to change the values in here to suit your needs.
# Be aware that running scripts/configure again will overwrite
# any changes!
SHELL = @SHELL@
# --- out-of-tree (VPATH) support ------------------------------------------
# MAGICDIR is set by each subdir Makefile to the relative path back to the
# *build* top (that is where the generated defs.mak / rules.mak live, and where
# the generated database/database.h is written). MAGICSRC is the absolute path
# to the *source* top. For an in-tree build the two trees coincide.
MAGICSRC = @abs_top_srcdir@
# BUILD_TOP is the absolute build top; GENINC (below) needs it either way.
BUILD_TOP := $(abspath $(MAGICDIR))
# Minimal srcdir fallback. Every module converted to Makefile.in sets
# `srcdir` (and VPATH) from @srcdir@ *before* including this file. The only
# Makefiles that do NOT are readline/ (intentionally never converted) and the
# top-level Makefile; neither compiles magic sources through the pattern rules, so
# neither needs VPATH. We only default `srcdir` -- derived from where make is
# running (CURDIR, a build dir) relative to BUILD_TOP -- so that CPPFLAGS, which
# lists -I${srcdir}, stays well-formed. The patsubst is an anchored prefix strip:
# "" at the build top, "/readline" in the readline subdir.
ifeq ($(origin srcdir),undefined)
srcdir := $(MAGICSRC)$(patsubst $(BUILD_TOP)%,%,$(CURDIR))
endif
# Generated headers (currently just database/database.h) are exposed through a
# single include directory, ${GENINC}:
# * in-tree (build top == source top): the top itself, so the header stays at
# $(builddir)/database/database.h and -I${GENINC} == the old -I${MAGICDIR}.
# * relocated (out-of-tree): a clean $(builddir)/include, so #include
# <database/database.h> resolves under include/ and the raw build top is
# never on the compiler search path.
ifeq ($(BUILD_TOP),$(MAGICSRC))
GENINC := ${MAGICDIR}
else
GENINC := ${MAGICDIR}/include
endif
DATABASE_H := ${GENINC}/database/database.h
# --------------------------------------------------------------------------
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
libdir = @libdir@
mandir = @mandir@
# Source-tree helper scripts (mkdirs, printmans, preproc.py, ...). The one
# generated script, makedbh, lives in the *build* tree at ${MAGICDIR}/scripts.
SCRIPTS = ${MAGICSRC}/scripts
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
# Override standard "make" target when compiling under TCL
ALL_TARGET = @ALL_TARGET@
INSTALL_TARGET = @INSTALL_TARGET@
# Change libdir to install in a different place
BINDIR = ${bindir}
MANDIR = ${mandir}
LIBDIR = ${libdir}
SYSDIR = ${libdir}/magic/sys
SCMDIR = ${libdir}/magic/scm
TCLDIR = ${libdir}/magic/tcl
# Install targets may be different if dist_prefix is set by configure
INSTALL_BINDIR = @DIST_DIR@/bin
INSTALL_MANDIR = @DIST_DIR@/share/man
INSTALL_LIBDIR = @DIST_DIR@/lib
INSTALL_SYSDIR = ${INSTALL_LIBDIR}/magic/sys
INSTALL_SCMDIR = ${INSTALL_LIBDIR}/magic/scm
INSTALL_TCLDIR = ${INSTALL_LIBDIR}/magic/tcl
MAIN_EXTRA_LIBS = @extra_libs@
LD_FIRST_LIBS = @ld_first_libs@
LD_EXTRA_LIBS = @ld_extra_libs@
LD_SHARED = @ld_extra_objs@
TOP_EXTRA_LIBS = @top_extra_libs@
SUB_EXTRA_LIBS = @sub_extra_libs@
LIBS = @LIBS@
MODULES += @modules@
UNUSED_MODULES += @unused@
PROGRAMS += @programs@
INSTALL_CAD_DIRS += @cadinstall@
RM = rm -f
RMDIR = rmdir
CP = cp
MV = mv
LN = ln
AR = ar
ARFLAGS = cr
LINK = @LD@ -r
LD = @LD@
MKDIR = mkdir
PERL = @PERL@
SED = @SED@
LATEX = @LATEX@
DVIPS = @DVIPS@
MCPP = @MCPP@
MSED = @MSED@
RANLIB = @RANLIB@
SHDLIB_EXT = @SHDLIB_EXT@
ZLIB_FLAG = @ZLIB_FLAG@
LDDL_FLAGS = @LDDL_FLAGS@
LD_RUN_PATH = @LD_RUN_PATH@
LIB_SPECS = @LIB_SPECS@
LIB_SPECS_NOSTUB = @LIB_SPECS_NOSTUB@
LIB_SPECS_GRNULL = @LIB_SPECS_GRNULL@
WISH_EXE = @WISH_EXE@
TCL_LIB_DIR = @TCL_LIB_DIR@
MAGIC_VERSION ?= $(shell cat ${MAGICSRC}/VERSION | cut -d. -f1-2)
MAGIC_REVISION ?= $(shell cat ${MAGICSRC}/VERSION | cut -d. -f3)
# git may be absent (source tarball) or ${MAGICSRC} not a work-tree: fall back to
# empty rather than emitting an error.
MAGIC_COMMIT ?= $(shell git -C ${MAGICSRC} rev-parse HEAD 2>/dev/null)
# "-DMAGIC_NO_BUILDDATE" when configured with --disable-magic-builddate, else
# empty. buildinfo.c reports an empty MagicCompileTime under that define.
MAGIC_BUILDDATE_DEFS = @MAGIC_BUILDDATE_DEFS@
# Only compute the (volatile) build date when it will actually be baked in --
# skipping it under --disable-magic-builddate avoids the parse-time date spawn.
ifeq (${MAGIC_BUILDDATE_DEFS},)
# Honor SOURCE_DATE_EPOCH (reproducible builds -- appimage/npm tarballs) when set,
# else the current time. UTC so the stamp does not depend on the builder's zone.
MAGIC_BUILDDATE ?= $(shell if [ -n "$$SOURCE_DATE_EPOCH" ]; then \
date -u -d "@$$SOURCE_DATE_EPOCH" 2>/dev/null \
|| date -u -r "$$SOURCE_DATE_EPOCH" 2>/dev/null; \
else date; fi | tr -d '\r\n')
endif
# This allow inheritence of the values from toplevel Makefile
export MAGIC_VERSION
export MAGIC_REVISION
export MAGIC_COMMIT
export MAGIC_BUILDDATE
CC = @CC@
CPP = @CPP@
CXX = @CXX@
###
### Feature flags (to enable uncomment these from ./defs.mak after your ./configure)
###
### SUPPORT_DIRECT_MALLOC: this removes the legacy malloc/free APIs that are
### not thread-safe and have a defer-free-by-1 quirk that maybe covering
### up unknown problems. See utils/malloc.[ch] for more info.
###
### Status: EXPERIMENTAL (this is expected to uncover issues we don't know about yet)
#FEATURE_FLAGS += -DSUPPORT_DIRECT_MALLOC
###
### SUPPORT_REMOVE_MALLOC_LEGACY this completely removes the older non-threadsafe API
### from the output binaries.
### This option is dependent on SUPPORT_DIRECT_MALLOC
###
### Status: NOT-STABILITY-AFFECTING (if your binary links you are good to continue)
#FEATURE_FLAGS += -DSUPPORT_REMOVE_MALLOC_LEGACY
# -I${GENINC}: generated headers (build top in-tree, build/include relocated)
# -I${MAGICSRC}: source top, for "<module>/<header>.h" includes
# -I${srcdir}: this module's source dir, for same-directory headers
CPPFLAGS = -I${GENINC} -I${MAGICSRC} -I${srcdir} @CPPFLAGS@
CXXFLAGS = @CXXFLAGS@
# Bundled GNU readline: its headers use <readline/*.h> includes, so the readline
# source's parent directory must be on the include path. Only for the bundled
# build (@MAKE_READLINE@ = 1); a no-op with a system or disabled readline.
ifeq (@MAKE_READLINE@,1)
CPPFLAGS += -I${MAGICSRC}/readline
endif
DFLAGS_MAGICVERSION = -DMAGIC_VERSION=\"${MAGIC_VERSION}\" -DMAGIC_REVISION=\"${MAGIC_REVISION}\" -DMAGIC_COMMIT=\"${MAGIC_COMMIT}\" ${MAGIC_BUILDDATE_DEFS}
ifeq (${MAGIC_BUILDDATE_DEFS},)
DFLAGS_MAGICVERSION += "-DMAGIC_BUILDDATE=\"${MAGIC_BUILDDATE}\""
endif
DFLAGS = @extra_defs@ @stub_defs@ @DEFS@ -DGCORE=\"@GCORE@\"
DFLAGS += -DSHDLIB_EXT=\"@SHDLIB_EXT@\" @NDEBUG_defs@ @DEBUG_defs@ ${FEATURE_FLAGS}
DFLAGS_NOSTUB = @extra_defs@ @DEFS@ -DGCORE=\"@GCORE@\"
DFLAGS_NOSTUB += -DSHDLIB_EXT=\"@SHDLIB_EXT@\" @NDEBUG_defs@ @DEBUG_defs@ ${FEATURE_FLAGS}
CFLAGS = @CFLAGS@ @SHLIB_CFLAGS@ @INC_SPECS@
# Set only by configure --enable-ccache-prefix-map (empty otherwise). Maps the
# absolute source root to "." in the compiled output so a cached object carries
# no tree-specific paths -- required for correct cross-tree ccache sharing (pair
# with CCACHE_BASEDIR=<build top> in the environment for cross-tree *hits*).
CCACHE_PREFIX_MAP_FLAG = @CCACHE_PREFIX_MAP_FLAG@
ifneq (${CCACHE_PREFIX_MAP_FLAG},)
CFLAGS += ${CCACHE_PREFIX_MAP_FLAG}=${MAGICSRC}=.
endif
LDFLAGS = @LDFLAGS@
READLINE_DEFS = @rl_defs@
READLINE_LIBS = @rl_libs@
# Per-file dependency flags ("-MMD -MP" when the compiler supports it, else
# empty); used by the %.o rule in rules.mak to write .deps/<stem>.d as a compile
# side effect. Replaces the old serial "make depend" / Depend-file machinery.
AUTODEP_FLAGS = @AUTODEP_FLAGS@
EXEEXT = @EXEEXT@
GR_CFLAGS = @X_CFLAGS@ @gr_cflags@
GR_DFLAGS = @gr_dflags@
GR_LIBS = @X_LIBS@ @X_PRE_LIBS@ @gr_libs@ @X_EXTRA_LIBS@
GR_SRCS = @gr_srcs@
GR_HELPER_SRCS = @gr_hsrcs@
GR_HELPER_PROG = @gr_hprog@
OA = @OA@
OA_LIBS = @OA_LIBS@
C_OBJS = ${SRCS:.c=.o}
CXX_OBJS = ${CXXSRCS:.cpp=.o}
OBJS = ${CXX_OBJS} ${C_OBJS}
LIB_OBJS = ${LIB_SRCS:.c=.o}
CLEANS = ${OBJS} ${LIB_OBJS} lib${MODULE}.a lib${MODULE}.o ${MODULE}
# allows Makefile to be selective
MAKE_TCL = @MAKE_TCL@
MAKE_X11 = @MAKE_X11@
MAKE_GL = @MAKE_GL@
MAKE_GLU = @MAKE_GLU@
MAKE_CAIRO = @MAKE_CAIRO@
MAKE_READLINE = @MAKE_READLINE@