From cdab57de00ab7ce157f1fdd601ce242588fcadce Mon Sep 17 00:00:00 2001 From: Mike Seplowitz Date: Mon, 12 Jan 2015 20:53:14 -0500 Subject: Fix getopt for AIX AIX supplies getopt but not getopt_long. We can't use the embedded getopt implementation, since the constness of its arguments doesn't match the AIX system routine. --- configure.py | 2 ++ src/getopt.c | 2 ++ src/getopt.h | 2 ++ src/ninja.cc | 3 +++ src/ninja_test.cc | 3 +++ 5 files changed, 12 insertions(+) diff --git a/configure.py b/configure.py index fcea72a..611030f 100755 --- a/configure.py +++ b/configure.py @@ -494,6 +494,8 @@ if platform.is_windows(): objs += cc('getopt') else: objs += cxx('subprocess-posix') +if platform.is_aix(): + objs += cc('getopt') if platform.is_msvc(): ninja_lib = n.build(built('ninja.lib'), 'ar', objs) else: diff --git a/src/getopt.c b/src/getopt.c index 3350fb9..0c2ef35 100644 --- a/src/getopt.c +++ b/src/getopt.c @@ -385,11 +385,13 @@ getopt_internal (int argc, char **argv, char *shortopts, return optopt; } +#ifndef _AIX int getopt (int argc, char **argv, char *optstring) { return getopt_internal (argc, argv, optstring, NULL, NULL, 0); } +#endif int getopt_long (int argc, char **argv, const char *shortopts, diff --git a/src/getopt.h b/src/getopt.h index b4247fb..965dc29 100644 --- a/src/getopt.h +++ b/src/getopt.h @@ -39,7 +39,9 @@ extern "C" extern int optopt; /* function prototypes */ +#ifndef _AIX int getopt (int argc, char **argv, char *optstring); +#endif int getopt_long (int argc, char **argv, const char *shortopts, const GETOPT_LONG_OPTION_T * longopts, int *longind); int getopt_long_only (int argc, char **argv, const char *shortopts, diff --git a/src/ninja.cc b/src/ninja.cc index a3d963f..f71f6dc 100644 --- a/src/ninja.cc +++ b/src/ninja.cc @@ -22,6 +22,9 @@ #include "getopt.h" #include #include +#elif defined(_AIX) +#include "getopt.h" +#include #else #include #include diff --git a/src/ninja_test.cc b/src/ninja_test.cc index 54d8784..11087b6 100644 --- a/src/ninja_test.cc +++ b/src/ninja_test.cc @@ -17,6 +17,9 @@ #ifdef _WIN32 #include "getopt.h" +#elif defined(_AIX) +#include "getopt.h" +#include #else #include #endif -- cgit v0.12