248 lines
10 KiB
Makefile
Executable File
248 lines
10 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@
|
|
|
|
# Computed once, simply-expanded (:=), and exported below. Sub-makes inherit the
|
|
# resulting strings and the `ifndef` guards skip recomputation -- so git/date/cat
|
|
# run once at the top instead of being re-spawned every time make rebuilds the
|
|
# recursively-expanded export for a child (a no-op recursive make otherwise spawns
|
|
# each of them hundreds of times).
|
|
ifndef MAGIC_VERSION
|
|
MAGIC_VERSION := $(shell cat ${MAGICSRC}/VERSION | cut -d. -f1-2)
|
|
endif
|
|
ifndef MAGIC_REVISION
|
|
MAGIC_REVISION := $(shell cat ${MAGICSRC}/VERSION | cut -d. -f3)
|
|
endif
|
|
# git may be absent (source tarball) or ${MAGICSRC} not a work-tree: fall back to
|
|
# empty rather than emitting an error.
|
|
ifndef MAGIC_COMMIT
|
|
MAGIC_COMMIT := $(shell git -C ${MAGICSRC} rev-parse HEAD 2>/dev/null)
|
|
endif
|
|
# "-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 date spawn entirely.
|
|
ifeq (${MAGIC_BUILDDATE_DEFS},)
|
|
ifndef MAGIC_BUILDDATE
|
|
# Honor SOURCE_DATE_EPOCH (reproducible builds -- appimage/npm tarballs) when set,
|
|
# else the current time. @SOURCE_DATE_CMD@ is the platform's epoch->UTC-date
|
|
# invocation, chosen by configure (GNU `date -u -d @` / `gdate` vs BSD
|
|
# `date -u -r `); the epoch is appended here. The SOURCE_DATE_EPOCH branch is
|
|
# UTC so a reproducible stamp does not depend on the builder's zone; the plain
|
|
# `date` fallback is local.
|
|
MAGIC_BUILDDATE := $(shell if [ -n "$$SOURCE_DATE_EPOCH" ]; then \
|
|
@SOURCE_DATE_CMD@$$SOURCE_DATE_EPOCH; \
|
|
else date; fi | tr -d '\r\n')
|
|
endif
|
|
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@
|