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(UNIX AND NOT APPLE)
	SET_TARGET_PROPERTIES(k3d PROPERTIES LINK_FLAGS -Wl,-E)
ENDIF()

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

SET(K3D_NGUI_BINARY ${k3d_BINARY_DIR}/${K3D_LIBDIR}/k3d/plugins/k3d-ngui.module)
SET(K3D_NUI_BINARY ${k3d_BINARY_DIR}/${K3D_LIBDIR}/k3d/plugins/k3d-nui.module)
SET(K3D_PYUI_BINARY ${k3d_BINARY_DIR}/${K3D_LIBDIR}/k3d/plugins/k3d-pyui.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")

SET(K3D_EXTRA_GDB_ARGUMENTS "" CACHE STRING "Extra arguments to pass to gdb for debugging.")
MARK_AS_ADVANCED(K3D_EXTRA_GDB_ARGUMENTS)

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

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

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

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

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

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

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

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

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

INSTALL(TARGETS k3d DESTINATION bin)

