From 45d2ed830766c316138a7910b1bde96e32719349 Mon Sep 17 00:00:00 2001 From: Mark Mentovai Date: Tue, 13 Jan 2009 15:21:35 +1100 Subject: [BUILD] Fixed build on OS X Hi, Herbert and friends. I've created a small patch that allows dash to be built on Mac OS X. I'm contributing it here with the hope that it's suitable for inclusion in dash. The changes in this patch are: - __attribute__((__alias__())) is not supported, add an autoconf check - open64 is not present although the stat64 family is, separate the autoconf checks - A syntax error had slipped into a non-glibc codepath - mkbuiltins had a nonportable mktemp invocation for the case where tempfile is not availalble Nothing in this patch is actually Mac OS X-specific, so it might aid portability to other platforms as well. Signed-off-by: Herbert Xu --- ChangeLog | 4 ++++ configure.ac | 15 +++++++++++++++ src/eval.c | 10 +++++++++- src/jobs.c | 9 ++++++++- 4 files changed, 36 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 95e5140..38bf009 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2009-01-13 Mark Mentovai + + * Fixed build on OS X. + 2008-12-26 Aleksey Cheusov * Fixed build on NetBSD. diff --git a/configure.ac b/configure.ac index 221b839..f46e260 100644 --- a/configure.ac +++ b/configure.ac @@ -18,6 +18,18 @@ fi AC_MSG_RESULT(${CC_FOR_BUILD}) AC_SUBST(CC_FOR_BUILD) +AC_MSG_CHECKING([for __attribute__((__alias__()))]) +dash_cv_have_attribute_alias=no +AC_LINK_IFELSE([AC_LANG_PROGRAM([void t() {} + void a() __attribute__((__alias__("t")));], + [a();])], + [dash_cv_have_attribute_alias=yes]) +AC_MSG_RESULT($dash_cv_have_attribute_alias) +if test "x$dash_cv_have_attribute_alias" = xyes; then + AC_DEFINE([HAVE_ALIAS_ATTRIBUTE], 1, + [Define if __attribute__((__alias__())) is supported]) +fi + AC_ARG_ENABLE(static, AS_HELP_STRING(--enable-static, \ [Build statical linked program])) if test "$enable_static" = "yes"; then @@ -60,6 +72,9 @@ AC_CHECK_FUNC(stat64,, [ AC_DEFINE(fstat64, fstat, [64-bit operations are the same as 32-bit]) AC_DEFINE(lstat64, lstat, [64-bit operations are the same as 32-bit]) AC_DEFINE(stat64, stat, [64-bit operations are the same as 32-bit]) +]) + +AC_CHECK_FUNC(open64,, [ AC_DEFINE(open64, open, [64-bit operations are the same as 32-bit]) ]) diff --git a/src/eval.c b/src/eval.c index 77291b4..0b449ee 100644 --- a/src/eval.c +++ b/src/eval.c @@ -326,7 +326,15 @@ exexit: #if !defined(__alpha__) || (defined(__GNUC__) && __GNUC__ >= 3) STATIC #endif -void evaltreenr(union node *, int) __attribute__ ((alias("evaltree"))); +void evaltreenr(union node *n, int flags) +#ifdef HAVE_ATTRIBUTE_ALIAS + __attribute__ ((alias("evaltree"))); +#else +{ + evaltree(n, flags); + abort(); +} +#endif STATIC void diff --git a/src/jobs.c b/src/jobs.c index 40dc8f6..2b6a752 100644 --- a/src/jobs.c +++ b/src/jobs.c @@ -361,7 +361,14 @@ fgcmd(int argc, char **argv) return retval; } -int bgcmd(int, char **) __attribute__((__alias__("fgcmd"))); +int bgcmd(int argc, char **argv) +#ifdef HAVE_ALIAS_ATTRIBUTE + __attribute__((__alias__("fgcmd"))); +#else +{ + return fgcmd(argc, argv); +} +#endif STATIC int -- cgit 1.4.1