IF(DEFINED SWIG_PROGRAM_PATH OR DEFINED SWIG_SYSTEM)
	MESSAGE(STATUS "Enabling Swig Support...")
	IF(MSVC OR MINGW)
		SET(CMAKE_PROGRAM_PATH ${SWIG_PROGRAM_PATH})
	ENDIF()

	FIND_PACKAGE(SWIG REQUIRED)
	INCLUDE(${SWIG_USE_FILE})
	SET(CMAKE_SWIG_FLAGS "")
	SET_SOURCE_FILES_PROPERTIES(libtcod.i PROPERTIES CPLUSPLUS ON)

	IF(DEFINED SWIG_CSHARP)	
		MESSAGE(STATUS "Swig CSharp Support Enabled...")
		IF(MSVC)
			SET(CSHARP_LIB_NAME libtcod-net-unmanaged)
		ELSEIF(MINGW)
			SET(CSHARP_LIB_NAME tcod-net-unmanaged)
		ELSEIF(APPLE)
			SET(CSHARP_LIB_NAME tcod-net-unmanaged-mac)
		ELSEIF(UNIX)
			SET(CSHARP_LIB_NAME tcod-net-unmanaged-linux)
			SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") #Workaround for -rdynamic
			SET(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") #same
			SET(CMAKE_SKIP_RPATH ON) #Don't place hard coded rpaths'
		ENDIF()

		SET(CMAKE_SWIG_FLAGS -namespace libtcod -dllimport libtcod-net-unmanaged -DTCODLIB_API)
		SET(CMAKE_SWIG_OUTDIR ${ROOT_DIR}/swig/generated/csharp)
		SWIG_ADD_MODULE(${CSHARP_LIB_NAME} csharp libtcod.i)
		SWIG_LINK_LIBRARIES(${CSHARP_LIB_NAME} ${LIBTCOD_NAME} ${LIBTCOD_CPP_NAME} ) 

		IF(UNIX)
			SET_TARGET_PROPERTIES(${SWIG_MODULE_${CSHARP_LIB_NAME}_REAL_NAME} PROPERTIES LINK_FLAGS "-Wl,-rpath,.")
		ENDIF()
	ENDIF()

	IF(DEFINED SWIG_PYTHON)	
		FIND_PACKAGE(PythonLibs REQUIRED)
		MESSAGE(STATUS "Swig Python Support Enabled(Only Works In Release Builds)...")
		include_directories(${PYTHON_INCLUDE_PATH})

		SET(CMAKE_SWIG_FLAGS -DTCODLIB_API)
		SET(CMAKE_SWIG_OUTDIR ${ROOT_DIR}/swig/generated/python)
		SWIG_ADD_MODULE(libtcod-python python libtcod.i)
		SWIG_LINK_LIBRARIES(libtcod-python ${LIBTCOD_NAME} ${PYTHON_LIBRARIES})
	ENDIF()

	IF(DEFINED SWIG_LUA)
		IF(MINGW)
			FIND_PACKAGE(Lua51 REQUIRED)
		ELSEIF(UNIX)
			FIND_PACKAGE(Lua50 REQUIRED)
		ENDIF()
		MESSAGE(STATUS "Swig Lua Support Enabled...")
		include_directories(${LUA_INCLUDE_DIR})

		SET(CMAKE_SWIG_FLAGS -DTCODLIB_API)
		SET(CMAKE_SWIG_OUTDIR ${ROOT_DIR}/swig/generated/lua)
		SWIG_ADD_MODULE(libtcod-lua lua libtcod.i)
		SWIG_LINK_LIBRARIES(libtcod-lua ${LIBTCOD_NAME} ${LIBTCOD_CPP_NAME} ${LUA_LIBRARIES})
	ENDIF()

	IF(DEFINED SWIG_RUBY)
		IF(UNIX)
			FIND_PACKAGE(Ruby REQUIRED)
			MESSAGE(STATUS "Swig Ruby Support Enabled...")
			include_directories(${RUBY_INCLUDE_PATH})
			SET(CMAKE_SWIG_FLAGS -DTCODLIB_API)
			SET(CMAKE_SWIG_OUTDIR ${ROOT_DIR}/swig/generated/ruby)
			SWIG_ADD_MODULE(libtcod-ruby ruby libtcod.i)
			SWIG_LINK_LIBRARIES(libtcod-ruby ${LIBTCOD_NAME} ${LIBTCOD_CPP_NAME} ${RUBY_LIBRARY})
		ELSEIF(MINGW)
			#Doesn't work yet...
			#MESSAGE(STATUS "Swig Ruby Support Enabled (Manual)...")
			#include_directories(${SWIG_RUBY_HEADER_PATH})
			#include_directories(${SWIG_RUBY_HEADER_PATH}/i386-mingw32)
			#LINK_DIRECTORIES($(SWIG_RUBY_LIB_DIR))
			#SET(CMAKE_SWIG_FLAGS -DTCODLIB_API)
			#SET(CMAKE_SWIG_OUTDIR ${ROOT_DIR}/swig/generated/ruby)
			#SWIG_ADD_MODULE(libtcod-ruby ruby libtcod.i)
			#SWIG_LINK_LIBRARIES(libtcod-ruby ${LIBTCOD_NAME} ${SWIG_RUBY_LIB})
		ELSEIF(MSVC)
			#MESSAGE(STATUS "Swig Ruby Support doesn't work under MSVC...")
		ENDIF()
	ENDIF()

	IF(DEFINED SWIG_JAVA)
		FIND_PACKAGE(JNI REQUIRED)
		MESSAGE(STATUS "Swig Java Support Enabled...")
		include_directories(${JNI_INCLUDE_DIRS})
		SET(CMAKE_SWIG_OUTDIR ${ROOT_DIR}/swig/generated/java/libtcod)
		SWIG_ADD_MODULE(libtcod-java java libtcod.i)
		SWIG_LINK_LIBRARIES(libtcod-java ${JNI_LIBRARIES} ${LIBTCOD_NAME} ${LIBTCOD_CPP_NAME})
	ENDIF()
		
	IF(DEFINED SWIG_PHP)
		FIND_PACKAGE(PHP4 REQUIRED)
		MESSAGE(STATUS "Swig PHP Support Enabled...")
		include_directories(${PHP4_INCLUDE_PATH})
		SET(CMAKE_SWIG_OUTDIR ${ROOT_DIR}/swig/generated/php)
		SWIG_ADD_MODULE(libtcod-php php libtcod.i)
		SWIG_LINK_LIBRARIES(libtcod-php ${LIBTCOD_NAME} ${LIBTCOD_CPP_NAME})
	ENDIF()

ENDIF()
