diff --git a/com.oracle.truffle.r.native/Makefile b/com.oracle.truffle.r.native/Makefile
index 8df0b62e0786f0da1b6d588e1344fec8c718acb9..6e94512f8c7b92820d746b0f84ccab7562b86eee 100644
--- a/com.oracle.truffle.r.native/Makefile
+++ b/com.oracle.truffle.r.native/Makefile
@@ -27,12 +27,34 @@
 # Use "make cleanlib; make force" to force a rebuild.
 #
 
-ifneq ($(shell uname), Darwin)
-OS_DIR=linux
-LIB_DERIVED=lib/$(OS_DIR)/libRDerived.so 
+OSNAME := $(shell uname)
+
+ifeq ($(OSNAME), Linux)
+  OS_DIR      := linux
+  CC          := gcc
+  FC          := gfortran
+  CFLAGS      := -fPIC -O2
+  LDFLAGS     := -fPIC -shared
+  SHARED_EXT  := so
+  LIBS        := -lgfortran
+else ifeq ($(OSNAME), SunOS)
+  OS_DIR      := sunos
+  CC          := cc
+  FC          := f90
+  CFLAGS      := -m64 -O -xcode=pic13
+  LDFLAGS     := -G -m64
+  SHARED_EXT  := so
+else ifeq ($(OSNAME), Darwin)
+  OS_DIR      := darwin
+  CC          := gcc
+  FC          := gfortran
+  CFLAGS      := -fPIC -O2
+  LDFLAGS     := -dynamiclib -undefined dynamic_lookup
+  SHARED_EXT  := dylib
 else
-OS_DIR=darwin
-LIB_DERIVED=lib/$(OS_DIR)/libRDerived.dylib
+all:
+	@echo "This Makefile does not know how to compile for $(OSNAME)"
+	@false
 endif
 
 .PHONY: all clean cleanlib cleanobj force
@@ -46,30 +68,36 @@ F_SOURCES := $(wildcard $(SRC)/*.f)
 C_OBJECTS := $(subst $(SRC),$(OBJ),$(C_SOURCES:.c=.o))
 F_OBJECTS := $(subst $(SRC),$(OBJ),$(F_SOURCES:.f=.o))
 
+LIBDIR := ./lib/$(OS_DIR)
+LIB_DERIVED := lib/$(OS_DIR)/libRDerived.$(SHARED_EXT)
 
 all:
 	@echo $(LIB_DERIVED) is up to date
 
 force: $(LIB_DERIVED)
+	mkdir -p $(LIBDIR)
+# build+install blas and lapack too
+#	$(MAKE) -C src/blas
+#	cp src/blas/libRblas.$(SHARED_EXT) $(LIBDIR)
+#	$(MAKE) -C src/lapack
+#	cp src/lapack/libRlapack.$(SHARED_EXT) $(LIBDIR)
 
 $(LIB_DERIVED): $(C_OBJECTS) $(F_OBJECTS)
-ifneq ($(shell uname), Darwin)
-	gcc -fPIC -shared -o ./lib/linux/libRDerived.so $(C_OBJECTS) $(F_OBJECTS)
-else
-	gcc -dynamiclib -undefined dynamic_lookup -o ./lib/darwin/libRDerived.dylib $(C_OBJECTS) $(F_OBJECTS)
-endif
+	$(CC) $(LDFLAGS) -o $(LIBDIR)/libRDerived.$(SHARED_EXT) $(C_OBJECTS) $(F_OBJECTS) $(LIBS)
 
 $(OBJ)/%.o: $(SRC)/%.c
-	gcc -fPIC -O2 -c $< -o $@
+	$(CC) $(CFLAGS) -c $< -o $@
 
 $(OBJ)/%.o: $(SRC)/%.f
-	gfortran -fPIC -O2 -c $< -o $@
+	$(FC) $(CFLAGS) -c $< -o $@
 
 
 cleanlib:
-	rm -f ./lib/$(OS_DIR)/libRDerived.*
+	rm -f $(LIBDIR)/libRDerived.* $(LIBDIR)/libRblas.$(SHARED_EXT) $(LIBDIR)/libRlapack.$(SHARED_EXT)
 
 clean: cleanobj
+#	$(MAKE) -C src/blas clean
+#	$(MAKE) -C src/lapack clean
 
 cleanobj:
-	rm -f ./lib/$(OS_DIR)/*.o
+	rm -f $(LIBDIR)/*.o
diff --git a/com.oracle.truffle.r.native/lib/sunos/libRDerived.so b/com.oracle.truffle.r.native/lib/sunos/libRDerived.so
new file mode 100755
index 0000000000000000000000000000000000000000..05138a5aac1ac2f27743ca0dbbf8fedb868e6ee8
Binary files /dev/null and b/com.oracle.truffle.r.native/lib/sunos/libRDerived.so differ
diff --git a/com.oracle.truffle.r.native/lib/sunos/libRblas.so b/com.oracle.truffle.r.native/lib/sunos/libRblas.so
new file mode 100755
index 0000000000000000000000000000000000000000..286afad7f29eac8d4093cd007460ff391ee5a3c7
Binary files /dev/null and b/com.oracle.truffle.r.native/lib/sunos/libRblas.so differ
diff --git a/com.oracle.truffle.r.native/lib/sunos/libRlapack.so b/com.oracle.truffle.r.native/lib/sunos/libRlapack.so
new file mode 100755
index 0000000000000000000000000000000000000000..2b5d6e7875c9e0e0a4bfdf2bbd0d1656f45c1052
Binary files /dev/null and b/com.oracle.truffle.r.native/lib/sunos/libRlapack.so differ