diff --git a/src/Makefile b/src/Makefile
index dd65769a321c70e4883df53b2e981f74936ee568..61a13c6fe594c97d704dc0d1efaf62cc19a658cf 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -9,8 +9,8 @@ override BUILDDIR_NPTM=$(BUILDDIR)/libnptm
 endif
 ifndef LIBNPTM
 # choose one of the two following lines, depending on whether a static or dynamic libnptm is wanted
-#override LIBNPTM=$(BUILDDIR_NPTM)/libnptm.a
-override LIBNPTM=$(BUILDDIR_NPTM)/libnptm.so
+override LIBNPTM=$(BUILDDIR_NPTM)/libnptm.a
+#override LIBNPTM=$(BUILDDIR_NPTM)/libnptm.so
 endif
 DOCSDIR=$(SRCDIR)/../doc
 
diff --git a/src/cluster/Makefile b/src/cluster/Makefile
index 7aa295bd18e337896376a369bcc50a444721e582..e38967644a90d8377c0eb28895aca283feec760c 100644
--- a/src/cluster/Makefile
+++ b/src/cluster/Makefile
@@ -31,7 +31,7 @@ $(OBJDIR):
 	mkdir -p $(OBJDIR)
 
 $(LIBNPTM):
-	$(MAKE) -C ../libnptm $@
+	BUILDDIR=$(BUILDDIR) BUILDDIR_NPTM=$(BUILDDIR_NPTM) LIBNPTM=$(LIBNPTM) $(MAKE) -C ../libnptm $@
 
 $(BUILDDIR_CLU):
 	mkdir -p $(BUILDDIR_CLU)
@@ -42,6 +42,7 @@ $(BUILDDIR_CLU)/clu: $(OBJDIR) $(OBJDIR)/clu.o $(BUILDDIR_CLU)
 $(BUILDDIR_CLU)/edfb_clu: $(OBJDIR) $(OBJDIR)/edfb_clu.o $(BUILDDIR_CLU)
 	$(FC) $(FCFLAGS) -o $(BUILDDIR_CLU)/edfb_clu $(OBJDIR)/edfb_clu.o $(LDFLAGS)
 
+# We put $(LIBNPTM) as an object to link in directly, so that it will be found at runtime even if it is a shared object library. May change in the future when we have an install: target
 $(BUILDDIR_CLU)/np_cluster: $(OBJDIR) $(CXX_CLU_OBJS) $(BUILDDIR_CLU) $(LIBNPTM)
 	$(CXX) $(CXXFLAGS) -o $(BUILDDIR_CLU)/np_cluster $(CXX_CLU_OBJS) $(LIBNPTM) $(CXXLDFLAGS) 
 
diff --git a/src/libnptm/Makefile b/src/libnptm/Makefile
index e7e4cdf13ae58da5fcf9a0b2f8aef5fceafd4436..33dfa35e2a709c5b23381ea367b0e074b19d5f0d 100644
--- a/src/libnptm/Makefile
+++ b/src/libnptm/Makefile
@@ -47,5 +47,5 @@ clean:
 wipe:
 	#echo "BUILDDIR_NPTM in libnptm is $(BUILDDIR_NPTM)"
 	#echo "LIBNPTM in libnptm is $(LIBNPTM)"
-	rm -f $(BUILDDIR_NPTM)/libnptm.a $(BUILDDIR_NPTM)/libnptm.so $(CXX_NPTM_OBJS) $(CXX_NPTM_DYNOBJS) 
+	rm -f $(BUILDDIR_NPTM)/libnptm.a $(BUILDDIR_NPTM)/libnptm.so $(CXX_NPTM_OBJS) $(CXX_NPTM_DYNOBJS)
 
diff --git a/src/sphere/Makefile b/src/sphere/Makefile
index a2b56691229c2e106f939582e48cd8aed0072fb7..d5f9e499c7d92ae1c3bf732152ee14c8c397442d 100644
--- a/src/sphere/Makefile
+++ b/src/sphere/Makefile
@@ -30,7 +30,7 @@ $(OBJDIR):
 	mkdir -p $(OBJDIR)
 
 $(LIBNPTM):
-	$(MAKE) -C ../libnptm $@
+	BUILDDIR=$(BUILDDIR) BUILDDIR_NPTM=$(BUILDDIR_NPTM) LIBNPTM=$(LIBNPTM) $(MAKE) -C ../libnptm $@
 
 $(BUILDDIR_SPH):
 	mkdir -p $(BUILDDIR_SPH)
