]> git.draconx.ca Git - dxcommon.git/blobdiff - m4/cmdout.m4
Add libpng detection macro.
[dxcommon.git] / m4 / cmdout.m4
diff --git a/m4/cmdout.m4 b/m4/cmdout.m4
new file mode 100644 (file)
index 0000000..5aa3925
--- /dev/null
@@ -0,0 +1,39 @@
+dnl Copyright © 2014 Nick Bowler
+dnl
+dnl License WTFPL2: Do What The Fuck You Want To Public License, version 2.
+dnl This is free software: you are free to do what the fuck you want to.
+dnl There is NO WARRANTY, to the extent permitted by law.
+
+dnl DX_COMMAND_OUTPUT(variable, command, [action-if-ok], [action-if-failed])
+dnl
+dnl Helper to capture standard output of a shell command.  If the command
+dnl is successful then variable is assigned with its output (with newlines
+dnl converted to spaces), and action-if-ok is performed.  Otherwise, if
+dnl the command is unsuccessful, then variable is not changed, and
+dnl action-if-failed is performed.
+AC_DEFUN([DX_COMMAND_OUTPUT], [AC_REQUIRE([_DX_COMMAND_OUTPUT_SETUP])dnl
+AS_IF([$2 >conftest.out 2>&AS_MESSAGE_LOG_FD],
+       [m4_do([dx_fn_cmdout_collect_output $1],
+               [m4_ifnblank([$3], [m4_newline([$3])])])],
+       [$4])
+rm -f conftest.out
+])
+
+AC_DEFUN_ONCE([_DX_COMMAND_OUTPUT_SETUP], [m4_divert_push([INIT_PREPARE])dnl
+# Helper function to store the contents of conftest.out into a shell variable.
+dx_fn_cmdout_collect_output () {
+  AS_UNSET([$][1])
+  exec 3<conftest.out
+  _dx_save_IFS=$IFS
+  IFS=
+  while read _dx_tmp <&3
+  do
+AS_VAR_SET_IF([$][1],
+       [AS_VAR_APPEND([$][1], [" $_dx_tmp"])],
+       [AS_VAR_SET([$][1], [$_dx_tmp])])
+  done
+  IFS=$_dx_save_IFS
+  exec 3<&-
+}
+
+m4_divert_pop()])