start rewrite
[pspp] / build-pspp.m4
diff --git a/build-pspp.m4 b/build-pspp.m4
new file mode 100644 (file)
index 0000000..7f1f3fa
--- /dev/null
@@ -0,0 +1,104 @@
+m4_define([_m4_divert(INIT_PREPARE)],   300)
+
+m4_pattern_forbid([^_?BP_])
+m4_pattern_allow([_BP_EOF])
+
+# BP_INIT([LOGFILE])
+# ------------------
+# Initializes and starts logging to LOGFILE.
+m4_define([BP_INIT],
+[AS_INIT
+_BP_INIT_LOG([$1])
+_BP_INIT_RESULTS
+AS_PREPARE
+])
+
+# _BP_INIT_LOG([LOGFILE])
+# -----------------------
+# Initialize the log file descriptor and write header to it.
+m4_define([_BP_INIT_LOG],
+[m4_divert_text([INIT_PREPARE],
+[m4_define([BP_LOG_FILE], [$1])
+m4_define([AS_MESSAGE_LOG_FD], 5)dnl
+cat >$1 <<_BPEOF
+This file is a build log.
+
+Invocation command line was
+
+  $ $[0] $[@]
+
+_BPEOF
+exec AS_MESSAGE_LOG_FD>>$1
+AS_UNAME >&AS_MESSAGE_LOG_FD
+
+cat >&AS_MESSAGE_LOG_FD <<_BPEOF
+
+_BPEOF
+])])# _BP_INIT_LOG
+
+# _BP_INIT_RESULTS
+m4_define([_BP_INIT_RESULTS],
+[AS_MKDIR_P([results])
+m4_define([BP_VARS_FD], 6)dnl
+exec BP_VARS_FD>results/VARS
+])
+
+# _BP_INIT_DEFAULTS
+# -----------------
+m4_define([_BP_INIT_DEFAULTS],
+[m4_divert_push([DEFAULTS])dnl
+
+test -n "$DJDIR" || exec AS_ORIGINAL_STDIN_FD<&0 </dev/null
+exec AS_MESSAGE_FD>&1
+])
+
+# BP_START_STEP([MESSAGE])
+m4_define([BP_START_STEP],
+  [AS_ECHO(["$1"])
+AS_ECHO(["\f@&t@
+$1"]) >&AS_MESSAGE_LOG_FD
+])
+
+# BP_SET_VAR(VARIABLE, [VALUE])
+m4_define([BP_SET_VAR],
+  [m4_if([$2], [], [], [$1='$2'
+])dnl
+AS_ECHO(["$1=$[$1]"]) >&BP_VARS_FD
+AS_ECHO(["$as_me:$LINENO: $1=$[$1]"]) >&AS_MESSAGE_LOG_FD
+AS_ECHO(["     $1=$[$1]"])])
+
+# BP_OUTPUT(DESCRIPTION, FILE)
+m4_define([BP_OUTPUT],
+[BP_START_STEP([Saving `AS_BASENAME([$2])`: $1])])
+
+# BP_MOVE_OUTPUT(DESCRIPTION, FILE)
+m4_define([BP_MOVE_OUTPUT],
+[BP_OUTPUT([$1], [$2])
+BP_RUN([mv $2 results/ >&AS_MESSAGE_LOG_FD 2>&1])])
+
+# BP_COPY_OUTPUT(DESCRIPTION, FILE)
+m4_define([BP_COPY_OUTPUT],
+[BP_OUTPUT([$1], [$2])
+BP_RUN([cp -R $2 results/ >&AS_MESSAGE_LOG_FD 2>&1])])
+
+# BP_RUN_LOG(COMMAND)
+m4_define([BP_RUN_LOG],
+[cat <<_BP_EOF >&AS_MESSAGE_LOG_FD
+$as_me:$LINENO: $1
+_BP_EOF
+$1 
+])
+
+# BP_RUN(COMMAND)
+m4_define([BP_RUN],
+[BP_RUN_LOG([$1])
+_bp_status=$?
+if test $_bp_status != 0; then
+  AS_ECHO(["Build failed, refer to BP_LOG_FILE for details"])
+  AS_ECHO(["$as_me:$LINENO: command exited with status $_bp_status"]) >&AS_MESSAGE_LOG_FD
+  AS_EXIT([1])
+fi])
+
+# BP_FINISH
+m4_define([BP_FINISH],
+[BP_START_STEP([success])])