blob: 7b85996265c05d7750d185d4c3f275387f983f38 [file] [log] [blame]
#
# Minimal autoconf support for the Algol 68 language.
# Adapted from the Algol 68 language support files.
#
# ------------------- #
# Language selection.
# ------------------- #
# AC_LANG(A68)
# ------------
AC_LANG_DEFINE([Algol 68], [a68], [A68], [A68], [],
[ac_ext=a68
ac_compile='$A68 -c $A68FLAGS conftest.$ac_ext >&AS_MESSAGE_LOG_FD'
ac_link='$A68 -o conftest$ac_exeext $A68FLAGS $LDFLAGS conftest.$ac_ext $LIBS >&AS_MESSAGE_LOG_FD'
ac_compiler_gnu=yes
])
# AC_LANG_A68
# -----------
AU_DEFUN([AC_LANG_A68], [AC_LANG(Algol 68)])
# ------------------- #
# Producing programs.
# ------------------- #
# AC_LANG_PROGRAM(Algol 68)([PROLOGUE], [BODY])
# ---------------------------------------------
m4_define([AC_LANG_PROGRAM(Algol 68)],
[$1
begin $2 m4_ifnblank([$2],[;])
skip
end])
# _AC_LANG_IO_PROGRAM(Algol 68)
# -----------------------------
# Produce source that performs I/O.
m4_define([_AC_LANG_IO_PROGRAM(Algol 68)],
[AC_LANG_PROGRAM([],
[if int fd = fcreate ("conftest.out", 8r0777); fd = -1
then perror ("error creating conftest.out")
elif fclose (fd) = -1 then perror ("error closing conftest.out")
fi
])])
# AC_LANG_CALL(Algol 68)(PROLOGUE, FUNCTION)
# ------------------------------------------
# Avoid conflicting decl of main.
m4_define([AC_LANG_CALL(Algol 68)],
[AC_LANG_PROGRAM([],[])])
# AC_LANG_FUNC_LINK_TRY(Algol 68)(FUNCTION)
# -----------------------------------------
# Try to link a program which calls FUNCTION.
m4_define([AC_LANG_FUNC_LINK_TRY(Algol 68)],
[AC_LANG_PROGRAM([],[])])
# AC_LANG_BOOL_COMPILE_TRY(Algol 68)(PROLOGUE, EXPRESSION)
# --------------------------------------------------------
# Return a program which is valid if EXPRESSION is nonzero.
m4_define([AC_LANG_BOOL_COMPILE_TRY(Algol 68)],
[AC_LANG_PROGRAM([], [@<:@$2@:>@INT test multiple;
0])])
# AC_LANG_INT_SAVE(Algol 68)(PROLOGUE, EXPRESSION)
# ------------------------------------------------
m4_define([AC_LANG_INT_SAVE(Algol 68)],
[AC_LANG_PROGRAM([
proc itoa = (int i) string:
begin if i = 0
then "0"
else int n := ABS i;
string res;
while n /= 0
do int rem = n %* 10;
res := (REPR (rem > 9 | (rem - 10) + ABS "a"
| rem + ABS "0")
+ res);
n %:= 10
od;
(i < 0 | "-" + res | res)
fi
end;
int ret := 0;
int fd = fopen ("conftest.val", file o wronly)/
(fd = -1 | ret := 1; stop);
(fputs (fd, itoa ($2)) = 0 | ret := 1; stop)
])])
# ---------------------- #
# Looking for compilers. #
# ---------------------- #
# AC_LANG_COMPILER(Algol 68)
# --------------------------
AC_DEFUN([AC_LANG_COMPILER(Algol 68)],
[AC_REQUIRE([AC_PROG_A68])])
# AC_PROG_A68
# ------------
AN_MAKEVAR([A68], [AC_PROG_A68])
AN_PROGRAM([ga68], [AC_PROG_A68])
AC_DEFUN([AC_PROG_A68],
[AC_LANG_PUSH(Algol 68)dnl
AC_ARG_VAR([A68], [Algol 68 compiler command])dnl
AC_ARG_VAR([A68FLAGS], [Algol 68 compiler flags])dnl
_AC_ARG_VAR_LDFLAGS()dnl
m4_ifval([$1],
[AC_CHECK_TOOLS(A68, [$1])],
[AC_CHECK_TOOL(A68, ga68)
if test -z "$A68"; then
if test -n "$ac_tool_prefix"; then
AC_CHECK_PROG(A68, [${ac_tool_prefix}ga68], [$ac_tool_prefix}ga68])
fi
fi
if test -z "$A68"; then
AC_CHECK_PROG(A68, ga68, ga68, , , 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
A68FLAGS="-g -O2"
AC_LANG_POP(Algol 68)dnl
])# AC_PROG_A68