0.9.8.27:
[sbcl.git] / tools-for-build / grovel-headers.c
index c065542..18af788 100644 (file)
@@ -12,7 +12,7 @@
  * While most of SBCL is derived from the CMU CL system, many
  * utilities for the build process (like this one) were written from
  * scratch after the fork from CMU CL.
- * 
+ *
  * This software is in the public domain and is provided with
  * absolutely no warranty. See the COPYING and CREDITS files for
  * more information.
 
 #include <stdio.h>
 #include <sys/types.h>
-#include <sys/times.h>
+#ifdef _WIN32
+  #include <stdlib.h>
+#else
+  #include <sys/times.h>
+  #include <sys/wait.h>
+  #include <sys/ioctl.h>
+  #include <sys/termios.h>
+  #ifdef __APPLE_CC__
+    #include "../src/runtime/ppc-darwin-dlshim.h"
+    #include "../src/runtime/ppc-darwin-langinfo.h"
+  #else
+    #include <dlfcn.h>
+    #include <langinfo.h>
+  #endif
+#endif
+
 #include <sys/stat.h>
-#include <sys/wait.h>
-#include <sys/ioctl.h>
-#include <sys/termios.h>
 #include <fcntl.h>
 #include <unistd.h>
 #include <signal.h>
@@ -39,19 +51,26 @@ void
 defconstant(char* lisp_name, long unix_number)
 {
     printf("(defconstant %s %ld) ; #x%lx\n",
-          lisp_name, unix_number, unix_number);
+           lisp_name, unix_number, unix_number);
+}
+
+void deferrno(char* lisp_name, long unix_number)
+{
+    defconstant(lisp_name, unix_number);
 }
 
-#define DEFERRNO(name) defconstant(#name, name)
-#define DEFSIGNAL(name) defconstant(#name, name)
+void defsignal(char* lisp_name, long unix_number)
+{
+    defconstant(lisp_name, unix_number);
+}
 
 int
 main(int argc, char *argv[])
 {
     /* don't need no steenking command line arguments */
     if (1 != argc) {
-       fprintf(stderr, "argh! command line argument(s)\n");
-       exit(1);
+        fprintf(stderr, "argh! command line argument(s)\n");
+        exit(1);
     }
 
     /* don't need no steenking hand-editing */
@@ -60,9 +79,22 @@ main(int argc, char *argv[])
 ;;;; See the program \"grovel-headers.c\".\n\
 \n\
 ");
+#ifdef _WIN32
+    printf (";;; This file is presently unused for the Windows version of sbcl.\n");
+#else
+    printf("(in-package \"SB!ALIEN\")\n\n");
+
+    printf (";;;flags for dlopen()\n");
+
+    defconstant ("rtld-lazy", RTLD_LAZY);
+    defconstant ("rtld-now", RTLD_NOW);
+    defconstant ("rtld-global", RTLD_GLOBAL);
 
     printf("(in-package \"SB!UNIX\")\n\n");
 
+    printf(";;; langinfo\n");
+    defconstant("codeset", CODESET);
+
     printf(";;; types, types, types\n");
     DEFTYPE("clock-t", clock_t);
     DEFTYPE("dev-t",   dev_t);
@@ -101,18 +133,18 @@ main(int argc, char *argv[])
     defconstant("s-ifblk", S_IFBLK);
     defconstant("s-ifreg", S_IFREG);
     printf("\n");
-  
+
     defconstant("s-iflnk",  S_IFLNK);
     defconstant("s-ifsock", S_IFSOCK);
     printf("\n");
 
     printf(";;; error numbers\n");
-    DEFERRNO(ENOENT);
-    DEFERRNO(EINTR);
-    DEFERRNO(EIO);
-    DEFERRNO(EEXIST);
-    DEFERRNO(ESPIPE);
-    DEFERRNO(EWOULDBLOCK);
+    deferrno("enoent", ENOENT);
+    deferrno("eintr", EINTR);
+    deferrno("eio", EIO);
+    deferrno("eexist", EEXIST);
+    deferrno("espipe", ESPIPE);
+    deferrno("ewouldblock", EWOULDBLOCK);
     printf("\n");
 
     printf(";;; for wait3(2) in run-program.lisp\n");
