pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/mk subst.mk is a Makefile fragment that implements a g...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/2d52fb0dd411
branches:  trunk
changeset: 460304:2d52fb0dd411
user:      jlam <jlam%pkgsrc.org@localhost>
date:      Wed Aug 27 11:24:37 2003 +0000

description:
subst.mk is a Makefile fragment that implements a general text replacement
facility for different classes of files in ${WRKSRC}.  For each class of
files, a target <class>-subst is created to perform the text replacement.

The following variables are used:

SUBST_STAGE.<class>
        "stage" at which we do the text replacement, e.g. pre-configure,
        post-build, etc.

SUBST_MESSAGE.<class>
        message to display, noting what is being substituted

SUBST_FILES.<class>
        files on which to run the substitution; these are relative to
        ${WRKSRC}

SUBST_SED.<class>
        sed(1) substitution expression to run on the specified files

This basically extracts a useful piece of code from bsd.buildlink2.mk and
puts it in a place that allows it to be more widely used, and so that the
functionality doesn't depend on USE_BUILDLINK2 being defined.

diffstat:

 mk/subst.mk |  80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 80 insertions(+), 0 deletions(-)

diffs (84 lines):

diff -r a145e9372cb7 -r 2d52fb0dd411 mk/subst.mk
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/mk/subst.mk       Wed Aug 27 11:24:37 2003 +0000
@@ -0,0 +1,80 @@
+# $NetBSD: subst.mk,v 1.1 2003/08/27 11:24:37 jlam Exp $
+#
+# This Makefile fragment implements a general text replacement facility
+# for different classes of files in ${WRKSRC}.  For each class of files,
+# a target <class>-subst is created to perform the text replacement.
+#
+# The following variables are used:
+#
+# SUBST_STAGE.<class>
+#      "stage" at which we do the text replacement, e.g. pre-configure,
+#      post-build, etc.
+#
+# SUBST_MESSAGE.<class>
+#      message to display, noting what is being substituted
+#                                      
+# SUBST_FILES.<class>
+#      files on which to run the substitution; these are relative to
+#      ${WRKSRC}
+#
+# SUBST_SED.<class>
+#      sed(1) substitution expression to run on the specified files
+
+ECHO_SUBST_MSG?=       ${ECHO}
+
+# _SUBST_IS_TEXT_FILE returns 0 if $${file} is a text file.
+_SUBST_IS_TEXT_FILE?= \
+       ${FILE_CMD} $${file} | ${EGREP} "(shell script|text)" >/dev/null 2>&1
+
+.for _class_ in ${SUBST_CLASSES}
+_SUBST_COOKIE.${_class_}=      ${WRKDIR}/.subst_${_class_}_done
+
+SUBST_TARGETS+=                        subst-${_class_}
+_SUBST_TARGETS.${_class_}=     subst-${_class_}-message
+_SUBST_TARGETS.${_class_}+=    ${_SUBST_COOKIE.${_class_}}
+_SUBST_TARGETS.${_class_}+=    subst-${_class_}-cookie
+
+.ORDER: ${_SUBST_TARGETS.${_class_}}
+
+.if defined(SUBST_STAGE.${_class_})
+${SUBST_STAGE.${_class_}}: subst-${_class_}
+.endif
+
+.PHONY: subst-${_class_}
+subst-${_class_}: ${_SUBST_TARGETS.${_class_}}
+
+.PHONY: subst-${_class_}-message
+ subst-${_class_}-message:
+       ${_PKG_SILENT}${_PKG_DEBUG}                                     \
+       ${ECHO_SUBST_MSG} "=> ${SUBST_MESSAGE.${_class_}}"
+
+.PHONY: subst-${_class_}-cookie
+ subst-${_class_}-cookie:
+       ${_PKG_SILENT}${_PKG_DEBUG}                                     \
+       ${TOUCH} ${TOUCH_FLAGS} ${_SUBST_COOKIE.${_class_}}
+
+${_SUBST_COOKIE.${_class_}}:
+.  if !empty(SUBST_SED.${_class_})
+       ${_PKG_SILENT}${_PKG_DEBUG}                                     \
+       cd ${WRKSRC};                                                   \
+       files="${SUBST_FILES.${_class_}}";                              \
+       case "$$files" in                                               \
+       "")     ;;                                                      \
+       *)      for file in $${files}; do                               \
+                       if ${_SUBST_IS_TEXT_FILE}; then                 \
+                               ${MV} -f $$file $$file.subst.sav;       \
+                               ${SED}  ${SUBST_SED.${_class_}}         \
+                                       $$file.subst.sav > $$file;      \
+                               if [ -x $$file.subst.sav ]; then        \
+                                       ${CHMOD} +x $$file;             \
+                               fi;                                     \
+                               if ${CMP} -s $$file.subst.sav $$file; then \
+                                       ${MV} -f $$file.subst.sav $$file; \
+                               else                                    \
+                                       ${ECHO} $$file >> ${.TARGET};   \
+                               fi;                                     \
+                       fi;                                             \
+               done ;;                                                 \
+       esac
+.  endif
+.endfor



Home | Main Index | Thread Index | Old Index