diff -Naur libs3-2.0/GNUmakefile libs3-2.0-haiku/GNUmakefile
--- libs3-2.0/GNUmakefile	2011-09-28 08:16:09.000000000 +0000
+++ libs3-2.0-haiku/GNUmakefile	2012-12-12 16:19:46.457965568 +0000
@@ -134,7 +134,7 @@
           -D_ISOC99_SOURCE \
           -D_POSIX_C_SOURCE=200112L
 
-LDFLAGS = $(CURL_LIBS) $(LIBXML2_LIBS) -lpthread
+LDFLAGS = $(CURL_LIBS) $(LIBXML2_LIBS)
 
 
 # --------------------------------------------------------------------------
diff -Naur libs3-2.0/src/request_context.c libs3-2.0-haiku/src/request_context.c
--- libs3-2.0/src/request_context.c	2011-09-28 08:16:09.000000000 +0000
+++ libs3-2.0-haiku/src/request_context.c	2012-12-12 14:04:42.375652352 +0000
@@ -29,6 +29,8 @@
 #include <sys/select.h>
 #include "request.h"
 #include "request_context.h"
+#include <string.h> /* memset */
+#include <unistd.h> /* close */
 
 
 S3Status S3_create_request_context(S3RequestContext **requestContextReturn)
diff -Naur libs3-2.0/src/s3.c libs3-2.0-haiku/src/s3.c
--- libs3-2.0/src/s3.c	2011-09-28 08:16:09.000000000 +0000
+++ libs3-2.0-haiku/src/s3.c	2012-12-12 14:31:37.335020032 +0000
@@ -52,7 +52,7 @@
 #endif
 
 // Also needed for Windows, because somehow MinGW doesn't define this
-extern int putenv(char *);
+//extern int putenv(char *);
 
 
 // Command-line options, saved as globals ------------------------------------
