#
# Makefile for NetSurf Windows target
#
# This file is part of NetSurf 

LDFLAGS += -L${GCCSDK_INSTALL_ENV}/lib 
CFLAGS += -I${GCCSDK_INSTALL_ENV}/include/

NETSURF_FEATURE_NSSVG_CFLAGS := -DWITH_NS_SVG
NETSURF_FEATURE_ROSPRITE_CFLAGS := -DWITH_NSSPRITE
NETSURF_FEATURE_BMP_CFLAGS := -DWITH_BMP
NETSURF_FEATURE_GIF_CFLAGS := -DWITH_GIF
NETSURF_FEATURE_PNG_CFLAGS := -DWITH_PNG

$(eval $(call feature_enabled,BMP,-DWITH_BMP,-lnsbmp,BMP (libnsbmp)))
$(eval $(call feature_enabled,GIF,-DWITH_GIF,-lnsgif,GIF (libnsgif)))
$(eval $(call feature_enabled,PNG,-DWITH_PNG,-lpng,PNG (libpng)  ))
$(eval $(call feature_enabled,NSSVG,-DWITH_NS_SVG,-lsvgtiny,SVG (libsvgtiny)))
$(eval $(call feature_enabled,MNG,,-llcms -ljpeg,PNG/JNG/MNG (libmng)))

ifneq ($(PKG_CONFIG),)
  $(eval $(call pkg_config_find_and_add,zlib,ZLib))
  $(eval $(call pkg_config_find_and_add,libcurl,Curl))
  $(eval $(call pkg_config_find_and_add,libcares,Cares))
  $(eval $(call pkg_config_find_and_add,libwapcaplet,Wapcaplet))
  $(eval $(call pkg_config_find_and_add,libparserutils,Parserutils))
  $(eval $(call pkg_config_find_and_add,libhubbub,Hubbub))
  $(eval $(call pkg_config_find_and_add,libdom,DOM))
  $(eval $(call pkg_config_find_and_add,libcss,CSS))
else
  LDFLAGS += -lhubbub -lcss -lparserutils -lwapcaplet -lcurl -lz
endif

LDFLAGS += -lssl -lcrypto -lregex -liconv \
	     -lgdi32 -lcomctl32 -lws2_32 -lmsimg32 -mwindows

CFLAGS += -U__STRICT_ANSI__ -mwin32
# only windows versions after XP are supported
CFLAGS += '-DWINVER=0x0501'
CFLAGS += '-D_WIN32_WINNT=0x0501'
CFLAGS += '-D_WIN32_WINDOWS=0x0501'
CFLAGS += '-D_WIN32_IE=0x0501'

#installed resource path
CFLAGS += '-DNETSURF_WINDOWS_RESPATH="$(NETSURF_WINDOWS_RESPATH)"'

WSCFLAGS := -std=c99 $(WARNFLAGS) -DCURL_STATICLIB -DCARES_STATICLIB -g

CFLAGS += $(WSCFLAGS)
LDFLAGS += $(WSCFLAGS)

# ----------------------------------------------------------------------------
# built-in resource setup
# ----------------------------------------------------------------------------

$(OBJROOT)/windows_resource.o: windows/res/resource.rc
	$(VQ)echo " WINDRES: compiling windows resources"
	${Q}$(WINDRES) $< -O coff -o $@

S_RESOURCES := windows_resource.o

# ----------------------------------------------------------------------------
# Source file setup
# ----------------------------------------------------------------------------

# S_WINDOWS are sources purely for the windows build
S_WINDOWS := main.c window.c gui.c drawable.c misc.c plot.c findfile.c	\
	  font.c bitmap.c about.c prefs.c download.c filetype.c		\
	  localhistory.c login.c schedule.c thumbnail.c tree.c		\
	  windbg.c system_colour.c
S_WINDOWS := $(addprefix windows/,$(S_WINDOWS)) 

# This is the final source build list
# Note this is deliberately *not* expanded here as common and image
#   are not yet available
SOURCES = $(S_COMMON) $(S_IMAGE) $(S_BROWSER) $(S_WINDOWS) $(S_RESOURCES)
EXETARGET := NetSurf.exe

# ----------------------------------------------------------------------------
# Install target
# ----------------------------------------------------------------------------

install-windows:

# ----------------------------------------------------------------------------
# Package target
# ----------------------------------------------------------------------------

package-windows: netsurf-installer.exe

WIN_RES_OBJ := installer.nsi NetSurf.ico netsurf.png welcome.html default.css
WIN_RES_INS_OBJ := $(addprefix windows/res/,$(WIN_RES_OBJ)) $(OBJROOT)/messages

$(OBJROOT)/messages: resources/FatMessages
	$(PERL) utils/split-messages.pl en all < resources/FatMessages > $@

netsurf-installer.exe: $(EXETARGET) $(WIN_RES_INS_OBJ)
	makensis -V4 -NOCD windows/res/installer.nsi 
