Merge branch 'master' of github.com:JeffBezanson/femtolisp

This commit is contained in:
Jeff Bezanson 2013-06-08 19:29:46 -04:00
commit 0aa1359a3e
7 changed files with 32 additions and 8 deletions

View File

@ -1,4 +1,5 @@
CC = gcc
CC ?= gcc
CARBON_HEADERS ?= "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/Developer/Headers"
NAME = flisp
SRCS = $(NAME).c builtins.c string.c equalhash.c table.c iostream.c
@ -9,7 +10,7 @@ LIBTARGET = lib$(NAME)
LLTDIR = llt
LLT = $(LLTDIR)/libllt.a
CONFIG = -DMACOSX -DARCH_X86_64 -DBITS64 -D__CPU__=686
CONFIG = -DMACOSX -DARCH_X86_64 -DBITS64 -D__CPU__=686 -I$(CARBON_HEADERS)
FLAGS = -falign-functions -Wall -Wno-strict-aliasing -I$(LLTDIR) $(CFLAGS) -DUSE_COMPUTED_GOTO $(CONFIG)
LIBFILES = $(LLT)
LIBS = $(LIBFILES) -lm -framework ApplicationServices

View File

@ -2304,6 +2304,8 @@ static void lisp_init(size_t initial_heapsize)
set(symbol("*os-name*"), symbol("win32"));
#elif defined(MACOSX)
set(symbol("*os-name*"), symbol("macos"));
#elif defined(OPENBSD)
set(symbol("*os-name*"), symbol("openbsd"));
#else
set(symbol("*os-name*"), symbol("unknown"));
#endif

View File

@ -27,6 +27,9 @@ int main(int argc, char *argv[])
fl_init(512*1024);
fname_buf[0] = '\0';
#ifdef INITFILE
strcat(fname_buf, INITFILE);
#else
value_t str = symbol_value(symbol("*install-dir*"));
char *exedir = (str == UNBOUND ? NULL : cvalue_data(str));
if (exedir != NULL) {
@ -34,6 +37,7 @@ int main(int argc, char *argv[])
strcat(fname_buf, PATHSEPSTRING);
}
strcat(fname_buf, "flisp.boot");
#endif
value_t args[2];
fl_gc_handle(&args[0]);

View File

@ -89,6 +89,12 @@ char *get_exename(char *buf, size_t size)
return buf;
}
#elif defined(OPENBSD)
char *get_exename(char *buf, size_t size)
{
/* OpenBSD currently has no way of determining a processes pathname */
return NULL;
}
#elif defined(__FreeBSD__)
#include <sys/types.h>
#include <sys/sysctl.h>
@ -113,8 +119,8 @@ char *get_exename(char *buf, size_t size)
return buf;
}
#elif defined(MACOSX)
#include "/Developer/Headers/FlatCarbon/Processes.h"
#include "/Developer/Headers/FlatCarbon/Files.h"
#include <FlatCarbon/Processes.h>
#include <FlatCarbon/Files.h>
char *get_exename(char *buf, size_t size)
{
ProcessSerialNumber PSN;

View File

@ -21,13 +21,23 @@
# define LINUX
#elif defined(__APPLE__) && defined(__MACH__)
# define MACOSX
#elif defined(__OpenBSD__)
# define OPENBSD
#elif defined(_WIN32)
# define WIN32
#else
# error "unknown platform"
#endif
#if defined(OPENBSD)
#if defined(__x86_64__)
# define __SIZEOF_POINTER__ 8
#else
# define __SIZEOF_POINTER__ 4
#endif
#endif
#if !defined (BITS32) && !defined (BITS64)
#ifndef __SIZEOF_POINTER__
# error "__SIZEOF_POINTER__ undefined"
#endif
@ -38,6 +48,7 @@
#else
# error "this is one weird machine"
#endif
#endif
#if defined(WIN32)
@ -59,7 +70,7 @@
# define BIG_ENDIAN __BIG_ENDIAN
# define PDP_ENDIAN __PDP_ENDIAN
# define BYTE_ORDER __BYTE_ORDER
#elif defined(MACOSX)
#elif defined(MACOSX) || defined(OPENBSD)
# include <machine/endian.h>
# define __LITTLE_ENDIAN LITTLE_ENDIAN
# define __BIG_ENDIAN BIG_ENDIAN

View File

@ -106,7 +106,7 @@ void timestring(double seconds, char *buffer, size_t len)
#endif
}
#if defined(LINUX) || defined(MACOSX)
#if defined(LINUX) || defined(MACOSX) || defined(OPENBSD)
extern char *strptime(const char *s, const char *format, struct tm *tm);
double parsetime(const char *str)
{

View File

@ -25,9 +25,9 @@
#include <malloc.h>
#define snprintf _snprintf
#else
#ifndef __FreeBSD__
#if !defined(__FreeBSD__) && !defined(__OpenBSD__)
#include <alloca.h>
#endif /* __FreeBSD__ */
#endif /* __FreeBSD__ && __OpenBSD__ */
#endif
#include <assert.h>