#OPTION(K3D_INSTALL_AQSIS "Include Aqsis in the K-3D installer" OFF)
OPTION(K3D_INSTALL_BOOST "Include Boost in the K-3D installer." OFF)
#OPTION(K3D_INSTALL_CGKIT "Include cgkit in the K-3D installer" OFF)
OPTION(K3D_INSTALL_GTKMM "Include gtkmm in the K-3D installer." OFF)
#OPTION(K3D_INSTALL_PYGTK "Include PyGTK in the K-3D installer" OFF)
#OPTION(K3D_INSTALL_PYOPENGL "Include PyOpenGL in the K-3D installer" OFF)
#OPTION(K3D_INSTALL_PYTHON "Include Python in the K-3D installer" OFF)
OPTION(K3D_CREATE_PACKAGEMAKER_PACKAGE "Include an option to build a MacOSX PackageMaker package." OFF)

K3D_CHECK_INSTALLED_PYTHON_DEPENDENCY(K3D_INSTALL_CGKIT)
K3D_CHECK_INSTALLED_PYTHON_DEPENDENCY(K3D_INSTALL_PYGTK)
K3D_CHECK_INSTALLED_PYTHON_DEPENDENCY(K3D_INSTALL_PYOPENGL)

IF(K3D_INSTALL_AQSIS)
	FIND_PROGRAM(K3D_AQSIS_COMMAND aqsis.exe
		DOC "Path to an installed aqsis.exe."
		)
	MARK_AS_ADVANCED(K3D_AQSIS_COMMAND)

	IF(NOT K3D_AQSIS_COMMAND)
		MESSAGE(SEND_ERROR "Could not locate aqsis.exe.")
	ENDIF(NOT K3D_AQSIS_COMMAND)

	IF(NOT K3D_BUILD_BUNDLED_RENDERMAN_ENGINES_MODULE)
		MESSAGE(SEND_ERROR "K3D_INSTALL_AQSIS requires K3D_BUILD_BUNDLED_RENDERMAN_ENGINES_MODULE")
	ENDIF(NOT K3D_BUILD_BUNDLED_RENDERMAN_ENGINES_MODULE)

	EXECUTE_PROCESS(
		COMMAND ${K3D_AQSIS_COMMAND} --version
		OUTPUT_VARIABLE K3D_AQSIS_VERSION
		)
	IF(K3D_AQSIS_VERSION)
		STRING(REGEX REPLACE "^aqsis version ([0-9]+\\.[0-9]+\\.[0.9]+).*" "\\1" K3D_AQSIS_VERSION ${K3D_AQSIS_VERSION})
		K3D_CHECK_INSTALLED_VERSION(${K3D_AQSIS_VERSION} "Aqsis" "1.2.0")
	ELSE(K3D_AQSIS_VERSION)
		MESSAGE(SEND_ERROR "Error determining Aqsis version.")
	ENDIF(K3D_AQSIS_VERSION)

	GET_FILENAME_COMPONENT(K3D_AQSIS_PATH ${K3D_AQSIS_COMMAND} PATH)
	INSTALL(DIRECTORY ${K3D_AQSIS_PATH}/ DESTINATION bin
	    USE_SOURCE_PERMISSIONS
	    PATTERN aqsisrc EXCLUDE
		)
	# Install generic aqsisrc, omitting paths (those are set at runtime through command line options)
	INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/aqsisrc DESTINATION bin)
ENDIF(K3D_INSTALL_AQSIS)

IF(K3D_INSTALL_BOOST)
	INSTALL(FILES
		${K3D_BOOST_LIB_DIR}/libboost_regex-1_34_1.dylib
		${K3D_BOOST_LIB_DIR}/libboost_python-1_34_1.dylib
		${K3D_BOOST_LIB_DIR}/libboost_program_options-1_34_1.dylib
		DESTINATION ${K3D_LIBDIR}
		)
ENDIF(K3D_INSTALL_BOOST)

