This provides a functional rumpdisk and rumpusbdisk
with or without static linkage of librump.
TESTED:
- opens usb stick with both dynamic and static rumpusbdisk.
- boots off ahci with static rumpdisk
---
Makeconf | 4 ++--
rumpdisk/Makefile | 18 +++++++++++++-----
2 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/Makeconf b/Makeconf
index 7585260d..288e7daa 100644
--- a/Makeconf
+++ b/Makeconf
@@ -349,7 +349,7 @@ $(progtarg): %$(target-suffix): $(BUGADDR)
$(addsuffix .static,$(progtarg)): %$(target-suffix).static: $(BUGADDR)
$(link-executable) -static \
- '-Wl,-(' $(patsubst %.so,%.a,$^) $($*-LDLIBS) $(LDLIBS) \
+ '-Wl,-(' $(patsubst %.so,%.a,$^) $($*.static-LDLIBS) $(LDLIBS) \
'-Wl,-)' \
$(and $(filter %/libstore_part.a,$^), $(PARTED_LIBS))
endif
@@ -359,7 +359,7 @@ $(addsuffix .prof,$(progtarg)): %$(target-suffix).prof:
$(BUGADDR)
$(CC) -pg $(CFLAGS) $($*-CFLAGS) $(LDFLAGS) $($*-LDFLAGS) \
$(BUGADDR_REF) -static \
-o $@ \
- '-Wl,-(' $^ $($*-LDLIBS) $(LDLIBS) \
+ '-Wl,-(' $^ $($*.static-LDLIBS) $(LDLIBS) \
'-Wl,-)'
ifeq ($(makemode),library)
diff --git a/rumpdisk/Makefile b/rumpdisk/Makefile
index a0f6d1ac..de33c65d 100644
--- a/rumpdisk/Makefile
+++ b/rumpdisk/Makefile
@@ -26,8 +26,11 @@ ifneq (,$(wildcard ../config.make))
include ../config.make
endif
+# TODO: install .so version of rumpvfs_nofifofs so we don't have to do this!
ifeq ($(HAVE_LIBRUMP_VFSNOFIFO),yes)
-RUMPLIBS += rumpvfs_nofifofs
+RUMPSTATIC=-Wl,--whole-archive -lrumpvfs_nofifofs_pic -Wl,--no-whole-archive
+else
+RUMPSTATIC=
endif
dir := rumpdisk
@@ -37,19 +40,24 @@ SRCS = main.c block-rump.c
LCLHDRS = block-rump.h ioccom-rump.h
targets = rumpdisk rumpusbdisk
HURDLIBS = machdev ports trivfs shouldbeinlibc iohelp ihash fshelp irqhelp
-LDLIBS += -lpthread -lpciaccess -ldl $(RUMPEXTRA:%=-l%_pic) \
- -Wl,--whole-archive $(RUMPLIBS:%=-l%_pic) -Wl,--no-whole-archive
+LDLIBS += -lpthread -lpciaccess -ldl -lz
%.disk.o: %.c
$(CC) $(CFLAGS) $(CPPFLAGS) -D_RUMP_SATA -c $< -o $@
rumpdisk-OBJS = $(SRCS:.c=.disk.o)
-rumpdisk-LDLIBS += -Wl,--whole-archive $(RUMPSATA:%=-l%_pic)
-Wl,--no-whole-archive $(HURDLIBS:%=-l%)
+rumpdisk-LDLIBS += $(HURDLIBS:%=-l%) $(RUMPSTATIC) $(RUMPEXTRA:%=-l%) \
+ -Wl,--no-as-needed $(RUMPSATA:%=-l%) $(RUMPLIBS:%=-l%)
-Wl,--as-needed
+rumpdisk.static-LDLIBS += $(HURDLIBS:%=-l%) $(RUMPSTATIC)
$(RUMPEXTRA:%=-l%_pic) \
+ -Wl,--whole-archive $(RUMPSATA:%=-l%_pic) $(RUMPLIBS:%=-l%_pic)
-Wl,--no-whole-archive
rumpdisk rumpdisk.static: $(rumpdisk-OBJS)
%.usb.o: %.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
rumpusbdisk-OBJS = $(SRCS:.c=.usb.o)
-rumpusbdisk-LDLIBS += -Wl,--whole-archive $(RUMPUSB:%=-l%_pic)
-Wl,--no-whole-archive $(HURDLIBS:%=-l%)
+rumpusbdisk-LDLIBS += $(HURDLIBS:%=-l%) $(RUMPSTATIC) \
+ -Wl,--no-as-needed $(RUMPUSB:%=-l%) $(RUMPLIBS:%=-l%)
-Wl,--as-needed
+rumpusbdisk.static-LDLIBS += $(HURDLIBS:%=-l%) $(RUMPSTATIC) \
+ -Wl,--whole-archive $(RUMPUSB:%=-l%_pic) $(RUMPLIBS:%=-l%_pic)
-Wl,--no-whole-archive
rumpusbdisk rumpusbdisk.static: $(rumpusbdisk-OBJS)
include ../Makeconf
--
2.45.2