From ac2fb043cf45673036ca5c8961585a5bd9e2e36e Mon Sep 17 00:00:00 2001 From: Daniel Neri Date: Wed, 30 Jan 2008 01:02:42 +0100 Subject: [PATCH] Add NetBSD support --- Makefile | 8 ++++++++ core/system/system-docs.factor | 1 + core/system/system.factor | 4 ++-- vm/Config.netbsd | 4 ++++ vm/Config.netbsd.x86.32 | 2 ++ vm/Config.netbsd.x86.64 | 2 ++ vm/os-netbsd.c | 6 ++++++ vm/os-netbsd.h | 9 +++++++++ vm/platform.h | 3 +++ 9 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 vm/Config.netbsd create mode 100644 vm/Config.netbsd.x86.32 create mode 100644 vm/Config.netbsd.x86.64 create mode 100644 vm/os-netbsd.c create mode 100644 vm/os-netbsd.h diff --git a/Makefile b/Makefile index e02b6a672b..aad7fe90eb 100755 --- a/Makefile +++ b/Makefile @@ -56,6 +56,8 @@ default: @echo "linux-arm" @echo "openbsd-x86-32" @echo "openbsd-x86-64" + @echo "netbsd-x86-32" + @echo "netbsd-x86-64" @echo "macosx-x86-32" @echo "macosx-x86-64" @echo "macosx-ppc" @@ -83,6 +85,12 @@ freebsd-x86-32: freebsd-x86-64: $(MAKE) $(EXECUTABLE) CONFIG=vm/Config.freebsd.x86.64 +netbsd-x86-32: + $(MAKE) $(EXECUTABLE) CONFIG=vm/Config.netbsd.x86.32 + +netbsd-x86-64: + $(MAKE) $(EXECUTABLE) CONFIG=vm/Config.netbsd.x86.64 + macosx-freetype: ln -sf libfreetype.6.dylib \ Factor.app/Contents/Frameworks/libfreetype.dylib diff --git a/core/system/system-docs.factor b/core/system/system-docs.factor index d91a84ec99..d80cfa9ceb 100644 --- a/core/system/system-docs.factor +++ b/core/system/system-docs.factor @@ -49,6 +49,7 @@ HELP: os "linux" "macosx" "openbsd" + "netbsd" "solaris" "windows" } diff --git a/core/system/system.factor b/core/system/system.factor index 845ba8265d..4983260a36 100644 --- a/core/system/system.factor +++ b/core/system/system.factor @@ -39,11 +39,11 @@ splitting assocs ; : unix? ( -- ? ) os { - "freebsd" "openbsd" "linux" "macosx" "solaris" + "freebsd" "openbsd" "netbsd" "linux" "macosx" "solaris" } member? ; : bsd? ( -- ? ) - os { "freebsd" "openbsd" "macosx" } member? ; + os { "freebsd" "openbsd" "netbsd" "macosx" } member? ; : linux? ( -- ? ) os "linux" = ; diff --git a/vm/Config.netbsd b/vm/Config.netbsd new file mode 100644 index 0000000000..9f334e18b4 --- /dev/null +++ b/vm/Config.netbsd @@ -0,0 +1,4 @@ +include vm/Config.unix +PLAF_DLL_OBJS += vm/os-genunix.o vm/os-netbsd.o +CFLAGS += -export-dynamic +LIBS = -L/usr/local/lib/ -L/usr/pkg/lib -Wl,-rpath,/usr/pkg/lib -lm $(X11_UI_LIBS) diff --git a/vm/Config.netbsd.x86.32 b/vm/Config.netbsd.x86.32 new file mode 100644 index 0000000000..849bd65732 --- /dev/null +++ b/vm/Config.netbsd.x86.32 @@ -0,0 +1,2 @@ +include vm/Config.netbsd +include vm/Config.x86.32 diff --git a/vm/Config.netbsd.x86.64 b/vm/Config.netbsd.x86.64 new file mode 100644 index 0000000000..24f86d0118 --- /dev/null +++ b/vm/Config.netbsd.x86.64 @@ -0,0 +1,2 @@ +include vm/Config.netbsd +include vm/Config.x86.64 diff --git a/vm/os-netbsd.c b/vm/os-netbsd.c new file mode 100644 index 0000000000..b9238b7877 --- /dev/null +++ b/vm/os-netbsd.c @@ -0,0 +1,6 @@ +#include "master.h" + +const char *vm_executable_path(void) +{ + return NULL; +} diff --git a/vm/os-netbsd.h b/vm/os-netbsd.h new file mode 100644 index 0000000000..e282828577 --- /dev/null +++ b/vm/os-netbsd.h @@ -0,0 +1,9 @@ +#include + +#define ucontext_stack_pointer(uap) ((void *)_UC_MACHINE_SP((ucontext_t *)uap)) +#define UAP_PROGRAM_COUNTER(uap) _UC_MACHINE_PC((ucontext_t *)uap) + +#define UNKNOWN_TYPE_P(file) ((file)->d_type == DT_UNKNOWN) +#define DIRECTORY_P(file) ((file)->d_type == DT_DIR) + +extern char **environ; diff --git a/vm/platform.h b/vm/platform.h index 40324cc330..b0641176bc 100644 --- a/vm/platform.h +++ b/vm/platform.h @@ -58,6 +58,9 @@ #else #error "Unsupported OpenBSD flavor" #endif + #elif defined(__NetBSD__) + #define FACTOR_OS_STRING "netbsd" + #include "os-netbsd.h" #elif defined(linux) #define FACTOR_OS_STRING "linux" #include "os-linux.h"