diff --git a/configure.py b/configure.py
index 4b1e93f..75fa736 100755
--- a/configure.py
+++ b/configure.py
@@ -12,7 +12,11 @@
     build.export_cpath("include", ["pthreadpool.h"])
 
     with build.options(source_dir="src", extra_include_dirs="src", deps=build.deps.fxdiv):
-        build.static_library("pthreadpool", build.cc("pthreadpool.c"))
+        if build.target.is_emscripten:
+            source = "threadpool-shim.c"
+        else:
+            source = "threadpool-pthreads.c"
+        build.static_library("pthreadpool", build.cc(source))
 
     with build.options(source_dir="test", deps=[build, build.deps.googletest]):
         build.unittest("pthreadpool-test", build.cxx("pthreadpool.cc"))
diff --git a/src/pthreadpool.c b/src/threadpool-pthreads.c
similarity index 100%
rename from src/pthreadpool.c
rename to src/threadpool-pthreads.c
diff --git a/src/threadpool-shim.c b/src/threadpool-shim.c
new file mode 100644
index 0000000..6a9262f
--- /dev/null
+++ b/src/threadpool-shim.c
@@ -0,0 +1,73 @@
+/* Standard C headers */
+#include <stddef.h>
+
+/* Library header */
+#include <pthreadpool.h>
+
+static inline size_t min(size_t a, size_t b) {
+	return a < b ? a : b;
+}
+
+struct pthreadpool* pthreadpool_create(size_t threads_count) {
+	return NULL;
+}
+
+size_t pthreadpool_get_threads_count(struct pthreadpool* threadpool) {
+	return 1;
+}
+
+void pthreadpool_compute_1d(
+	struct pthreadpool* threadpool,
+	pthreadpool_function_1d_t function,
+	void* argument,
+	size_t range)
+{
+	for (size_t i = 0; i < range; i++) {
+		function(argument, i);
+	}
+}
+
+void pthreadpool_compute_1d_tiled(
+	pthreadpool_t threadpool,
+	pthreadpool_function_1d_tiled_t function,
+	void* argument,
+	size_t range,
+	size_t tile)
+{
+	for (size_t i = 0; i < range; i += tile) {
+		function(argument, i, min(range - i, tile));
+	}
+}
+
+void pthreadpool_compute_2d(
+	struct pthreadpool* threadpool,
+	pthreadpool_function_2d_t function,
+	void* argument,
+	size_t range_i,
+	size_t range_j)
+{
+	for (size_t i = 0; i < range_i; i++) {
+		for (size_t j = 0; j < range_j; j++) {
+			function(argument, i, j);
+		}
+	}
+}
+
+void pthreadpool_compute_2d_tiled(
+	pthreadpool_t threadpool,
+	pthreadpool_function_2d_tiled_t function,
+	void* argument,
+	size_t range_i,
+	size_t range_j,
+	size_t tile_i,
+	size_t tile_j)
+{
+	for (size_t i = 0; i < range_i; i += tile_i) {
+		for (size_t j = 0; j < range_j; j += tile_j) {
+			function(argument, i, j, min(range_i - i, tile_i), min(range_j - j, tile_j));
+		}
+	}
+}
+
+void pthreadpool_destroy(struct pthreadpool* threadpool) {
+}
