- changed status to open
- removed comment
Disable K&R getopt() prototype
The file getopt.h, taken from glibc, defines a prototype for the function getopt() (which is not actually used in Cactus). Depending on the compiler used, this is either an ANSI prototype with arguments, or a K&R prototype without arguments.
The IBM C++ compiler does not handle the K&R prototype well; it complains that it sees ANSI prototypes in stdio.h and stdlib.h, and aborts.
Since we don't call getopt() in Cactus, I suggest to disable the K&R prototype:
Index: gnu/getopt.h
===================================================================
--- gnu/getopt.h (revision 4867)
+++ gnu/getopt.h (working copy)
@@ -150,7 +150,9 @@
int __long_only);
# endif
#else /* not __STDC__ */
-extern int getopt ();
+/* The declaration below leads to a prototype mismatch with
+ IBM XL C/C++ for AIX, V11.1 (5724-X13), Version: 11.01.0000.0005 */
+/* extern int getopt (); */
# ifndef __need_getopt
extern int getopt_long ();
extern int getopt_long_only ();
I also tried various options to disable the ANSI prototypes in the system libraries (didn't help), and tried updating getopt.h to a more recent version (didn't help either).
Keyword:
Comments (6)
-
reporter -
- removed comment
I don't see a problem removing it, as I also didn't find code in Cactus using it. However, would it be also possible to remove all getopt-related calls/files? (src/gnu/getopt*)
-
reporter - removed comment
No; if the system does not provide getopt_long_only, Cactus would not build.
-
- removed comment
Right, missed that. Please commit.
-
reporter - changed status to resolved
- removed comment
Applied.
-
- edited description
- changed status to closed
- Log in to comment