# Configuration of `find´.
#
-# By default, `find´ will follow symlinks and use extended regular
-# expressions, ignoring hidden files and those which begin with a
-# period.
-FINDOPTS := -LE
+# By default, `find´ will not follow symlinks and will use extended
+# regular expressions, ignoring hidden files and those which begin with
+# a period.
+FINDOPTS := -PE
FINDRULES := -flags -nohidden -and -not -name '.*'
+FINDINCLUDEOPTS := $(FINDOPTS)
+FINDINCLUDERULES := $(FINDRULES)
# The list of parsers for plaintext file types.
#
# (callable) Escape special characters for use in sed regular
# expressions.
-override sedesc = $(subst $$,\$$,$(subst *,\*,$(subst .,\.,$(subst [,\[,$(subst ^,\^,$(subst \,\\,$1))))))
+override sedesc = $(subst /,[/],$(subst $$,\$$,$(subst *,\*,$(subst .,\.,$(subst [,\[,$(subst ^,\^,$(subst \,\\,$1)))))))
# Collect all of the applicable includes from the includes directory.
sourceincludes := $(shell $(FIND) $(FINDOPTS) $(INCLUDEDIR) -type f '(' $(FINDRULES) ')')
$(silent)$(PRINTF) '%b' '$(subst $(newline),\n,$(makefileinfo))'
# Compile all files, or error if any are recursive.
-all: $(call compiled,$(recursivefiles) $(compilablefiles) $(assetfiles)) ;
+all: $(call compiled,$(recursivefiles) $(compilablefiles) $(filter $(sourcefiles),$(assetfiles))) ;
# Destroy buildfiles.
clean:
$(silent)$(RM) -rf $(BUILDDIR)/ $(call compiled,$(recursivefiles) $(compilablefiles))
# Install the compiled files into `DESTDIR´.
-install: $(call installed,$(recursivefiles) $(compilablefiles) $(assetfiles)) ;
+install: $(call installed,$(recursivefiles) $(compilablefiles) $(filter $(sourcefiles),$(assetfiles))) ;
# List all source files and includes and their computed types.
list:
$(BUILDDIR)/magic.mgc: $(wildcard $(MAGICDIR)/*)
@$(ECHO) "Compiling new magic…"
$(silent)$(call ensuredirectory,$(dir $@))
- $(silent)$(FILE) -C -m $(call quote,$(MAGICDIR))
- $(silent)$(MV) $(call quote,$(MAGICDIR).mgc) $(call quote,$(BUILDDIR)/magic.mgc)
+ $(silent)cd $(call quote,$(BUILDDIR)) && $(FILE) -C -m $(call quote,$(realpath $(MAGICDIR)))
# Generate the main parser.
$(BUILDDIR)/parser.catalog: $(PARSERS)