We have begun using kvm-unit-tests to test Bhyve under illumos. We started by cross-compiling the tests on Linux and transfering the binary artifacts to illumos machines, but it proved more convenient to build them directly on illumos. This change modifies the build infrastructure to allow building on illumos; I have also tested it on Linux. The required changes were pretty minimal: the most invasive was switching from using the C compiler as a linker driver to simply invoking the linker directly in two places. This allows us to easily use gold instead of the Solaris linker. Signed-off-by: Dan Cross <cross@xxxxxxxxxxxxxxxxx> --- configure | 5 +++-- x86/Makefile.common | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/configure b/configure index 86c3095..7193811 100755 --- a/configure +++ b/configure @@ -15,6 +15,7 @@ objdump=objdump ar=ar addr2line=addr2line arch=$(uname -m | sed -e 's/i.86/i386/;s/arm64/aarch64/;s/arm.*/arm/;s/ppc64.*/ppc64/') +os=$(uname -s) host=$arch cross_prefix= endian="" @@ -317,9 +318,9 @@ EOF rm -f lib-test.{o,S} fi -# require enhanced getopt +# require enhanced getopt everywhere except illumos getopt -T > /dev/null -if [ $? -ne 4 ]; then +if [ $? -ne 4 ] && [ "$os" != "SunOS" ]; then echo "Enhanced getopt is not available, add it to your PATH?" exit 1 fi diff --git a/x86/Makefile.common b/x86/Makefile.common index b903988..0a0f7b9 100644 --- a/x86/Makefile.common +++ b/x86/Makefile.common @@ -62,7 +62,7 @@ else .PRECIOUS: %.elf %.o %.elf: %.o $(FLATLIBS) $(SRCDIR)/x86/flat.lds $(cstart.o) - $(CC) $(CFLAGS) -nostdlib -o $@ -Wl,-T,$(SRCDIR)/x86/flat.lds \ + $(LD) -T $(SRCDIR)/x86/flat.lds -nostdlib -o $@ \ $(filter %.o, $^) $(FLATLIBS) @chmod a-x $@ @@ -98,8 +98,8 @@ test_cases: $(tests-common) $(tests) $(TEST_DIR)/%.o: CFLAGS += -std=gnu99 -ffreestanding -I $(SRCDIR)/lib -I $(SRCDIR)/lib/x86 -I lib $(TEST_DIR)/realmode.elf: $(TEST_DIR)/realmode.o - $(CC) -m32 -nostdlib -o $@ -Wl,-m,elf_i386 \ - -Wl,-T,$(SRCDIR)/$(TEST_DIR)/realmode.lds $^ + $(LD) -m elf_i386 -nostdlib -o $@ \ + -T $(SRCDIR)/$(TEST_DIR)/realmode.lds $^ $(TEST_DIR)/realmode.o: bits = $(if $(call cc-option,-m16,""),16,32) -- 2.36.1