| # | 
 | # Minimal autoconf support for the D language. | 
 | # Adapted from the Go language support files. | 
 | # | 
 |  | 
 | # ------------------- # | 
 | # Language selection. | 
 | # ------------------- # | 
 |  | 
 | # AC_LANG(D) | 
 | # ----------- | 
 | AC_LANG_DEFINE([D], [d], [GDC], [GDC], [], | 
 | [ac_ext=d | 
 | ac_compile='$GDC -c $GDCFLAGS conftest.$ac_ext >&AS_MESSAGE_LOG_FD' | 
 | ac_link='$GDC -o conftest$ac_exeext $GDCFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&AS_MESSAGE_LOG_FD' | 
 | ac_compiler_gnu=yes | 
 | ]) | 
 |  | 
 | # AC_LANG_D | 
 | # ---------- | 
 | AU_DEFUN([AC_LANG_D], [AC_LANG(D)]) | 
 |  | 
 | # ------------------- # | 
 | # Producing programs. | 
 | # ------------------- # | 
 |  | 
 | # AC_LANG_PROGRAM(D)([PROLOGUE], [BODY]) | 
 | # --------------------------------------- | 
 | m4_define([AC_LANG_PROGRAM(D)], | 
 | [module mod; | 
 | $1 | 
 |  | 
 | extern(C) int main() { | 
 |   $2 | 
 | }]) | 
 |  | 
 | # _AC_LANG_IO_PROGRAM(D) | 
 | # ----------------------- | 
 | # Produce source that performs I/O. | 
 | m4_define([_AC_LANG_IO_PROGRAM(D)], | 
 | [AC_LANG_PROGRAM([import core.stdc.stdio;], | 
 | [FILE *f = fopen ("conftest.out", "w"); | 
 |  return ferror (f) || fclose (f) != 0; | 
 | ])]) | 
 |  | 
 | # AC_LANG_CALL(D)(PROLOGUE, FUNCTION) | 
 | # ------------------------------------ | 
 | # TODO: Avoid conflicting decl of main? | 
 | # Used by AC_SEARCH_LIBS. | 
 | m4_define([AC_LANG_CALL(D)], | 
 | [AC_LANG_PROGRAM([$1 extern(C) int $2();], [$2(); return 0;])]) | 
 |  | 
 | # AC_LANG_FUNC_LINK_TRY(D)(FUNCTION) | 
 | # ----------------------------------- | 
 | # Try to link a program which calls FUNCTION. | 
 | # This only works for extern(C) functions. | 
 | m4_define([AC_LANG_FUNC_LINK_TRY(D)], | 
 | [AC_LANG_PROGRAM([extern(C) int $1();], [return $1();])]) | 
 |  | 
 | # AC_LANG_BOOL_COMPILE_TRY(D)(PROLOGUE, EXPRESSION) | 
 | # -------------------------------------------------- | 
 | # Return a program which is valid if EXPRESSION is nonzero. | 
 | # Probably not that useful for D, we can extract any information | 
 | # we need using CTFE. | 
 | m4_define([AC_LANG_BOOL_COMPILE_TRY(D)], | 
 | [AC_LANG_PROGRAM([$1], | 
 | [static assert($2); return 0;])]) | 
 |  | 
 | # AC_LANG_INT_SAVE(D)(PROLOGUE, EXPRESSION) | 
 | # ------------------------------------------ | 
 | m4_define([AC_LANG_INT_SAVE(D)], | 
 | [AC_LANG_PROGRAM([$1 | 
 | import core.stdc.stdio, core.stdc.stdlib; | 
 | ], | 
 | [ | 
 |   FILE *f = fopen ("conftest.val", "w"); | 
 |   if (! f) | 
 |     return 1; | 
 |   if (($2) < 0) | 
 |     { | 
 |       fprintf (f, "%ld", $2); | 
 |     } | 
 |   else | 
 |     { | 
 |       fprintf (f, "%lu", $2); | 
 |     } | 
 |   /* Do not output a trailing newline, as this causes \r\n confusion | 
 |      on some platforms.  */ | 
 |   return ferror (f) || fclose (f) != 0; | 
 | ])]) | 
 |  | 
 | # ---------------------- # | 
 | # Looking for compilers. # | 
 | # ---------------------- # | 
 |  | 
 | # AC_LANG_COMPILER(D) | 
 | # -------------------- | 
 | AC_DEFUN([AC_LANG_COMPILER(D)], | 
 | [AC_REQUIRE([AC_PROG_GDC])]) | 
 |  | 
 | # AC_PROG_GDC | 
 | # ---------- | 
 | AN_MAKEVAR([GDC], [AC_PROG_GDC]) | 
 | AN_PROGRAM([gdc], [AC_PROG_GDC]) | 
 | AC_DEFUN([AC_PROG_GDC], | 
 | [AC_LANG_PUSH(D)dnl | 
 | AC_ARG_VAR([GDC],     [D compiler command])dnl | 
 | AC_ARG_VAR([GDCFLAGS],  [D compiler flags])dnl | 
 | _AC_ARG_VAR_LDFLAGS()dnl | 
 | m4_ifval([$1], | 
 |       [AC_CHECK_TOOLS(GDC, [$1])], | 
 | [AC_CHECK_TOOL(GDC, gdc) | 
 | if test -z "$GDC"; then | 
 |   if test -n "$ac_tool_prefix"; then | 
 |     AC_CHECK_PROG(GDC, [${ac_tool_prefix}gdc], [$ac_tool_prefix}gdc]) | 
 |   fi | 
 | fi | 
 | if test -z "$GDC"; then | 
 |   AC_CHECK_PROG(GDC, gdc, gdc, , , false) | 
 | fi | 
 | ]) | 
 |  | 
 | # Provide some information about the compiler. | 
 | _AS_ECHO_LOG([checking for _AC_LANG compiler version]) | 
 | set X $ac_compile | 
 | ac_compiler=$[2] | 
 | _AC_DO_LIMIT([$ac_compiler --version >&AS_MESSAGE_LOG_FD]) | 
 | m4_expand_once([_AC_COMPILER_EXEEXT])[]dnl | 
 | m4_expand_once([_AC_COMPILER_OBJEXT])[]dnl | 
 | AC_LANG_POP(D)dnl | 
 | ])# AC_PROG_D | 
 |  |