@@ -41,6 +41,7 @@ $(BUILDDIR_SPH)/edfb_sph: $(OBJDIR) $(OBJDIR)/edfb_sph.o $(BUILDDIR_SPH)
 $(BUILDDIR_SPH)/sph: $(OBJDIR) $(OBJDIR)/sph.o $(BUILDDIR_SPH)
 	$(FC) $(FCFLAGS) -o $(BUILDDIR_SPH)/sph $(OBJDIR)/sph.o $(LDFLAGS)
 
+# We put $(LIBNPTM) as an object to link in directly, so that it will be found at runtime even if it is a shared object library. May change in the future when we have an install: target
 $(BUILDDIR_SPH)/np_sphere: $(OBJDIR) $(CXX_SPH_OBJS) $(BUILDDIR_SPH) $(LIBNPTM)
 	$(CXX) $(CXXFLAGS) -o $(BUILDDIR_SPH)/np_sphere $(CXX_SPH_OBJS) $(LIBNPTM) $(CXXLDFLAGS) 
 
diff --git a/src/testing/Makefile b/src/testing/Makefile
index 4e3f4abee5c3739685ec7d26f211b5e99f9991c6..88d265d815863bf2eba17ca56eeafc2969506be0 100644
--- a/src/testing/Makefile
+++ b/src/testing/Makefile
@@ -29,14 +29,16 @@ $(OBJDIR):
 	mkdir -p $(OBJDIR)
 
 $(LIBNPTM):
-	$(MAKE) -C ../libnptm $@
+	BUILDDIR=$(BUILDDIR) BUILDDIR_NPTM=$(BUILDDIR_NPTM) LIBNPTM=$(LIBNPTM) $(MAKE) -C ../libnptm $@
 
 $(BUILDDIR_TEST):
 	mkdir -p $(BUILDDIR_TEST)
 
+# We put $(LIBNPTM) as an object to link in directly, so that it will be found at runtime even if it is a shared object library. May change in the future when we have an install: target
 $(BUILDDIR_TEST)/test_TEDF: $(OBJDIR) $(CXX_TEDF_OBJS) $(BUILDDIR_TEST) $(LIBNPTM)
 	$(CXX) $(CXXFLAGS) -o $(BUILDDIR_TEST)/test_TEDF $(CXX_TEDF_OBJS) $(LIBNPTM) $(CXXLDFLAGS) 
 
+# We put $(LIBNPTM) as an object to link in directly, so that it will be found at runtime even if it is a shared object library. May change in the future when we have an install: target
 $(BUILDDIR_TEST)/test_TTMS: $(OBJDIR) $(CXX_TTMS_OBJS) $(BUILDDIR_TEST) $(LIBNPTM)
 	$(CXX) $(CXXFLAGS) -o $(BUILDDIR_TEST)/test_TTMS $(CXX_TTMS_OBJS) $(LIBNPTM) $(CXXLDFLAGS) 
 
diff --git a/src/trapping/Makefile b/src/trapping/Makefile
index 624a0607b579d6371b93190eb100f14cb1c71ea6..ec6059e8eb2c1e71aead588a9d0ab090a563cab5 100644
--- a/src/trapping/Makefile
+++ b/src/trapping/Makefile
@@ -29,7 +29,7 @@ $(OBJDIR):
 	mkdir -p $(OBJDIR)
 
 $(LIBNPTM):
-	$(MAKE) -C ../libnptm $@
+	BUILDDIR=$(BUILDDIR) BUILDDIR_NPTM=$(BUILDDIR_NPTM) LIBNPTM=$(LIBNPTM) $(MAKE) -C ../libnptm $@
 
 $(BUILDDIR_TRA):
 	mkdir -p $(BUILDDIR_TRA)
@@ -40,6 +40,7 @@ $(BUILDDIR_TRA)/frfme: $(OBJDIR) $(OBJDIR)/frfme.o $(BUILDDIR_TRA)
 $(BUILDDIR_TRA)/lffft: $(OBJDIR) $(OBJDIR)/lffft.o $(BUILDDIR_TRA)
 	$(FC) $(FCFLAGS) -o $(BUILDDIR_TRA)/lffft $(OBJDIR)/lffft.o $(LDFLAGS)
 
+# We put $(LIBNPTM) as an object to link in directly, so that it will be found at runtime even if it is a shared object library. May change in the future when we have an install: target
 $(BUILDDIR_TRA)/np_trapping: $(OBJDIR) $(CXX_TRAP_OBJS) $(BUILDDIR_TRA) $(LIBNPTM)
 	$(CXX) $(CXXFLAGS) -o $(BUILDDIR_TRA)/np_trapping $(CXX_TRAP_OBJS) $(LIBNPTM) $(CXXLDFLAGS)