export SHELL = sh
PROGRAM = pylauncher
#LDFLAGS = -shared -dll
#LIB = -lm -static
#LIBS = user32.lib gdi32.lib shell32.lib
CC = i586-mingw32msvc-gcc
WINDRES = i586-mingw32msvc-windres
CFLAGS = \
	-c \
	-Os \
	-Wall \
	-m32 \
	-march=i386 \
	-D_SZ_FILE_SIZE_32

# -D_SZ_FILE_SIZE_32  - define it if you need only support for files smaller than 4 GB
# -D_LZMA_IN_CB -if defined it does not read the full archive to memory
# -D USE_WINDOWS_FUNCTIONS use windows functions instead of libc in unpack.c
# -DWINDOWS
# -c do not link
# -Os optimize for size
# -GF read-only string constants
# -Gs disable stack checking calls
# -Gr fastcall calling convention
# -MD link against MSVCRT.DLL (also required by Python)
# -W3 max warnings
# -Wl,--file-alignment,512  pass option --file-alignement 512 to the linker
#	-m32
# -march=i386

ifdef DEBUG
	DEBUGFLAG = -g
	STRIP = @echo
else
	DEBUGFLAG =
	LDFLAGS = -mwindows
	STRIP = i586-mingw32msvc-strip
endif

7Z_OBJS = \
	7zAlloc.o \
	7zBuffer.o \
	7zCrc.o \
	7zDecode.o \
	7zExtract.o \
	7zHeader.o \
	7zIn.o \
	7zItem.o \
	7zMethodID.o \
	LzmaDecode.o \
	BranchX86.o \
	BranchX86_2.o

7Z_DIR = ../7z/C

7Z_OBJS_SRC = \
	$(7Z_DIR)/Archive/7z/*.c  \
	$(7Z_DIR)/Compress/Branch/BranchX86.c \
	$(7Z_DIR)/Compress/Branch/BranchX86_2.c \
	$(7Z_DIR)/Compress/Lzma/LzmaDecode.c \
	$(7Z_DIR)/7zCrc.c

all: pylauncher.exe header.exe pyrun.exe

header.exe:$(7Z_OBJS) unpack.o deletedir.o header.o str.o resources.o
	$(CC) -o $@ $(LDFLAGS) $(LIBS) $^
	$(STRIP) $@

pyrun.exe: deletedir.o pyrun.o str.o resources.o
	$(CC) -o $@ $(LDFLAGS) $(LIBS) $^
	$(STRIP) $@

pylauncher.exe: deletedir.o pylauncher.o str.o resources.o
	$(CC) -o $@ $(LDFLAGS) $(LIBS) $^
	$(STRIP) $@

$(7Z_OBJS): $(7Z_OBJS_SRC)
	$(CC) $(DEBUGFLAG) $(CFLAGS) $^

resources.o: resources.rc
	$(WINDRES) -o $@ $^

pylauncher.o: pylauncher.c
	$(CC) $(DEBUGFLAG) $(CFLAGS) $^

pyrun.o: pyrun.c
	$(CC) $(DEBUGFLAG) $(CFLAGS) $^

header.o: header.c
	$(CC) $(DEBUGFLAG) $(CFLAGS) $^

deletedir.o: deletedir.c
	$(CC) $(DEBUGFLAG) $(CFLAGS) $^

unpack.o: unpack.c
	$(CC) $(DEBUGFLAG) $(CFLAGS) $^

str.o: str.c
	$(CC) $(DEBUGFLAG) $(CFLAGS) $^

clean:
	rm -f *.exe $(7Z_OBJS) *.d *.o
