####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
####### Any changes to this file will be overwritten by the next CMake run ####
####### The input file was PkgLibConfig.cmake.in ########

get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)

macro(set_and_check _var _file)
set(${_var} "${_file}")
  if(NOT EXISTS "${_file}")
    message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
endif()
endmacro()

macro(check_required_components _NAME)
foreach(comp ${${_NAME}_FIND_COMPONENTS})
if(NOT ${_NAME}_${comp}_FOUND)
if(${_NAME}_FIND_REQUIRED_${comp})
set(${_NAME}_FOUND FALSE)
endif()
endif()
endforeach()
endmacro()

####################################################################################
find_package(cgv COMPONENTS cgv_gui cgv_render cgv_media cgv_utils cgv_os cgv_base cgv_data cgv_type cgv_signal cgv_reflect)
find_package(FLTK2)
find_package(cgv_gl)
set(FIND_NAMES cgv FLTK2 cgv_gl)


set(cg_fltk_INCLUDE_DIR "" "")
set(cg_fltk_LIBRARIES "")
set(cg_fltk_SHARED_DEFINITIONS "")
set(cg_fltk_STATIC_DEFINITIONS "")
set(cg_fltk_COMMON_DEFINITIONS "")
set(cg_fltk_IS_MODULE 1)

# Append the found information to our local information if possible
foreach(fn ${FIND_NAMES})

	if (NOT ${fn}_FOUND)
		string(TOUPPER ${fn} fn)
	endif()

	if (NOT ${fn}_FOUND)
		string(TOLOWER ${fn} fn)
	endif()

	if (${fn}_FOUND)
		# Try to append the include directories with different names
		list(APPEND cg_fltk_INCLUDE_DIR 
			${${fn}_INCLUDE_DIR}
			${${fn}_INCLUDE_DIRS}
			${${fn}_INCLUDE_PATH}
			${${fn}_INCLUDES}
			"")

		# Try to append the library names with different names
		list(APPEND cg_fltk_LIBRARIES
			${${fn}_LIBRARIES}
			${${fn}_LIBRARY}
			"")

		# Try to append the definitions
		list(APPEND cg_fltk_SHARED_DEFINITIONS ${${fn}_SHARED_DEFINITIONS} "")
		list(APPEND cg_fltk_STATIC_DEFINITIONS ${${fn}_STATIC_DEFINITIONS} "")
		list(APPEND cg_fltk_COMMON_DEFINITIONS ${${fn}_COMMON_DEFINITIONS} "")
	endif()

endforeach()

#list(APPEND cg_fltk_INCLUDE_DIR "")
if (EXISTS "/home/hodasemi/Documents/Workspace/CGII/framework/cgv/plugins/cg_fltk")
	list(APPEND cg_fltk_INCLUDE_DIR "/home/hodasemi/Documents/Workspace/CGII/framework/cgv/plugins/cg_fltk")
	list(APPEND cg_fltk_INCLUDE_DIR "/home/hodasemi/Documents/Workspace/CGII/framework/cgv/plugins/cg_fltk/..")
else()
	list(APPEND cg_fltk_INCLUDE_DIR "${PACKAGE_PREFIX_DIR}/framework/include/plugins")
	list(APPEND cg_fltk_INCLUDE_DIR "${PACKAGE_PREFIX_DIR}/framework/include/plugins/cg_fltk")
endif()

# Remove duplicates from the include dirs
list(REMOVE_DUPLICATES cg_fltk_INCLUDE_DIR)

# For compatibility also set the cg_fltk_INCLUDE_DIR and cg_fltk_INCLUDE_PATH variable
set(cg_fltk_INCLUDE_DIRS "${cg_fltk_INCLUDE_DIR}")
set(cg_fltk_INCLUDES "${cg_fltk_INCLUDE_DIR}")
set(cg_fltk_INCLUDE_PATH "${cg_fltk_INCLUDE_DIR}")


# Make a list of all configurations 
set(CONFIGS "")
foreach(conf ${CMAKE_CONFIGURATION_TYPES})
	string(TOUPPER "${conf}" UPPER_CONF)
	list(APPEND CONFIGS "${UPPER_CONF}")
endforeach()

# On unix systems the CMAKE_CONFIGURATION_TYPES variable is not set
if (NOT CONFIGS)
	set(CONFIGS RELEASE DEBUG)
endif()

# Construct the library names
if (BUILD_SHARED_LIBS)
	set(cg_fltk_OUTPUT_NAME_RELEASE "cg_fltk")
	set(cg_fltk_OUTPUT_NAME_DEBUG "cg_fltk_d")
	if (cg_fltk_IS_MODULE)
		set(TARGET_POSTFIX "MODULE")
	else()
		set(TARGET_POSTFIX "SHARED")
	endif()
else()
	set(cg_fltk_OUTPUT_NAME_RELEASE "cg_fltk_static")
	set(cg_fltk_OUTPUT_NAME_DEBUG "cg_fltk_static_d")
	set(TARGET_POSTFIX "STATIC")
endif()



# See if we can go the easy way when our dependency is also a target to be built
if (TARGET cg_fltk)
    set(cg_fltk_LIBRARIES cg_fltk)
    set(cg_fltk_FOUND TRUE)
endif()

# See if the imported target already exists
if (TARGET cg_fltk_IMPORTED_${TARGET_POSTFIX})
    set(cg_fltk_LIBRARIES cg_fltk_IMPORTED_${TARGET_POSTFIX})
    set(cg_fltk_FOUND TRUE)
endif()

