Fix Makefile to work with FreeBSD BSD make

ober

5ed1791c98037da59e9e3f2767ccfa402c6f0bd0

diff --git a/Makefile b/Makefile
index 7612b52..cb86efe 100644
--- a/Makefile
+++ b/Makefile
@@ -3,9 +3,11 @@
 
 SCHEME = scheme
 JERBOA_LIB = $(HOME)/mine/jerboa/lib
-LIB_DIR = $(CURDIR)/lib
-BIN_DIR = $(CURDIR)/bin
-SUPPORT_DIR = $(CURDIR)/support
+# Use .CURDIR for BSD make, CURDIR for GNU make
+TOPDIR != pwd
+LIB_DIR = $(TOPDIR)/lib
+BIN_DIR = $(TOPDIR)/bin
+SUPPORT_DIR = $(TOPDIR)/support
 
 # All utility names (matches gerbil-coreutils)
 UTILS = true false yes echo printenv sleep whoami logname pwd \
@@ -36,7 +38,7 @@ UTILS = true false yes echo printenv sleep whoami logname pwd \
         grep
 
 export CHEZSCHEMELIBDIRS = $(LIB_DIR):$(JERBOA_LIB)
-export PROJECT_DIR = $(CURDIR)
+export PROJECT_DIR = $(TOPDIR)
 
 # Default: build native multi-call binary
 .PHONY: all build binary clean test install help
@@ -46,15 +48,15 @@ all: binary
 # Native multi-call binary (BusyBox-style, self-contained ELF)
 binary: $(SUPPORT_DIR)/libcoreutils.so
 	@mkdir -p $(BIN_DIR)
-	PROJECT_DIR=$(CURDIR) $(SCHEME) --libdirs "$(CHEZSCHEMELIBDIRS)" -q < build-binary.ss
+	PROJECT_DIR=$(TOPDIR) $(SCHEME) --libdirs "$(CHEZSCHEMELIBDIRS)" -q < build-binary.ss
 
 # Legacy: build C shim + generate interpreter wrapper scripts
 build: $(SUPPORT_DIR)/libcoreutils.so $(BIN_DIR)/.generated
 
 $(SUPPORT_DIR)/libcoreutils.so: $(SUPPORT_DIR)/libcoreutils.c
-	gcc -shared -fPIC -O2 -o $@ $<
+	gcc -shared -fPIC -O2 -o $@ $(SUPPORT_DIR)/libcoreutils.c
 
-$(BIN_DIR)/.generated: $(wildcard $(LIB_DIR)/jerboa-coreutils/*.sls)
+$(BIN_DIR)/.generated: $(SUPPORT_DIR)/libcoreutils.so
 	@mkdir -p $(BIN_DIR)
 	@for util in $(UTILS); do \
 		echo '#!/bin/sh' > $(BIN_DIR)/$$util; \