diff options
author | H. Peter Anvin <hpa@linux.intel.com> | 2010-07-21 12:33:13 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2010-07-21 12:33:13 -0700 |
commit | 4ad669661e034f6069c3ce0d6b97a8f297cf33b3 (patch) | |
tree | c8d83c04f6b805cbb18c83fa1589f0ef0a45fec3 /win64 | |
parent | a6616dc0e872b3d12ab6e25c8d9d22a9977e8e28 (diff) | |
download | syslinux-4ad669661e034f6069c3ce0d6b97a8f297cf33b3.tar.gz |
win64: experimental Win64 installer (syslinux64.exe)syslinux-4.02
Experimental Win64 installer. This is necessary to be able to run on
WinPE64, since WinPE64 doesn't support running 32-bit binaries.
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'win64')
-rw-r--r-- | win64/Makefile | 92 | ||||
-rw-r--r-- | win64/README | 10 | ||||
-rwxr-xr-x | win64/find-mingw64.sh | 24 |
3 files changed, 126 insertions, 0 deletions
diff --git a/win64/Makefile b/win64/Makefile new file mode 100644 index 00000000..0bc746d5 --- /dev/null +++ b/win64/Makefile @@ -0,0 +1,92 @@ +## ----------------------------------------------------------------------- +## +## Copyright 1998-2008 H. Peter Anvin - All Rights Reserved +## Copyright 2010 Intel Corporation; author: H. Peter Anvin +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation, Inc., 53 Temple Place Ste 330, +## Boston MA 02111-1307, USA; either version 2 of the License, or +## (at your option) any later version; incorporated herein by reference. +## +## ----------------------------------------------------------------------- + +# +# Makefile for SYSLINUX Win64 +# +# This is separated out mostly so we can have a different set of Makefile +# variables. +# + +OSTYPE = $(shell uname -msr) +# Don't know how to do a native compile here... +WINPREFIX := $(shell ./find-mingw64.sh gcc) +WINCFLAGS := $(GCCWARN) -Wno-sign-compare -Os -fomit-frame-pointer \ + -D_FILE_OFFSET_BITS=64 +WINLDFLAGS := -Os -s + +WINCFLAGS += -I. -I../win -I.. -I../libfat -I../libinstaller \ + -I../libinstaller/getopt + +WINCC := $(WINPREFIX)gcc +WINAR := $(WINPREFIX)ar +WINRANLIB := $(WINPREFIX)ranlib + +WINCC_IS_GOOD := $(shell $(WINCC) $(WINCFLAGS) $(WINLDFLAGS) \ + -o hello.exe ../win/hello.c >/dev/null 2>&1 ; echo $$?) + +.SUFFIXES: .c .obj .lib .exe .i .s .S + +SRCS = ../win/syslinux.c +OBJS = $(patsubst %.c,%.obj,$(notdir $(SRCS))) +LIBSRC = ../libinstaller/fat.c \ + ../libinstaller/syslxmod.c \ + ../libinstaller/syslxopt.c \ + ../libinstaller/setadv.c \ + ../libinstaller/getopt/getopt_long.c \ + ../libinstaller/bootsect_bin.c \ + ../libinstaller/ldlinux_bin.c \ + ../libinstaller/mbr_bin.c \ + $(wildcard ../libfat/*.c) +LIBOBJS = $(patsubst %.c,%.obj,$(notdir $(LIBSRC))) + +LIB = syslinux.lib + +VPATH = .:../win:../libfat:../libinstaller:../libinstaller/getopt + +TARGETS = syslinux64.exe + +ifeq ($(WINCC_IS_GOOD),0) +all: $(TARGETS) +else +all: + rm -f $(TARGETS) +endif + +tidy dist: + -rm -f *.o *.obj *.lib *.i *.s *.a .*.d *.tmp *_bin.c hello.exe + +clean: tidy + +spotless: clean + -rm -f *~ $(TARGETS) + +installer: + +$(LIB): $(LIBOBJS) + rm -f $@ + $(WINAR) cq $@ $^ + $(WINRANLIB) $@ + +syslinux64.exe: $(OBJS) $(LIB) + $(WINCC) $(WINLDFLAGS) -o $@ $^ + + +%.obj: %.c + $(WINCC) $(UMAKEDEPS) $(WINCFLAGS) -c -o $@ $< +%.i: %.c + $(WINCC) $(UMAKEDEPS) $(WINCFLAGS) -E -o $@ $< +%.s: %.c + $(WINCC) $(UMAKEDEPS) $(WINCFLAGS) -S -o $@ $< + +-include .*.d *.tmp diff --git a/win64/README b/win64/README new file mode 100644 index 00000000..05b41607 --- /dev/null +++ b/win64/README @@ -0,0 +1,10 @@ +Building the Win64 installer requires the MinGW-W64 compiler, +available at: + + http://mingw-w64.sourceforge.net/ + +For prepackaged versions of the MinGW-W64 cross-compiler for the +Fedora Linux distribution (and possibly other RPM-based +distributions), see: + + http://lists.fedoraproject.org/pipermail/mingw/2010-May/002589.html diff --git a/win64/find-mingw64.sh b/win64/find-mingw64.sh new file mode 100755 index 00000000..6b620c87 --- /dev/null +++ b/win64/find-mingw64.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +cc="$1" + +for prefix in \ + mingw64- \ + x86_64-pc-mingw64- \ + x86_64-pc-mingw64msvc- \ + x86_64-pc-mingw32- \ + x86_64-pc-mingw32msvc- \ + x86_64-mingw64- \ + x86_64-mingw64msvc- \ + x86_64-mingw32- \ + x86_64-mingw32msvc- \ + ; do + if "${prefix}${cc}" -v > /dev/null 2>&1; then + echo "$prefix" + exit 0 + fi +done + +# No prefix, no idea what to do now... +echo missing- +exit 1 |