# If our variable is not set then we generate a new target
# where we collect names for every configuration
if (NOT cg_fltk_FOUND)
	set(FIND_PATHS "${PACKAGE_PREFIX_DIR}/framework/lib/unix" 
				   "${PACKAGE_PREFIX_DIR}/framework/bin/unix" 
				   "${PACKAGE_PREFIX_DIR}/build/bin/unix"
				   "${PACKAGE_PREFIX_DIR}/build/lib/unix")
	
	# Try to find libraries for all configurations
	if (cg_fltk_IS_MODULE AND BUILD_SHARED_LIBS AND WIN32)
		foreach(conf ${CONFIGS})
			find_file(cg_fltk_LIB_${conf}  ${cg_fltk_OUTPUT_NAME_${conf}}.dll PATHS ${FIND_PATHS})
		endforeach()
	else()
		foreach(conf ${CONFIGS})
			find_library(cg_fltk_LIB_${conf} ${cg_fltk_OUTPUT_NAME_${conf}} PATHS ${FIND_PATHS})
		endforeach()
	endif()
		
	# Check if all library types could be found
	set(ALL_LIBS_FOUND TRUE)
	foreach(conf ${CONFIGS})
		if (NOT cg_fltk_LIB_${conf})
			set(ALL_LIBS_FOUND FALSE)
			break()
		endif()
	endforeach()
	
	# If some libraries could not be found then substitute their name with the
	# first library name that could be found
	if (NOT ALL_LIBS_FOUND)	
		set(FIRST_FOUND_NAME FALSE)
	
		foreach(conf ${CONFIGS})
			if(cg_fltk_LIB_${conf})
				set(FIRST_FOUND_NAME ${cg_fltk_LIB_${conf}})
				break()
			endif()
		endforeach()
		
		# If no library was found then we failed
		if (NOT FIRST_FOUND_NAME)
			# FIXME: add better error handling here
			message(FATAL_ERROR "Could not find library cg_fltk")
			set(cg_fltk_FOUND FALSE)
			return()
		endif()
		
		# Set all library names that were not found
		foreach(conf ${CONFIGS})
			if(NOT cg_fltk_LIB_${conf})
				set(cg_fltk_LIB_${conf} ${FIRST_FOUND_NAME})
			endif()
		endforeach()
    endif()

    # Generate an imported target which each location for different configurations set accordingly
	add_library(cg_fltk_IMPORTED_${TARGET_POSTFIX} ${TARGET_POSTFIX} IMPORTED GLOBAL)

    foreach(conf ${CONFIGS})
	    set_target_properties(cg_fltk_IMPORTED_${TARGET_POSTFIX} PROPERTIES
		    IMPORTED_LINK_INTERFACE_LANGUAGES_${conf} "CXX"
		    IMPORTED_LINK_INTERFACE_LIBRARIES_${conf} "${cg_fltk_LIBRARIES}"
		    IMPORTED_LOCATION_${conf} "${cg_fltk_LIB_${conf}}"
		    IMPORTED_IMPLIB_${conf} "${cg_fltk_LIB_${conf}}")
    endforeach()

    # Also add definitions if no build type was specified. Set this to be the release type
    set_target_properties(cg_fltk_IMPORTED_${TARGET_POSTFIX} PROPERTIES
	    IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
	    IMPORTED_LINK_INTERFACE_LIBRARIES "${cg_fltk_LIBRARIES}"
	    IMPORTED_LOCATION "${cg_fltk_LIB_RELEASE}"
	    IMPORTED_IMPLIB "${cg_fltk_LIB_RELEASE}")

    # Finally set the libraries info to be exported
    set(cg_fltk_LIBRARIES "cg_fltk_IMPORTED_${TARGET_POSTFIX}")
    set(cg_fltk_FOUND TRUE)
endif()



# Set definitions
set(cg_fltk_NEW_SHARED_DEFINITIONS "_UNICODE;UNICODE;_USRDLL;CGV_GUI_FLTK_EXPORTS;FL_SHARED")
set(cg_fltk_NEW_STATIC_DEFINITIONS "_UNICODE;UNICODE;CG_FLTK_FORCE_STATIC;CGV_FORCE_STATIC;CGV_GUI_FLTK_FORCE_STATIC;CGV_RENDER_GL_FORCE_STATIC;CGV_FORCE_STATICUNICODE")
set(cg_fltk_NEW_COMMON_DEFINITIONS "_UNICODE;UNICODE;CG_FLTK_FORCE_STATIC;CGV_FORCE_STATIC;CGV_GUI_FLTK_FORCE_STATIC;UNICODE;_UNICODE;CGV_RENDER_GL_FORCE_STATIC;CGV_FORCE_STATICUNICODE;CGV_FORCE_STATIC")

list(APPEND cg_fltk_COMMON_DEFINITIONS "${cg_fltk_NEW_COMMON_DEFINITIONS}")
list(APPEND cg_fltk_STATIC_DEFINITIONS "${cg_fltk_COMMON_DEFINITIONS}${cg_fltk_NEW_STATIC_DEFINITIONS}")
list(REMOVE_DUPLICATES cg_fltk_COMMON_DEFINITIONS)
list(REMOVE_DUPLICATES cg_fltk_STATIC_DEFINITIONS)


if (BUILD_SHARED_LIBS)
	set(cg_fltk_DEFINITIONS "${cg_fltk_COMMON_DEFINITIONS};${cg_fltk_NEW_SHARED_DEFINITIONS}")
else()
	set(cg_fltk_DEFINITIONS "${cg_fltk_STATIC_DEFINITIONS}")
endif()