Skip to contentSkip to conversation

Fix building on Solaris (and don't break Cygwin)

PATCH In review Tom Rini 4 participants 7 messages Jul 9, 2004 – Jul 12, 2004

lore
Share & tools
lore

Tom Rini

author
#0 lore raw

PATCH 1/1 Fix building on Solaris (and don't break Cygwin)

The following is from Jean-Christophe Dubois <[email protected]>. On Solaris 2.8, <stdint.h> does not exist, but <inttypes.h> does. However, on cygwin (the other odd place that the kernel is compiled on) <inttypes.h> doesn't exist. So we end up with something like the following.

scripts/sumversion.c Fri Jul 9 04:10:27 2004 renamed from scripts/sumversion.c Wed Jun 16 01:19:43 2004 +4 -0
@@ -1,5 +1,9 @@
 #include <netinet/in.h>
+#ifdef __sun__
+#include <inttypes.h>
+#else // __sun__
 #include <stdint.h>
+#endif // __sun__
 #include <ctype.h>
 #include <errno.h>
 #include <string.h>
scripts/genksyms/genksyms.c Thu Jul 8 11:04:04 2004 renamed from scripts/genksyms/genksyms.c Wed Jun 16 01:19:23 2004 +3 -0
@@ -27,7 +27,9 @@
 #include <unistd.h>
 #include <assert.h>
 #include <stdarg.h>
+#ifdef __GNU_LIBRARY__
 #include <getopt.h>
+#endif /* __GNU_LIBRARY__ */
 
 #include "genksyms.h"
 
@@ -502,12 +504,21 @@
        fputs("Usage:\n"
              "genksyms [-dDwqhV] > /path/to/.tmp_obj.ver\n"
              "\n"
+#ifdef __GNU_LIBRARY__
              "  -d, --debug           Increment the debug level

(repeatable)\n"
" -D, --dump Dump expanded symbol defs (for
debugging only)\n"

              "  -w, --warnings        Enable warnings\n"
              "  -q, --quiet           Disable warnings (default)\n"
              "  -h, --help            Print this message\n"
              "  -V, --version         Print the release version\n"

+#else /* __GNU_LIBRARY__ */
+ " -d Increment the debug level
(repeatable)\n"
+ " -D Dump expanded symbol defs (for
debugging only)\n"

+             "  -w                    Enable warnings\n"
+             "  -q                    Disable warnings (default)\n"
+             "  -h                    Print this message\n"
+             "  -V                    Print the release version\n"
+#endif /* __GNU_LIBRARY__ */
              , stderr);

}

