[llvm-commits] [compiler-rt] r144843 - in /compiler-rt/trunk/SDKs: ./ README.txt darwin/ darwin/README.txt darwin/usr/ darwin/usr/include/ darwin/usr/include/limits.h darwin/usr/include/stdio.h darwin/usr/include/stdlib.h darwin/usr/include/string.h darwin/usr/include/sys/ darwin/usr/include/sys/stat.h darwin/usr/include/sys/types.h

Daniel Dunbar daniel at zuster.org
Wed Nov 16 14:40:58 PST 2011


Author: ddunbar
Date: Wed Nov 16 16:40:57 2011
New Revision: 144843

URL: http://llvm.org/viewvc/llvm-project?rev=144843&view=rev
Log:
build/SDKs: Sketch a minimal stub SDK for Darwin.
 - Motivation is explained in the README, but basically it is convenient to be
   able to build compiler-rt free standing. Since our external dependencies are
   so small, we can achieve this relatively easily by just stubbing out the
   declarations of the external dependencies.
 - This is in no way, shape, or form intended to be complete, it is just the
   minimal stubs necessary to support the stuff we use.

Added:
    compiler-rt/trunk/SDKs/
    compiler-rt/trunk/SDKs/README.txt
    compiler-rt/trunk/SDKs/darwin/
    compiler-rt/trunk/SDKs/darwin/README.txt
    compiler-rt/trunk/SDKs/darwin/usr/
    compiler-rt/trunk/SDKs/darwin/usr/include/
    compiler-rt/trunk/SDKs/darwin/usr/include/limits.h
    compiler-rt/trunk/SDKs/darwin/usr/include/stdio.h
    compiler-rt/trunk/SDKs/darwin/usr/include/stdlib.h
    compiler-rt/trunk/SDKs/darwin/usr/include/string.h
    compiler-rt/trunk/SDKs/darwin/usr/include/sys/
    compiler-rt/trunk/SDKs/darwin/usr/include/sys/stat.h
    compiler-rt/trunk/SDKs/darwin/usr/include/sys/types.h

Added: compiler-rt/trunk/SDKs/README.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/SDKs/README.txt?rev=144843&view=auto
==============================================================================
--- compiler-rt/trunk/SDKs/README.txt (added)
+++ compiler-rt/trunk/SDKs/README.txt Wed Nov 16 16:40:57 2011
@@ -0,0 +1,9 @@
+It is often convenient to be able to build compiler-rt libraries for a certain
+platform without having a full SDK or development environment installed.
+
+This makes it easy for users to build a compiler which can target a number of
+different platforms, without having to actively maintain full development
+environments for those platforms.
+
+Since compiler-rt's libraries typically have minimal interaction with the
+system, we achieve this by stubbing out the SDKs of certain platforms.

Added: compiler-rt/trunk/SDKs/darwin/README.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/SDKs/darwin/README.txt?rev=144843&view=auto
==============================================================================
--- compiler-rt/trunk/SDKs/darwin/README.txt (added)
+++ compiler-rt/trunk/SDKs/darwin/README.txt Wed Nov 16 16:40:57 2011
@@ -0,0 +1,3 @@
+The Darwin platforms are all similar enough we roll them into one SDK, and use
+preprocessor tricks to get the right definitions for the few things which
+diverge between OS X and iOS.

Added: compiler-rt/trunk/SDKs/darwin/usr/include/limits.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/SDKs/darwin/usr/include/limits.h?rev=144843&view=auto
==============================================================================
--- compiler-rt/trunk/SDKs/darwin/usr/include/limits.h (added)
+++ compiler-rt/trunk/SDKs/darwin/usr/include/limits.h Wed Nov 16 16:40:57 2011
@@ -0,0 +1,23 @@
+/* ===-- limits.h - stub SDK header for compiler-rt -------------------------===
+ *
+ *                     The LLVM Compiler Infrastructure
+ *
+ * This file is dual licensed under the MIT and the University of Illinois Open
+ * Source Licenses. See LICENSE.TXT for details.
+ *
+ * ===-----------------------------------------------------------------------===
+ *
+ * This is a stub SDK header file. This file is not part of the interface of
+ * this library nor an official version of the appropriate SDK header. It is
+ * intended only to stub the features of this header required by compiler-rt.
+ *
+ * ===-----------------------------------------------------------------------===
+ */
+
+#ifndef __LIMITS_H__
+#define __LIMITS_H__
+
+/* This is only here as a landing pad for the include_next from the compiler's
+   built-in limits.h. */
+
+#endif /* __LIMITS_H__ */

