diff --git a/configure.ac b/configure.ac index cc4e8b0..6482d54 100644 --- a/configure.ac +++ b/configure.ac @@ -77,6 +77,14 @@ AS_IF([test "x$GIT_CHECK" = xyes], [AC_SUBST([git_version_long], `set -e | git describe --abbrev=7 --dirty 2>/dev/null || echo 'NO-GIT-REVISION'`, [long version for git source])], [AC_SUBST([git_version_long], [NO-GIT-REVISION])]) +AC_CHECK_PROG(UNAME_CHECK,uname,yes) +AS_IF([test "x$UNAME_CHECK" = xyes], + [AC_SUBST([uname_m], `set -e | uname -m`, [uname -m])], + [AC_MSG_ERROR([uname -m errored?])]) + +AS_IF([test "x$UNAME_CHECK" = xyes], + [AC_SUBST([uname_s], `set -e | uname -s`, [uname -s])], + [AC_MSG_ERROR([uname -s errored?])]) # Define rosdir and rospatchdir # TODO: Make these ./configure line options. diff --git a/src/Makefile.am b/src/Makefile.am index d42314c..ee58daa 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -9,6 +9,8 @@ tsv_sbcl_CFLAGS = "-D ROSWELL_TSV_TEST" gend.h: FORCE printf '#define ROS_COMPILE_ENVIRONMENT "%s"\n' "`$(CC) --version|head -n 1`" > $@.tmp printf '#define ROS_REVISION "@git_version@"\n' >> $@.tmp + printf '#define UNAME_M "@uname_m@"\n' >> $@.tmp + printf '#define UNAME_S "@uname_s@"\n' >> $@.tmp printf '#define PATCH_PATH "@roslisppatchdir@"\n' >> $@.tmp if WITH_WINDOWS printf '#define LISP_PATH "%s"\n' "`mkdir -p @roslispdir@;cd @roslispdir@; pwd -W 2>/dev/null`" >> $@.tmp @@ -20,6 +22,7 @@ endif rm -f $@.tmp cmd-internal.o: gend.h +util.o: gend.h bin_PROGRAMS = ros ros_SOURCES = main.c opt.c download.c download_windows.c archive.c archive_windows.c \ diff --git a/src/util.c b/src/util.c index 397247f..87affe6 100644 --- a/src/util.c +++ b/src/util.c @@ -1,11 +1,10 @@ #include "util.h" +#include "gend.h" #ifndef HAVE_WINDOWS_H char* uname_s(void) { - char *p,*p2; - p2=remove_char("\r\n",p=system_("uname")); - s(p); + char *p2=q(UNAME_S); if(strcmp(p2,"SunOS")==0) { s(p2); return q("solaris"); @@ -14,10 +13,7 @@ char* uname_s(void) { } char* uname_m(void) { - char *p=system_("uname -m"); - char *p2; - p2=remove_char("\r\n",p); - s(p); + char *p2=q(UNAME_M); if(strcmp(p2,"i86pc")==0) { s(p2); return q("x86-64");