IF(K3D_INSTALL_GTKMM)
	INCLUDE(K3DFindPkgConfig)
	
	PKG_CHECK_MODULES(ATK atk)
	PKG_CHECK_MODULES(ATKMM atkmm-1.6)
	PKG_CHECK_MODULES(CAIRO cairo)
	PKG_CHECK_MODULES(CAIROMM cairomm-1.0)
	PKG_CHECK_MODULES(GDK gdk-2.0)
	PKG_CHECK_MODULES(GDKGLEXT gdkglext-1.0)
	PKG_CHECK_MODULES(GDKMM gdkmm-2.4)
	PKG_CHECK_MODULES(GTK gtk+-2.0)
	PKG_CHECK_MODULES(GTKMM gtkmm-2.4)

	K3D_CHECK_INSTALLED_VERSION(${ATK_VERSION} "atk" "1.20.0")
	K3D_CHECK_INSTALLED_VERSION(${ATKMM_VERSION} "atkmm" "2.12.0")
	K3D_CHECK_INSTALLED_VERSION(${CAIRO_VERSION} "cairo" "1.4.10")
	K3D_CHECK_INSTALLED_VERSION(${CAIROMM_VERSION} "cairomm" "1.2.4")
	K3D_CHECK_INSTALLED_VERSION(${GDK_VERSION} "gdk" "2.12.0")
	K3D_CHECK_INSTALLED_VERSION(${GDKGLEXT_VERSION} "gdkglext" "1.2.0")
	K3D_CHECK_INSTALLED_VERSION(${GDKMM_VERSION} "gdkmm" "2.12.0")
	K3D_CHECK_INSTALLED_VERSION(${GTK_VERSION} "gtk" "2.12.0")
	K3D_CHECK_INSTALLED_VERSION(${GTKMM_VERSION} "gtkmm" "2.12.0")

	# This is an ugly hack, we should be able to detect this automatically, but I'm feeling lazy ...
	SET(K3D_MACPORT_DIR "/opt/local" CACHE PATH "Root directory containing installed MacPort packages")
	MARK_AS_ADVANCED(K3D_MACPORT_DIR)

	MACRO(K3D_INSTALL_DYLIB SOURCE)
		GET_FILENAME_COMPONENT(SOURCE_PATH ${SOURCE} PATH)
		GET_FILENAME_COMPONENT(SOURCE_NAME ${SOURCE} NAME)

		EXECUTE_PROCESS(
			COMMAND readlink -n ${SOURCE}
			OUTPUT_VARIABLE TARGET_NAME
			)

#		MESSAGE("${SOURCE_PATH} ${SOURCE_NAME} ${TARGET_NAME}")

		IF(TARGET_NAME)
#			MESSAGE("Install Symlink")
			INSTALL(FILES ${SOURCE_PATH}/${TARGET_NAME} RENAME ${SOURCE_NAME} DESTINATION ${K3D_LIBDIR})
		ELSE(TARGET_NAME)
#			MESSAGE("Install File")
			INSTALL(FILES ${SOURCE} DESTINATION ${K3D_LIBDIR})
		ENDIF(TARGET_NAME)

	ENDMACRO(K3D_INSTALL_DYLIB)

	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libXrender.1.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libatk-1.0.0.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libatkmm-1.6.1.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libcairo.2.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libcairomm-1.0.1.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libexpat.1.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libfontconfig.1.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libfreetype.6.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libgdk-x11-2.0.0.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libgdk_pixbuf-2.0.0.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libgdkglext-x11-1.0.0.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libgdkmm-2.4.1.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libglib-2.0.0.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libglibmm-2.4.1.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libgmodule-2.0.0.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libgobject-2.0.0.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libgtk-x11-2.0.0.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libgtkglext-x11-1.0.0.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libgtkmm-2.4.1.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libiconv.2.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libintl.8.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libjpeg.62.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libpango-1.0.0.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libpangocairo-1.0.0.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libpangoft2-1.0.0.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libpangomm-1.4.1.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libpangox-1.0.0.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libpng12.0.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libsigc-2.0.0.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libtiff.3.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libuuid.15.dylib)
	K3D_INSTALL_DYLIB(${K3D_MACPORT_DIR}/lib/libz.1.dylib)

	INSTALL(DIRECTORY
		${K3D_MACPORT_DIR}/lib/pango
		DESTINATION ${K3D_LIBDIR}
		USE_SOURCE_PERMISSIONS
		)

	INSTALL(FILES
		${K3D_MACPORT_DIR}/etc/pango/pangorc
		${K3D_MACPORT_DIR}/etc/pango/pango.modules
		${K3D_MACPORT_DIR}/etc/pango/pangox.aliases
		DESTINATION etc/pango
		)

	INSTALL(FILES
		${K3D_MACPORT_DIR}/etc/fonts/fonts.conf
		${K3D_MACPORT_DIR}/etc/fonts/fonts.dtd
		DESTINATION etc/fonts
		)