@@ -516,6 +527,7 @@
{
int o;

+#ifdef __GNU_LIBRARY__

   struct option long_opts[] = {
     {"debug", 0, 0, 'd'},
     {"warnings", 0, 0, 'w'},

@@ -528,6 +540,9 @@

while ((o = getopt_long(argc, argv, "dwqVDk:p:",

                          &long_opts[0], NULL)) != EOF)
+#else  /* __GNU_LIBRARY__ */
+  while ((o = getopt(argc, argv, "dwqVDk:p:")) != EOF)
+#endif /* __GNU_LIBRARY__ */
     switch (o)
       {
       case 'd':
arch/ppc/boot/utils/mkbugboot.c Fri Jul 9 04:11:43 2004 renamed from arch/ppc/boot/utils/mkbugboot.c Wed Jun 16 01:19:36 2004 +5 -5
@@ -21,6 +21,11 @@
 #include <stdlib.h>
 #include <errno.h>
 #include <fcntl.h>
+#ifdef __sun__
+#include <inttypes.h>
+#else // __sun__
+#include <stdint.h>
+#endif // __sun__
 
 #ifdef __i386__
 #define cpu_to_be32(x) le32_to_cpu(x)
@@ -48,11 +53,6 @@
 
 /* size of read buffer */
 #define SIZE 0x1000
-
-/* typedef long int32_t; */
-typedef unsigned long uint32_t;
-typedef unsigned short uint16_t;
-typedef unsigned char uint8_t;
 
 /* PPCBUG ROM boot header */
 typedef struct bug_boot_header {
Signature · 2 lines
Tom Rini
http://gate.crashing.org/~trini/
#1 lore raw
Quoted 6 lines · Tom Rini

The following is from Jean-Christophe Dubois <[email protected]>. On Solaris 2.8, <stdint.h> does not exist, but <inttypes.h> does. However, on cygwin (the other odd place that the kernel is compiled on) <inttypes.h> doesn't exist. So we end up with something like the following.

Yikes. <stdint.h> is mandated by C99, please complain to sun instead or write up the header yourself - it's not that difficult anyway.

author
#2 lore raw
Quoted 10 lines · Christoph Hellwig
Quoted 6 lines · Tom Rini

The following is from Jean-Christophe Dubois <[email protected]>. On Solaris 2.8, <stdint.h> does not exist, but <inttypes.h> does. However, on cygwin (the other odd place that the kernel is compiled on) <inttypes.h> doesn't exist. So we end up with something like the following.

Yikes. <stdint.h> is mandated by C99, please complain to sun instead or write up the header yourself - it's not that difficult anyway.

I forgot to CC Jean on this, but that's not exactly a nice option. In fact, it'd be fine to just switch to <inttypes.h>, afaics, except that cygwin doesn't have that.

Signature · 2 lines
Tom Rini
http://gate.crashing.org/~trini/
#3 lore raw
Quoted 3 lines · Tom Rini

I forgot to CC Jean on this, but that's not exactly a nice option. In fact, it'd be fine to just switch to <inttypes.h>, afaics, except that cygwin doesn't have that.

Tell him to build on Linux, we don't support legacy OSes ;-)

#4 lore raw

Hello Christoph,

Quoted 6 lines · Christoph Hellwig
Quoted 3 lines · Tom Rini

I forgot to CC Jean on this, but that's not exactly a nice option. In fact, it'd be fine to just switch to <inttypes.h>, afaics, except that cygwin doesn't have that.

Tell him to build on Linux, we don't support legacy OSes ;-)

Although I am certainly hopeful I will be able to use Linux end to end in a not too distant future :), I have to work with what I am given today. And maybe I am not the only one in this situation ...

Please be a bit compassionate with the poor souls out there that have to cope with Legacy OSes as build systems and/or configuration management systems :(

Also please note that 2.4 uses to build OK on Solaris. The actual 2.6 situation is a little step-back in this matter.

JC

#5 lore raw
In reply to Christoph Hellwig
Followup to:  <[email protected]>
By author:    Christoph Hellwig <[email protected]>
In newsgroup: linux.dev.kernel
Quoted 9 lines · Tom Rini
Quoted 6 lines

The following is from Jean-Christophe Dubois <[email protected]>. On Solaris 2.8, <stdint.h> does not exist, but <inttypes.h> does. However, on cygwin (the other odd place that the kernel is compiled on) <inttypes.h> doesn't exist. So we end up with something like the following.

Quoted 3 lines

Yikes. <stdint.h> is mandated by C99, please complain to sun instead or write up the header yourself - it's not that difficult anyway.

<inttypes.h> is also mandated by C99, and is a more complete header (it includes stdint.h).

-hpa

author
#6 lore raw
Quoted 12 lines · H. Peter Anvin
Followup to:  <[email protected]>
By author:    Christoph Hellwig <[email protected]>
In newsgroup: linux.dev.kernel
Quoted 9 lines · Tom Rini
Quoted 6 lines

The following is from Jean-Christophe Dubois <[email protected]>. On Solaris 2.8, <stdint.h> does not exist, but <inttypes.h> does. However, on cygwin (the other odd place that the kernel is compiled on) <inttypes.h> doesn't exist. So we end up with something like the following.

Quoted 6 lines
Quoted 3 lines

Yikes. <stdint.h> is mandated by C99, please complain to sun instead or write up the header yourself - it's not that difficult anyway.

<inttypes.h> is also mandated by C99, and is a more complete header (it includes stdint.h).

Which makes it quite annoying that Cygwin lacks it.

Signature · 2 lines
Tom Rini
http://gate.crashing.org/~trini/