#
#


!include <$(PLATFORM_SDK)/include/win32.mak>

# define the compiler and linker for all the platforms
CC32="$(VC_2005)\Bin\cl.exe"
L32="$(VC_2005)\Bin\link.exe"
MT32="$(PLATFORM_SDK)\Bin\mt.exe"
RC32="$(VC_2005)\Bin\rc.exe"

BUILD_DIR32=.\build\32bit
OUTPUT_FILE32=.\dist\nlw.exe
MANIFEST_FILE32=.\resources\nlw.exe.manifest
#Alternative manifest file - read more in resources\res.rc
#MANIFEST_FILE32=.\resources\nlw-alt.exe.manifest

SOURCE_FILES=\
	.\src\ExtractUtils.c \
	.\src\FileUtils.c \
	.\src\JavaUtils.c \
	.\src\Launcher.c \
	.\src\Main.c \
	.\src\ProcessUtils.c \
	.\src\RegistryUtils.c \
	.\src\StringUtils.c \
	.\src\SystemUtils.c


CC32_OPTS=/O1 /Os \
	/I "$(VC_2005)\include" \
	/D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_CRT_SECURE_NO_DEPRECATE" \
	/FD /EHsc /GS- \
	/Fo"$(BUILD_DIR32)\\"  /Fd"$(BUILD_DIR32)\vc80.pdb" \
	/W3 /nologo /c /Wp64 /TC /errorReport:prompt

LINKING_LIBRARIES=\
	user32.lib\
	gdi32.lib \
	comdlg32.lib \
	comctl32.lib \
	advapi32.lib\
	shell32.lib \
	ole32.lib \
	oleaut32.lib \
	userenv.lib \
	kernel32.lib \

L32_OPTS=\
	/OUT:$(OUTPUT_FILE32) \
	/INCREMENTAL:NO \
	/LIBPATH:"$(PLATFORM_SDK)\Lib" \
	/MANIFEST \
	/MANIFESTFILE:"$(BUILD_DIR32)\nlw.exe.intermediate.manifest" \
	/NODEFAULTLIB \
	/SUBSYSTEM:WINDOWS \
	/OPT:REF /OPT:ICF \
	/MACHINE:X86 \
	/ERRORREPORT:PROMPT \
        /ENTRY:MyMain \
	$(LINKING_LIBRARIES)

	
RC32_OPTS=\
	/I ".\resources" /fo $(BUILD_DIR32)\resources.obj
	

all: init build-32

clean:
  

init:
  - md $(BUILD_DIR32)
  - md .\dist

  del /Q /S $(BUILD_DIR32)
  del /Q  $(OUTPUT_FILE32)  

build-32: 
  Set CPU=i386
  Set Lib=%VC_2005%\Lib;%PLATFORM_SDK%\Lib;%Lib%
  Set Include=%PLATFORM_SDK%\Include;%Include%
  Set Path=%PLATFORM_SDK%\Bin;%PLATFORM_SDK%\Bin\WinNT;%VC_2005_PATH%;%path%
  Set APPVER=5.01
  Set TARGETOS=WINNT
  
  $(CC32) $(CC32_OPTS) $(SOURCE_FILES)
  $(RC32) $(RC32_OPTS) resources/res.rc
  $(L32) $(L32_OPTS) $(BUILD_DIR32)\ExtractUtils.obj $(BUILD_DIR32)\FileUtils.obj $(BUILD_DIR32)\JavaUtils.obj $(BUILD_DIR32)\Launcher.obj $(BUILD_DIR32)\Main.obj $(BUILD_DIR32)\ProcessUtils.obj $(BUILD_DIR32)\RegistryUtils.obj $(BUILD_DIR32)\StringUtils.obj $(BUILD_DIR32)\SystemUtils.obj $(BUILD_DIR32)\resources.obj
  $(MT32)  /outputresource:"$(OUTPUT_FILE32);#1" -manifest $(MANIFEST_FILE32) $(BUILD_DIR32)\nlw.exe.intermediate.manifest