ENDIF(K3D_INSTALL_GTKMM)

IF(K3D_INSTALL_PYTHON)
	FIND_PROGRAM(K3D_PYTHON_COMMAND python.exe
		PATHS "c:/python25"
		DOC "Path to an installed python.exe."
		)
	MARK_AS_ADVANCED(K3D_PYTHON_COMMAND)
	
	IF(NOT K3D_PYTHON_COMMAND)
		MESSAGE(SEND_ERROR "Could not locate python.exe.")
	ENDIF(NOT K3D_PYTHON_COMMAND)

	FIND_PROGRAM(K3D_PYTHON_LIBRARY python25.dll
		DOC "Path to the installed python25.dll"
		)
	MARK_AS_ADVANCED(K3D_PYTHON_LIBRARY)

	IF(NOT K3D_PYTHON_LIBRARY)
		MESSAGE(SEND_ERROR "Could not locate python25.dll.")
	ENDIF(NOT K3D_PYTHON_LIBRARY)

	EXECUTE_PROCESS(
		COMMAND ${K3D_PYTHON_COMMAND} -V
		ERROR_VARIABLE K3D_PYTHON_VERSION
		)

	IF(K3D_PYTHON_VERSION)
		STRING(REGEX REPLACE "^Python ([0-9]+\\.[0-9]+\\.[0-9]+).*" "\\1" K3D_PYTHON_VERSION ${K3D_PYTHON_VERSION})
		K3D_CHECK_INSTALLED_VERSION(${K3D_PYTHON_VERSION} "Python" "2.5.2")
	ELSE(K3D_PYTHON_VERSION)
		MESSAGE(SEND_ERROR "Error determining Python version.")
	ENDIF(K3D_PYTHON_VERSION)

	INSTALL(PROGRAMS
		${K3D_PYTHON_COMMAND}
		${K3D_PYTHON_LIBRARY}
		DESTINATION bin
		)

	GET_FILENAME_COMPONENT(K3D_PYTHON_PATH ${K3D_PYTHON_COMMAND} PATH)
	FILE(GLOB K3D_PYTHON_MODULES ${K3D_PYTHON_PATH}/Lib/*.py)
	INSTALL(PROGRAMS
		${K3D_PYTHON_MODULES}
		DESTINATION ${K3D_LIBDIR}
		)

	SET(K3D_PYTHON_SITE_PACKAGES ${K3D_PYTHON_PATH}/Lib/site-packages)

	IF(K3D_INSTALL_CGKIT)
		EXECUTE_PROCESS(
			COMMAND ${K3D_PYTHON_COMMAND} -c "import cgkit.cgkitinfo;print cgkit.cgkitinfo.version"
			OUTPUT_VARIABLE K3D_CGKIT_VERSION
			)

		IF(K3D_CGKIT_VERSION)
			STRING(REGEX REPLACE "^([0-9]+\\.[0-9]+\\.[0-9]+[^ ]*).*" "\\1" K3D_CGKIT_VERSION ${K3D_CGKIT_VERSION})
			K3D_CHECK_INSTALLED_VERSION(${K3D_CGKIT_VERSION} "cgkit" "2.0.0alpha8")
		ELSE(K3D_CGKIT_VERSION)
			MESSAGE(SEND_ERROR "Error determining cgkit version.")
		ENDIF(K3D_CGKIT_VERSION)

		INSTALL(DIRECTORY
			${K3D_PYTHON_SITE_PACKAGES}/cgkit
			DESTINATION ${K3D_LIBDIR}/site-packages
			PATTERN *.pyc EXCLUDE
			PATTERN *.pyo EXCLUDE
			)
	ENDIF(K3D_INSTALL_CGKIT)

	IF(K3D_INSTALL_PYGTK)
		EXECUTE_PROCESS(
			COMMAND ${K3D_PYTHON_COMMAND} -c "import gtk;print gtk.pygtk_version"
			OUTPUT_VARIABLE K3D_PYGTK_VERSION
			)

		IF(K3D_PYGTK_VERSION)
			STRING(REGEX REPLACE ".*([0-9]+), ([0-9]+), ([0-9]+).*" "\\1.\\2.\\3" K3D_PYGTK_VERSION ${K3D_PYGTK_VERSION})
			K3D_CHECK_INSTALLED_VERSION(${K3D_PYGTK_VERSION} "PyGTK" "2.10.6")
		ELSE(K3D_PYGTK_VERSION)
			MESSAGE(SEND_ERROR "Error determining PyGTK version.")
		ENDIF(K3D_PYGTK_VERSION)

		INSTALL(DIRECTORY
			${K3D_PYTHON_SITE_PACKAGES}/cairo
			DESTINATION ${K3D_LIBDIR}/site-packages
			PATTERN *.pyc EXCLUDE
			PATTERN *.pyo EXCLUDE
			)
		INSTALL(DIRECTORY
			${K3D_PYTHON_SITE_PACKAGES}/gtk-2.0
			DESTINATION ${K3D_LIBDIR}/site-packages
			PATTERN *.pyc EXCLUDE
			PATTERN *.pyo EXCLUDE
			)
		INSTALL(PROGRAMS
			${K3D_PYTHON_SITE_PACKAGES}/pygtk.py
			DESTINATION ${K3D_LIBDIR}/site-packages
			)
	ENDIF(K3D_INSTALL_PYGTK)

	IF(K3D_INSTALL_PYOPENGL)
		EXECUTE_PROCESS(
			COMMAND ${K3D_PYTHON_COMMAND} -c "import OpenGL.version;print OpenGL.version.__version__"
			OUTPUT_VARIABLE K3D_PYOPENGL_VERSION
			)
		IF(K3D_PYOPENGL_VERSION)
			STRING(REGEX REPLACE "^([0-9]+\\.[0-9]+\\.[0-9]+).*" "\\1" K3D_PYOPENGL_VERSION ${K3D_PYOPENGL_VERSION})
			K3D_CHECK_INSTALLED_VERSION(${K3D_PYOPENGL_VERSION} "PyOpenGL" "3.0.0")
		ELSE(K3D_PYOPENGL_VERSION)
			MESSAGE(SEND_ERROR "Error determining PyOpenGL version.")
		ENDIF(K3D_PYOPENGL_VERSION)

		INSTALL(DIRECTORY
			${K3D_PYTHON_SITE_PACKAGES}/OpenGL
			DESTINATION ${K3D_LIBDIR}/site-packages
			PATTERN *.pyc EXCLUDE
			PATTERN *.pyo EXCLUDE
			)
	ENDIF(K3D_INSTALL_PYOPENGL)

ENDIF(K3D_INSTALL_PYTHON)

ADD_SUBDIRECTORY(bundle)

IF(K3D_CREATE_PACKAGEMAKER_PACKAGE)
	ADD_SUBDIRECTORY(packagemaker)
ENDIF(K3D_CREATE_PACKAGEMAKER_PACKAGE)

