############################################################################
# CMakeLists.txt file for building ROOT graf2d/win32gdk package
# @author Pere Mato, CERN
############################################################################
ROOT_USE_PACKAGE(gui/gui)
include_directories(${FREETYPE_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/gdk/src 
					${CMAKE_CURRENT_SOURCE_DIR}/gdk/src/gdk
					${CMAKE_CURRENT_BINARY_DIR}/gdk/src/glib)

set(iconvlib  ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/iconv-1.3.lib)
set(iconvdll  ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_CFG_INTDIR}/iconv-1.3.dll)
set(iconvliba ${CMAKE_CURRENT_BINARY_DIR}/gdk/src/iconv/iconv-1.3.lib)
set(iconvdlla ${CMAKE_CURRENT_BINARY_DIR}/gdk/src/iconv/iconv-1.3.dll)

set(gliblib  ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/glib-1.3.lib)
set(glibdll  ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_CFG_INTDIR}/glib-1.3.dll)
set(glibliba ${CMAKE_CURRENT_BINARY_DIR}/gdk/src/glib/glib-1.3.lib)
set(glibdlla ${CMAKE_CURRENT_BINARY_DIR}/gdk/src/glib/glib-1.3.dll)

set(gdklib   ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/gdk-1.3.lib)
set(gdkdll   ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_CFG_INTDIR}/gdk-1.3.dll)
set(gdkliba  ${CMAKE_CURRENT_BINARY_DIR}/gdk/src/gdk/gdk-1.3.lib)
set(gdkdlla  ${CMAKE_CURRENT_BINARY_DIR}/gdk/src/gdk/gdk-1.3.dll)

if(winrtdebug)
  set(nmcxxflags "${CMAKE_CXX_FLAGS}" DEBUG=1)
else()
  set(nmcxxflags "${CMAKE_CXX_FLAGS}")
endif()

# Build iconv

add_custom_command( OUTPUT ${iconvliba} ${iconvdlla}
					COMMAND cmake -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/gdk gdk
					COMMAND echo "*** Building ${iconvliba}"
					COMMAND cmake -E chdir gdk/src/iconv 
							nmake -nologo -f makefile.msc NMCXXFLAGS=${nmcxxflags} VC_MAJOR=${VC_MAJOR}
				  )

add_custom_command( OUTPUT ${iconvlib} ${iconvdll}
					COMMAND cmake -E copy_if_different ${iconvliba} ${iconvlib}
					COMMAND cmake -E copy_if_different ${iconvdlla} ${iconvdll}
					DEPENDS ${iconvliba} ${iconvdlla}
				  )

add_custom_target(iconv DEPENDS ${iconvlib})
set_target_properties(iconv PROPERTIES FOLDER Builtins)

# Build glib

add_custom_command( OUTPUT ${glibliba} ${glibdlla}
					COMMAND echo "*** Building ${glibliba}"
					COMMAND cmake -E chdir gdk/src/glib 
							nmake -nologo -f makefile.msc NMCXXFLAGS=${nmcxxflags} VC_MAJOR=${VC_MAJOR}
					DEPENDS iconv
				  )

add_custom_command( OUTPUT ${gliblib} ${glibdll}
					COMMAND cmake -E copy_if_different ${glibliba} ${gliblib}
					COMMAND cmake -E copy_if_different ${glibdlla} ${glibdll}
					DEPENDS ${glibliba} ${glibdlla})

add_custom_target(glib DEPENDS ${gliblib})
set_target_properties(glib PROPERTIES FOLDER Builtins)

# Build gdk

add_custom_command( OUTPUT ${gdkliba}
					COMMAND echo "*** Building ${gdkliba}"
					COMMAND cmake -E chdir gdk/src/gdk/win32 
							nmake -nologo -f makefile.msc NMCXXFLAGS=${nmcxxflags} VC_MAJOR=${VC_MAJOR}
					COMMAND cmake -E chdir gdk/src/gdk 
							nmake -nologo -f makefile.msc NMCXXFLAGS=${nmcxxflags} VC_MAJOR=${VC_MAJOR}
					DEPENDS glib
				  )

add_custom_command( OUTPUT ${gdklib} ${gdkdll}
					COMMAND cmake -E copy_if_different ${gdkliba} ${gdklib}
					COMMAND cmake -E copy_if_different ${gdkdlla} ${gdkdll}
					DEPENDS ${gdkliba} )

add_custom_target(GDKLIB DEPENDS ${gdklib})
set_target_properties(GDKLIB PROPERTIES FOLDER Builtins)

#
# ROOT Dicts for the win32gdk library
#

ROOT_GENERATE_DICTIONARY(G__Win32gdk TGWin32.h TGWin32GL.h LINKDEF LinkDef.h)
ROOT_GENERATE_ROOTMAP(Win32gdk LINKDEF LinkDef.h DEPENDENCIES)

#
# The library itself
#

ROOT_LINKER_LIBRARY(Win32gdk *.cxx *.c G__Win32gdk.cxx LIBRARIES Cint Core Graf ${FREETYPE_LIBRARIES} 
					${gdklib} ${gliblib} Glu32.lib Opengl32.lib)

add_dependencies(Win32gdk GDKLIB glib)

if(builtin_freetype)
  add_dependencies(Win32gdk FREETYPE)
endif()
					
install(FILES  ${gdkdlla}
			   ${glibdlla}
			   ${iconvdlla}
			   DESTINATION ${CMAKE_INSTALL_BINDIR})

ROOT_INSTALL_HEADERS()
