PROJECT(application)

INCLUDE_DIRECTORIES(${k3d_SOURCE_DIR})
INCLUDE_DIRECTORIES(${k3dsdk_BINARY_DIR})
INCLUDE_DIRECTORIES(${K3D_BOOST_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${K3D_GLIBMM_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${K3D_SIGC_INCLUDE_DIRS})

LINK_DIRECTORIES(${K3D_BOOST_LIB_DIRS})
LINK_DIRECTORIES(${K3D_SIGC_LIB_DIRS})

SET(SOURCES k3d_main.cpp)

IF(WIN32 AND MSVC)
	SET(SOURCES ${SOURCES} winmain.cpp)
ELSE(WIN32 AND MSVC)
	SET(SOURCES ${SOURCES} main.cpp)
ENDIF(WIN32 AND MSVC)

IF(WIN32)
	IF(MINGW)
		ADD_CUSTOM_COMMAND(
			OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/icon.o
			COMMAND
				windres.exe
				-I${CMAKE_CURRENT_SOURCE_DIR}
				-i${CMAKE_CURRENT_SOURCE_DIR}/icon.rc
				-o ${CMAKE_CURRENT_BINARY_DIR}/icon.o
			)

		SET(SOURCES ${SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/icon.o)
	ELSE(MINGW)
		SET(SOURCES ${SOURCES} icon.rc)
	ENDIF(MINGW)
ENDIF(WIN32)

ADD_EXECUTABLE(k3d WIN32 ${SOURCES})
TARGET_LINK_LIBRARIES(k3d k3dsdk)
TARGET_LINK_LIBRARIES(k3d ${K3D_BOOST_PROGRAM_OPTIONS_LIBS})

IF(K3D_BUILD_NLS)
	INCLUDE_DIRECTORIES(${K3D_INTL_INCLUDE_DIRS})
	TARGET_LINK_LIBRARIES(k3d ${K3D_INTL_LIBS})
ENDIF(K3D_BUILD_NLS)

SET(K3D_NGUI_BINARY ${k3d_BINARY_DIR}/${K3D_LIBDIR}/k3d/uiplugins/k3d-ngui.module)
SET(K3D_NUI_BINARY ${k3d_BINARY_DIR}/${K3D_LIBDIR}/k3d/uiplugins/k3d-nui.module)
SET(K3D_PYUI_BINARY ${k3d_BINARY_DIR}/${K3D_LIBDIR}/k3d/uiplugins/k3d-pyui.module)
SET(K3D_QTUI_BINARY ${k3d_BINARY_DIR}/${K3D_LIBDIR}/k3d/uiplugins/k3d-qtui.module)

SET(K3D_DEFAULT_ARGUMENTS "")
LIST(APPEND K3D_DEFAULT_ARGUMENTS "--color")
LIST(APPEND K3D_DEFAULT_ARGUMENTS "--log-level=debug")
LIST(APPEND K3D_DEFAULT_ARGUMENTS "--plugins=${k3d_BINARY_DIR}/${K3D_LIBDIR}/k3d/plugins")
LIST(APPEND K3D_DEFAULT_ARGUMENTS "--share=${k3d_SOURCE_DIR}/share")
LIST(APPEND K3D_DEFAULT_ARGUMENTS "--add-path=${k3d_BINARY_DIR}/bin")
LIST(APPEND K3D_DEFAULT_ARGUMENTS "--locale=${k3d_BINARY_DIR}/po")

IF(K3D_BUILD_NGUI_MODULE)
	ADD_CUSTOM_TARGET(run
		${k3d_BINARY_DIR}/bin/k3d
		${K3D_DEFAULT_ARGUMENTS}
		--ui=${K3D_NGUI_BINARY}
		)

	ADD_CUSTOM_TARGET(run-debug
		gdb --args
		${k3d_BINARY_DIR}/bin/k3d
		${K3D_DEFAULT_ARGUMENTS}
		--ui=${K3D_NGUI_BINARY}
		)

	ADD_CUSTOM_TARGET(run-debug-core gdb ${k3d_BINARY_DIR}/bin/k3d core)

	ADD_CUSTOM_TARGET(run-valgrind
		valgrind -v
		${k3d_BINARY_DIR}/bin/k3d
		${K3D_DEFAULT_ARGUMENTS}
		--ui=${K3D_NGUI_BINARY}
		)

	ADD_CUSTOM_TARGET(run-strace
		strace
		${k3d_BINARY_DIR}/bin/k3d
		${K3D_DEFAULT_ARGUMENTS}
		--ui=${K3D_NGUI_BINARY}
		)
ENDIF(K3D_BUILD_NGUI_MODULE)

ADD_CUSTOM_TARGET(run-nui
	${k3d_BINARY_DIR}/bin/k3d
	${K3D_DEFAULT_ARGUMENTS}
	--ui=${K3D_NUI_BINARY}
	)

IF(K3D_BUILD_PYUI_MODULE)
	ADD_CUSTOM_TARGET(run-pyui
		${k3d_BINARY_DIR}/bin/k3d
		${K3D_DEFAULT_ARGUMENTS}
		--ui=${K3D_PYUI_BINARY}
		)

	ADD_CUSTOM_TARGET(run-debug-pyui
		gdb --args
		${k3d_BINARY_DIR}/bin/k3d
		${K3D_DEFAULT_ARGUMENTS}
		--ui=${K3D_PYUI_BINARY}
		)
ENDIF(K3D_BUILD_PYUI_MODULE)

IF(K3D_BUILD_QTUI_MODULE)
	ADD_CUSTOM_TARGET(run-qtui
		${k3d_BINARY_DIR}/bin/k3d
		${K3D_DEFAULT_ARGUMENTS}
		--ui=${K3D_QTUI_BINARY}
		)

	ADD_CUSTOM_TARGET(run-debug-qtui
		gdb --args
		${k3d_BINARY_DIR}/bin/k3d
		${K3D_DEFAULT_ARGUMENTS}
		--ui=${K3D_QTUI_BINARY}
		)
ENDIF(K3D_BUILD_QTUI_MODULE)

INSTALL(TARGETS k3d DESTINATION bin)

