diff options
-rw-r--r-- | aclocal.m4 | 100 | ||||
-rw-r--r-- | config.h.in | 6 | ||||
-rwxr-xr-x | configure | 52 | ||||
-rw-r--r-- | configure.ac | 5 | ||||
-rw-r--r-- | src/body.c | 2 | ||||
-rw-r--r-- | src/draw.c | 7 |
6 files changed, 170 insertions, 2 deletions
@@ -21,6 +21,106 @@ If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_func_mkdir.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_FUNC_MKDIR +# +# DESCRIPTION +# +# Check whether mkdir() is mkdir or _mkdir, and whether it takes one or +# two arguments. +# +# This macro can define HAVE_MKDIR, HAVE__MKDIR, and MKDIR_TAKES_ONE_ARG, +# which are expected to be used as follows: +# +# #if HAVE_MKDIR +# # if MKDIR_TAKES_ONE_ARG +# /* MinGW32 */ +# # define mkdir(a, b) mkdir(a) +# # endif +# #else +# # if HAVE__MKDIR +# /* plain Windows 32 */ +# # define mkdir(a, b) _mkdir(a) +# # else +# # error "Don't know how to create a directory on this system." +# # endif +# #endif +# +# LICENSE +# +# Copyright (c) 2008 Alexandre Duret-Lutz <adl@gnu.org> +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <https://www.gnu.org/licenses/>. +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 6 + +AU_ALIAS([AC_FUNC_MKDIR], [AX_FUNC_MKDIR]) +AC_DEFUN([AX_FUNC_MKDIR], +[AC_CHECK_FUNCS([mkdir _mkdir]) +AC_CACHE_CHECK([whether mkdir takes one argument], + [ac_cv_mkdir_takes_one_arg], +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include <sys/stat.h> +#if HAVE_UNISTD_H +# include <unistd.h> +#endif +]], [[mkdir (".");]])], +[ac_cv_mkdir_takes_one_arg=yes], [ac_cv_mkdir_takes_one_arg=no])]) +if test x"$ac_cv_mkdir_takes_one_arg" = xyes; then + AC_DEFINE([MKDIR_TAKES_ONE_ARG], 1, + [Define if mkdir takes only one argument.]) +fi +]) + +dnl Note: +dnl ===== +dnl I have not implemented the following suggestion because I don't have +dnl access to such a broken environment to test the macro. So I'm just +dnl appending the comments here in case you have, and want to fix +dnl AX_FUNC_MKDIR that way. +dnl +dnl |Thomas E. Dickey (dickey@herndon4.his.com) said: +dnl | it doesn't cover the problem areas (compilers that mistreat mkdir +dnl | may prototype it in dir.h and dirent.h, for instance). +dnl | +dnl |Alexandre: +dnl | Would it be sufficient to check for these headers and #include +dnl | them in the AC_COMPILE_IFELSE block? (and is AC_HEADER_DIRENT +dnl | suitable for this?) +dnl | +dnl |Thomas: +dnl | I think that might be a good starting point (with the set of recommended +dnl | ifdef's and includes for AC_HEADER_DIRENT, of course). + +# =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_require_defined.html # =========================================================================== # diff --git a/config.h.in b/config.h.in index 3062b76..3cd09d7 100644 --- a/config.h.in +++ b/config.h.in @@ -73,6 +73,12 @@ /* Define to 1 if the system has the type `_Bool'. */ #undef HAVE__BOOL +/* Define to 1 if you have the `_mkdir' function. */ +#undef HAVE__MKDIR + +/* Define if mkdir takes only one argument. */ +#undef MKDIR_TAKES_ONE_ARG + /* Name of package */ #undef PACKAGE @@ -4506,7 +4506,7 @@ done ac_config_files="$ac_config_files Makefile src/Makefile" -# Additional Macro Checks +# Check that curses.h exists @@ -5671,6 +5671,56 @@ if test "x$ax_cv_curses" != xyes; then as_fn_error $? "requires an X/Open-compatible Curses library with color" "$LINENO" 5 fi +# Check if mkdir takes one or more arguments +for ac_func in mkdir _mkdir +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mkdir takes one argument" >&5 +$as_echo_n "checking whether mkdir takes one argument... " >&6; } +if ${ac_cv_mkdir_takes_one_arg+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <sys/stat.h> +#if HAVE_UNISTD_H +# include <unistd.h> +#endif + +int +main () +{ +mkdir ("."); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_mkdir_takes_one_arg=yes +else + ac_cv_mkdir_takes_one_arg=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mkdir_takes_one_arg" >&5 +$as_echo "$ac_cv_mkdir_takes_one_arg" >&6; } +if test x"$ac_cv_mkdir_takes_one_arg" = xyes; then + +$as_echo "#define MKDIR_TAKES_ONE_ARG 1" >>confdefs.h + +fi + + cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure diff --git a/configure.ac b/configure.ac index 86ed508..e9e1da1 100644 --- a/configure.ac +++ b/configure.ac @@ -23,10 +23,13 @@ AC_CHECK_FUNCS([mkdir]) AC_CONFIG_FILES([Makefile src/Makefile]) -# Additional Macro Checks +# Check that curses.h exists AX_WITH_CURSES if test "x$ax_cv_curses" != xyes; then AC_MSG_ERROR([requires an X/Open-compatible Curses library with color]) fi +# Check if mkdir takes one or more arguments +AX_FUNC_MKDIR + AC_OUTPUT @@ -1,3 +1,5 @@ +#include "config.h" + #include <assert.h> #include <stdbool.h> #include <stdlib.h> @@ -1,3 +1,5 @@ +#include "config.h" + #include <errno.h> #include <math.h> #include <ncurses.h> @@ -12,6 +14,11 @@ #include "include/body.h" +#ifdef MKDIR_TAKES_ONE_ARG /* MinGW32 */ +#undef mkdir +#define mkdir(a, b) mkdir(a) +#endif + #define START_SIZE 4 //TODO consider having speed be affected by window size #define SPEED 50000 //global refresh rate (for usleep()) |