@@ -156,47 +188,48 @@ main(int argc, char *argv[])
     printf("\n");
 
     printf(";;; signals\n");
-    DEFSIGNAL(SIGALRM);
-    DEFSIGNAL(SIGBUS);
-    DEFSIGNAL(SIGCHLD);
-    DEFSIGNAL(SIGCONT);
+    defsignal("sigalrm", SIGALRM);
+    defsignal("sigbus", SIGBUS);
+    defsignal("sigchld", SIGCHLD);
+    defsignal("sigcont", SIGCONT);
 #ifdef SIGEMT
-    DEFSIGNAL(SIGEMT);
+    defsignal("sigemt", SIGEMT);
 #endif
-    DEFSIGNAL(SIGFPE);
-    DEFSIGNAL(SIGHUP);
-    DEFSIGNAL(SIGILL);
-    DEFSIGNAL(SIGINT);
-    DEFSIGNAL(SIGIO);
-    DEFSIGNAL(SIGIOT);
-    DEFSIGNAL(SIGKILL);
-    DEFSIGNAL(SIGPIPE);
-    DEFSIGNAL(SIGPROF);
-    DEFSIGNAL(SIGQUIT);
-    DEFSIGNAL(SIGSEGV);
+    defsignal("sigfpe", SIGFPE);
+    defsignal("sighup", SIGHUP);
+    defsignal("sigill", SIGILL);
+    defsignal("sigint", SIGINT);
+    defsignal("sigio", SIGIO);
+    defsignal("sigiot", SIGIOT);
+    defsignal("sigkill", SIGKILL);
+    defsignal("sigpipe", SIGPIPE);
+    defsignal("sigprof", SIGPROF);
+    defsignal("sigquit", SIGQUIT);
+    defsignal("sigsegv", SIGSEGV);
 #if ((defined LISP_FEATURE_LINUX) && (defined LISP_FEATURE_X86))
-    DEFSIGNAL(SIGSTKFLT);
+    defsignal("sigstkflt", SIGSTKFLT);
 #endif
-    DEFSIGNAL(SIGSTOP);
-#if (!((defined LISP_FEATURE_LINUX) && (defined LISP_FEATURE_X86))) 
-    DEFSIGNAL(SIGSYS);
+    defsignal("sigstop", SIGSTOP);
+#if (!((defined LISP_FEATURE_LINUX) && (defined LISP_FEATURE_X86)))
+    defsignal("sigsys", SIGSYS);
 #endif
-    DEFSIGNAL(SIGTERM);
-    DEFSIGNAL(SIGTRAP);
-    DEFSIGNAL(SIGTSTP);
-    DEFSIGNAL(SIGTTIN);
-    DEFSIGNAL(SIGTTOU);
-    DEFSIGNAL(SIGURG);
-    DEFSIGNAL(SIGUSR1);
-    DEFSIGNAL(SIGUSR2);
-    DEFSIGNAL(SIGVTALRM);
+    defsignal("sigterm", SIGTERM);
+    defsignal("sigtrap", SIGTRAP);
+    defsignal("sigtstp", SIGTSTP);
+    defsignal("sigttin", SIGTTIN);
+    defsignal("sigttou", SIGTTOU);
+    defsignal("sigurg", SIGURG);
+    defsignal("sigusr1", SIGUSR1);
+    defsignal("sigusr2", SIGUSR2);
+    defsignal("sigvtalrm", SIGVTALRM);
 #ifdef LISP_FEATURE_SUNOS
-    DEFSIGNAL(SIGWAITING);
+    defsignal("sigwaiting", SIGWAITING);
 #endif
-    DEFSIGNAL(SIGWINCH);
+    defsignal("sigwinch", SIGWINCH);
 #ifndef LISP_FEATURE_HPUX
-    DEFSIGNAL(SIGXCPU);
-    DEFSIGNAL(SIGXFSZ);
+    defsignal("sigxcpu", SIGXCPU);
+    defsignal("sigxfsz", SIGXFSZ);
 #endif
+#endif // _WIN32
     return 0;
 }