Added: compiler-rt/trunk/SDKs/darwin/usr/include/stdio.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/SDKs/darwin/usr/include/stdio.h?rev=144843&view=auto
==============================================================================
--- compiler-rt/trunk/SDKs/darwin/usr/include/stdio.h (added)
+++ compiler-rt/trunk/SDKs/darwin/usr/include/stdio.h Wed Nov 16 16:40:57 2011
@@ -0,0 +1,61 @@
+/* ===-- stdio.h - stub SDK header for compiler-rt --------------------------===
+ *
+ *                     The LLVM Compiler Infrastructure
+ *
+ * This file is dual licensed under the MIT and the University of Illinois Open
+ * Source Licenses. See LICENSE.TXT for details.
+ *
+ * ===-----------------------------------------------------------------------===
+ *
+ * This is a stub SDK header file. This file is not part of the interface of
+ * this library nor an official version of the appropriate SDK header. It is
+ * intended only to stub the features of this header required by compiler-rt.
+ *
+ * ===-----------------------------------------------------------------------===
+ */
+
+#ifndef __STDIO_H__
+#define __STDIO_H__
+
+typedef struct __sFILE FILE;
+typedef __SIZE_TYPE__ size_t;
+
+/* Determine the appropriate fopen() and fwrite() functions. */
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__)
+#  if defined(__i386)
+#    define __FOPEN_NAME "_fopen$UNIX2003"
+#    define __FWRITE_NAME "_fwrite$UNIX2003"
+#  elif defined(__x86_64__)
+#    define __FOPEN_NAME "_fopen"
+#    define __FWRITE_NAME "_fwrite"
+#  elif defined(__arm)
+#    define __FOPEN_NAME "_fopen"
+#    define __FWRITE_NAME "_fwrite"
+#  else
+#    error "unrecognized architecture for targetting OS X"
+#  endif
+#elif defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__)
+#  if defined(__i386) || defined (__x86_64)
+#    define __FOPEN_NAME "_fopen"
+#    define __FWRITE_NAME "_fwrite"
+#  elif defined(__arm)
+#    define __FOPEN_NAME "_fopen"
+#    define __FWRITE_NAME "_fwrite"
+#  else
+#    error "unrecognized architecture for targetting iOS"
+#  endif
+#else
+#  error "unrecognized architecture for targetting Darwin"
+#endif
+
+#    define stderr __stderrp
+extern FILE *__stderrp;
+
+int fclose(FILE *);
+int fflush(FILE *);
+FILE *fopen(const char * restrict, const char * restrict) __asm(__FOPEN_NAME);
+int fprintf(FILE * restrict, const char * restrict, ...);
+size_t fwrite(const void * restrict, size_t, size_t, FILE * restrict)
+  __asm(__FWRITE_NAME);
+
+#endif /* __STDIO_H__ */

Added: compiler-rt/trunk/SDKs/darwin/usr/include/stdlib.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/SDKs/darwin/usr/include/stdlib.h?rev=144843&view=auto
==============================================================================
--- compiler-rt/trunk/SDKs/darwin/usr/include/stdlib.h (added)
+++ compiler-rt/trunk/SDKs/darwin/usr/include/stdlib.h Wed Nov 16 16:40:57 2011
@@ -0,0 +1,29 @@
+/* ===-- stdlib.h - stub SDK header for compiler-rt -------------------------===
+ *
+ *                     The LLVM Compiler Infrastructure
+ *
+ * This file is dual licensed under the MIT and the University of Illinois Open
+ * Source Licenses. See LICENSE.TXT for details.
+ *
+ * ===-----------------------------------------------------------------------===
+ *
+ * This is a stub SDK header file. This file is not part of the interface of
+ * this library nor an official version of the appropriate SDK header. It is
+ * intended only to stub the features of this header required by compiler-rt.
+ *
+ * ===-----------------------------------------------------------------------===
+ */
+
+#ifndef __STDLIB_H__
+#define __STDLIB_H__
+
+#define NULL ((void *)0)
+
+typedef __SIZE_TYPE__ size_t;
+
+void abort(void) __attribute__((__noreturn__));
+void free(void *);
+char *getenv(const char *);
+void *malloc(size_t);
+
+#endif /* __STDLIB_H__ */

