1# - A smarter replacement for list(REMOVE_DUPLICATES) for library lists
2#
3#  create_imported_target(<libname> [SHARED|STATIC|MODULE] [<library dependency>...]) - where
4#  ${libname}_LIBRARIES is set to this library's paths.
5#
6# Removes duplicates from the list then sorts while preserving "optimized",
7# "debug", and "general" labeling
8#
9# Requires CMake 2.6 or newer (uses the 'function' command)
10#
11# Original Author:
12# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
13# http://academic.cleardefinition.com
14# Iowa State University HCI Graduate Program/VRAC
15#
16# Copyright Iowa State University 2009-2010.
17# Distributed under the Boost Software License, Version 1.0.
18# (See accompanying file LICENSE_1_0.txt or copy at
19# http://www.boost.org/LICENSE_1_0.txt)
20
21if(__create_imported_target)
22	return()
23endif()
24set(__create_imported_target YES)
25
26function(create_imported_target _libname)
27	if(ARGN)
28		list(FIND ARGN SHARED _target_shared)
29		list(FIND ARGN STATIC _target_static)
30		list(FIND ARGN MODULE _target_module)
31
32		if(${_target_shared} GREATER -1)
33			set(_target_type SHARED)
34		elseif(${_target_static} GREATER -1)
35			set(_target_type STATIC)
36		elseif(${_target_module} GREATER -1)
37			set(_target_type MODULE)
38		else()
39			set(_target_type UNKNOWN)
40		endif()
41
42		set(_deps ${ARGN})
43		list(REMOVE_ITEM _deps SHARED STATIC MODULE UNKNOWN)
44	else()
45		set(_target_type UNKNOWN)
46		set(_deps)
47	endif()
48
49	if(${_libname}_LIBRARIES AND NOT TARGET ${_libname}_imported)
50		add_library(${_libname}_imported ${_target_type} IMPORTED)
51		#message(STATUS "Library ${_libname}: lib ${${_libname}_LIBRARIES}")
52		#message(STATUS "Deps: ${_deps}")
53		set_target_properties(${_libname}_imported
54			PROPERTIES
55			IMPORTED_LOCATION
56			"${${_libname}_LIBRARIES}"
57			IMPORTED_LINK_INTERFACE_LIBRARIES
58			"${_deps}")
59	endif()
60
61	if(TARGET ${_libname}_imported)
62		set(${_libname}_LIBRARIES ${_libname}_imported PARENT_SCOPE)
63	endif()
64endfunction()
65