1 ## ----------------------------------------------------------------------- 2 ## 3 ## Copyright 1998-2008 H. Peter Anvin - All Rights Reserved 4 ## Copyright 2010 Intel Corporation; author: H. Peter Anvin 5 ## 6 ## This program is free software; you can redistribute it and/or modify 7 ## it under the terms of the GNU General Public License as published by 8 ## the Free Software Foundation, Inc., 53 Temple Place Ste 330, 9 ## Boston MA 02111-1307, USA; either version 2 of the License, or 10 ## (at your option) any later version; incorporated herein by reference. 11 ## 12 ## ----------------------------------------------------------------------- 13 14 # 15 # Makefile for SYSLINUX Win32 16 # 17 # This is separated out mostly so we can have a different set of Makefile 18 # variables. 19 # 20 21 OSTYPE = $(shell uname -msr) 22 ifeq ($(findstring CYGWIN,$(OSTYPE)),CYGWIN) 23 ## Compiling on Cygwin 24 WINPREFIX := 25 WINCFLAGS := -mno-cygwin $(GCCWARN) -Os -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 26 WINLDFLAGS := -mno-cygwin -Os -s 27 else 28 ## Compiling on some variant of MinGW 29 ifeq ($(findstring MINGW32,$(OSTYPE)),MINGW32) 30 WINPREFIX := 31 else 32 WINPREFIX := $(shell $(SRC)/find-mingw32.sh gcc) 33 endif 34 WINCFLAGS := $(GCCWARN) -Wno-sign-compare -Os -fomit-frame-pointer \ 35 -D_FILE_OFFSET_BITS=64 36 WINLDFLAGS := -Os -s 37 endif 38 WINCFLAGS += -I$(SRC) -I$(SRC)/../win -I$(objdir) \ 39 -I$(SRC)/../libfat -I$(SRC)/../libinstaller \ 40 -I$(SRC)/../libinstaller/getopt 41 42 WINCC := $(WINPREFIX)gcc 43 WINAR := $(WINPREFIX)ar 44 WINRANLIB := $(WINPREFIX)ranlib 45 46 WINCC_IS_GOOD := $(shell $(WINCC) $(WINCFLAGS) $(WINLDFLAGS) \ 47 -o hello.exe $(SRC)/../win/hello.c >/dev/null 2>&1 ; echo $$?) 48 49 .SUFFIXES: .c .obj .lib .exe .i .s .S 50 51 SRCS = ../win/syslinux.c ../win/ntfssect.c 52 OBJS = $(patsubst %.c,%.obj,$(notdir $(SRCS))) 53 LIBSRC = ../libinstaller/fs.c \ 54 ../libinstaller/syslxmod.c \ 55 ../libinstaller/syslxopt.c \ 56 ../libinstaller/setadv.c \ 57 ../libinstaller/getopt/getopt_long.c \ 58 ../libinstaller/bootsect_bin.c \ 59 ../libinstaller/ldlinux_bin.c \ 60 ../libinstaller/ldlinuxc32_bin.c \ 61 ../libinstaller/mbr_bin.c \ 62 $(wildcard $(SRC)/../libfat/*.c) 63 LIBOBJS = $(patsubst %.c,%.obj,$(notdir $(LIBSRC))) 64 65 LIB = syslinux.lib 66 67 VPATH = $(SRC):$(SRC)/../win:$(SRC)/../libfat:$(SRC)/../libinstaller:$(SRC)/../libinstaller/getopt:$(OBJ)/../libinstaller 68 69 TARGETS = syslinux.exe 70 71 ifeq ($(WINCC_IS_GOOD),0) 72 all: $(TARGETS) 73 else 74 all: 75 rm -f $(TARGETS) 76 endif 77 78 tidy dist: 79 -rm -f *.o *.obj *.lib *.i *.s *.a .*.d *.tmp *_bin.c hello.exe 80 81 clean: tidy 82 83 spotless: clean 84 -rm -f *~ $(TARGETS) 85 86 installer: 87 88 $(LIB): $(LIBOBJS) 89 rm -f $@ 90 $(WINAR) cq $@ $^ 91 $(WINRANLIB) $@ 92 93 syslinux.exe: $(OBJS) $(LIB) 94 $(WINCC) $(WINLDFLAGS) -o $@ $^ 95 96 97 %.obj: %.c 98 $(WINCC) $(UMAKEDEPS) $(WINCFLAGS) -c -o $@ $< 99 %.i: %.c 100 $(WINCC) $(UMAKEDEPS) $(WINCFLAGS) -E -o $@ $< 101 %.s: %.c 102 $(WINCC) $(UMAKEDEPS) $(WINCFLAGS) -S -o $@ $< 103 104 -include .*.d 105