Skip to content

Commit 32b25c3

Browse files
authored
Added support for Windows 64 bit MSYS2 Build (LP64)
Signed-off-by: Edison M. Castro <edisonmcastro@hotmail.com>
2 parents b227366 + 5d769ec commit 32b25c3

3 files changed

Lines changed: 15 additions & 3 deletions

File tree

arch/lkl/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ config LKL
1515
select HAS_DMA
1616
select PHYS_ADDR_T_64BIT if 64BIT
1717
select 64BIT if OUTPUT_FORMAT = "elf64-x86-64"
18+
select 64BIT if OUTPUT_FORMAT = "pe-x86-64"
1819
select HAVE_UNDERSCORE_SYMBOL_PREFIX if OUTPUT_FORMAT = "pe-i386"
1920
select 64BIT if OUTPUT_FORMAT = "elf64-x86-64-freebsd"
2021
select IP_PNP

arch/lkl/Makefile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ KBUILD_CFLAGS += -fno-builtin
44

55
ifneq (,$(filter $(OUTPUT_FORMAT),elf64-x86-64 elf64-x86-64-freebsd elf32-littlearm ))
66
KBUILD_CFLAGS += -fPIC
7-
else ifeq ($(OUTPUT_FORMAT),pe-i386)
7+
else ifneq (,$(filter $(OUTPUT_FORMAT),pe-i386 pe-x86-64 ))
8+
ifneq ($(OUTPUT_FORMAT),pe-x86-64)
89
prefix=_
10+
endif
911
# workaround for #include_next<stdarg.h> errors
1012
LINUXINCLUDE := -isystem arch/lkl/include/system $(LINUXINCLUDE)
1113
# workaround for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52991

tools/lkl/Makefile

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,17 @@ ifneq (,$(filter $(OUTPUT_FORMAT),elf64-x86-64 elf32-i386 elf64-x86-64-freebsd e
6767
CFLAGS += -DCONFIG_AUTO_LKL_VIRTIO_NET_VDE
6868
LDLIBS += $(shell pkg-config --libs vdeplug)
6969
endif
70-
else ifneq (,$(filter $(OUTPUT_FORMAT),pe-i386))
70+
else ifneq (,$(filter $(OUTPUT_FORMAT),pe-i386 pe-x86-64 ))
7171
KOPT = "KALLSYMS_EXTRA_PASS=1"
7272
LDLIBS += -lws2_32
7373
EXESUF := .exe
7474
SOSUF := .dll
7575
export CONFIG_AUTO_LKL_NT_HOST=y
7676
CFLAGS += -DCONFIG_AUTO_LKL_NT_HOST
77+
ifneq (,$(filter $(OUTPUT_FORMAT),pe-x86-64))
78+
CFLAGS += -Wl,--enable-auto-image-base -Wl,--image-base -Wl,0x10000000 -Wl,--out-implib=$(OUTPUT)liblkl.dll.a -Wl,--export-all-symbols -Wl,--enable-auto-import
79+
LDFLAGS +=-Wl,--image-base -Wl,0x10000000 -Wl,--enable-auto-image-base -Wl,--out-implib=$(OUTPUT)liblkl.dll.a -Wl,--export-all-symbols -Wl,--enable-auto-import
80+
endif
7781
else
7882
$(error Unrecognized platform: $(OUTPUT_FORMAT))
7983
endif
@@ -85,8 +89,13 @@ OUTPUT := $(CURDIR)/
8589
endif
8690
export OUTPUT
8791

92+
ifneq (,$(filter $(OUTPUT_FORMAT),pe-i386 pe-x86-64 ))
93+
ALL_PROGRAMS :=
94+
ALL_LIBRARIES := $(OUTPUT)liblkl.a $(OUTPUT)liblkl$(SOSUF)
95+
else
8896
ALL_PROGRAMS := $(OUTPUT)lklfuse$(EXESUF) $(OUTPUT)cptofs$(EXESUF) $(OUTPUT)cpfromfs$(EXESUF) $(OUTPUT)fs2tar$(EXESUF)
8997
ALL_LIBRARIES := $(OUTPUT)liblkl.a $(OUTPUT)liblkl$(SOSUF) $(OUTPUT)liblkl-hijack$(SOSUF)
98+
endif
9099

91100
static: $(OUTPUT)liblkl.a
92101
shared: $(OUTPUT)liblkl$(SOSUF)
@@ -104,7 +113,7 @@ $(OUTPUT)lklfuse$(EXESUF): LDLIBS += -lfuse
104113

105114
$(OUTPUT)fs2tar$(EXESUF): $(OUTPUT)fs2tar-in.o $(OUTPUT)liblkl.a
106115
$(OUTPUT)fs2tar$(EXESUF): LDLIBS += -larchive
107-
ifneq (,$(filter $(OUTPUT_FORMAT),elf64-x86-64-freebsd))
116+
ifneq (,$(filter $(OUTPUT_FORMAT),elf64-x86-64-freebsd pe-x86-64))
108117
$(OUTPUT)fs2tar$(EXESUF): LDLIBS += -largp
109118
endif
110119

0 commit comments

Comments
 (0)