Added: compiler-rt/trunk/SDKs/darwin/usr/include/string.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/SDKs/darwin/usr/include/string.h?rev=144843&view=auto
==============================================================================
--- compiler-rt/trunk/SDKs/darwin/usr/include/string.h (added)
+++ compiler-rt/trunk/SDKs/darwin/usr/include/string.h Wed Nov 16 16:40:57 2011
@@ -0,0 +1,28 @@
+/* ===-- string.h - stub SDK header for compiler-rt -------------------------===
+ *
+ *                     The LLVM Compiler Infrastructure
+ *
+ * This file is dual licensed under the MIT and the University of Illinois Open
+ * Source Licenses. See LICENSE.TXT for details.
+ *
+ * ===-----------------------------------------------------------------------===
+ *
+ * This is a stub SDK header file. This file is not part of the interface of
+ * this library nor an official version of the appropriate SDK header. It is
+ * intended only to stub the features of this header required by compiler-rt.
+ *
+ * ===-----------------------------------------------------------------------===
+ */
+
+#ifndef __STRING_H__
+#define __STRING_H__
+
+typedef __SIZE_TYPE__ size_t;
+
+char *strcat(char *, const char *);
+char *strcpy(char *, const char *);
+char *strdup(const char *);
+size_t strlen(const char *);
+char *strncpy(char *, const char *, size_t);
+
+#endif /* __STRING_H__ */

Added: compiler-rt/trunk/SDKs/darwin/usr/include/sys/stat.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/SDKs/darwin/usr/include/sys/stat.h?rev=144843&view=auto
==============================================================================
--- compiler-rt/trunk/SDKs/darwin/usr/include/sys/stat.h (added)
+++ compiler-rt/trunk/SDKs/darwin/usr/include/sys/stat.h Wed Nov 16 16:40:57 2011
@@ -0,0 +1,25 @@
+/* ===-- stat.h - stub SDK header for compiler-rt ---------------------------===
+ *
+ *                     The LLVM Compiler Infrastructure
+ *
+ * This file is dual licensed under the MIT and the University of Illinois Open
+ * Source Licenses. See LICENSE.TXT for details.
+ *
+ * ===-----------------------------------------------------------------------===
+ *
+ * This is a stub SDK header file. This file is not part of the interface of
+ * this library nor an official version of the appropriate SDK header. It is
+ * intended only to stub the features of this header required by compiler-rt.
+ *
+ * ===-----------------------------------------------------------------------===
+ */
+
+#ifndef __SYS_STAT_H__
+#define __SYS_STAT_H__
+
+typedef unsigned short uint16_t;
+typedef uint16_t mode_t;
+
+int mkdir(const char *, mode_t);
+
+#endif /* __SYS_STAT_H__ */

Added: compiler-rt/trunk/SDKs/darwin/usr/include/sys/types.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/SDKs/darwin/usr/include/sys/types.h?rev=144843&view=auto
==============================================================================
--- compiler-rt/trunk/SDKs/darwin/usr/include/sys/types.h (added)
+++ compiler-rt/trunk/SDKs/darwin/usr/include/sys/types.h Wed Nov 16 16:40:57 2011
@@ -0,0 +1,20 @@
+/* ===-- types.h - stub SDK header for compiler-rt --------------------------===
+ *
+ *                     The LLVM Compiler Infrastructure
+ *
+ * This file is dual licensed under the MIT and the University of Illinois Open
+ * Source Licenses. See LICENSE.TXT for details.
+ *
+ * ===-----------------------------------------------------------------------===
+ *
+ * This is a stub SDK header file. This file is not part of the interface of
+ * this library nor an official version of the appropriate SDK header. It is
+ * intended only to stub the features of this header required by compiler-rt.
+ *
+ * ===-----------------------------------------------------------------------===
+ */
+
+#ifndef __SYS_TYPES_H__
+#define __SYS_TYPES_H__
+
+#endif /* __SYS_TYPES_H__ */





More information about the llvm-commits mailing list