set(H_LIST
	config.h
	Core.h
	Defs.h
	Mt.h
	Global.h
	HeapImp.h
	String.h
	AString.hpp
	CharSet.i
	CharSet.h
	Kernel32W.dli
	Mpr32W.dli
	Path.h
	App.h
	Stream.h
	Profile.h
	Diag.h
	Util.h
	LocalProcess.h
	Algo.h
	Topt.h
	Vcont.h
	BiCont.h
	Vcont.hpp
	Index.h
	Map.h
	Index.hpp
	Tuple.h
	Other.h
	Cbgen.h
	Callback0.h
	Callback1.h
	Callback2.h
	Callback3.h
	Callback4.h
	Callback.h
	TimeDate.h
	Value.h
	Complex.h
	Format.h
	Convert.h
	Color.h
	Gtypes.h
	i18n.h
	Core.t
	t.h
	Lang.h
	lcid.txt
	Parser.h
	XML.h
	Xmlize.h
	JSON.h
	Uuid.h
	Ptr.h
	z.h
	Topic.h
	topic_group.h
	CoWork.h
	Hash.h
	dli.h
	dli_header.h
	dli_source.h
	Win32Util.h
	sub.upt
	core.upt
	ignorelist
	Copying
)

set(SRC_LIST
	Cpu.cpp
	Mt.cpp
	OL_Set.cpp
	heaputil.cpp
	sheap.cpp
	lheap.cpp
	heap.cpp
	heapdbg.cpp
	String.cpp
	WString.cpp
	StrUtil.cpp
	CharSet.cpp
	Bom.cpp
	Path.cpp
	NetNode.cpp
	App.cpp
	Stream.cpp
	BlockStream.cpp
	Log.cpp
	Debug.cpp
	Util.cpp
	mathutil.cpp
	Random.cpp
	LocalProcess.cpp
	Vcont.cpp
	Hash.cpp
	Callback.cpp
	TimeDate.cpp
	Value.cpp
	Format.cpp
	Convert.cpp
	Color.cpp
	Gtypes.cpp
	t.cpp
	Lang.cpp
	LangInfo.cpp
	parser.cpp
	XML.cpp
	Xmlize.cpp
	JSON.cpp
	Uuid.cpp
	Ptr.cpp
	z.cpp
	Topic.cpp
	CoWork.cpp
	MD5.cpp
	SHA1.cpp
	Dli.cpp
	Win32Util.cpp
)

set_source_files_properties(${H_LIST} PROPERTIES HEADER_FILE_ONLY ON)

add_init_file(init INIT_FILE)
add_library(Core ${INIT_FILE} ${SRC_LIST} ${H_LIST})

#uses(WIN32) plugin\z;
if(WIN32)
	set(USES_LIST plugin_z)
endif()

#library(MSC !MSC8ARM) "kernel32 user32";
if(MSVC)
	list(APPEND LINK_LIST kernel32 user32)
endif()

#library(WIN32 !GUI !GNU !GCC) "ole32 oleaut32 oldnames";
if(WIN32 AND NOT CMAKE_COMPILER_IS_GNUCXX) #TODO: !GUI !GNU
	list(APPEND LINK_LIST ole32 oleaut32 oldnames)
endif()

#library(LINUX) "pthread dl";
if(CMAKE_SYSTEM MATCHES Linux)
	list(APPEND LINK_LIST pthread dl)
endif()

#library(BSD) pthread;
if(CMAKE_SYSTEM MATCHES BSD)
	list(APPEND LINK_LIST pthread)
endif()

#library(WIN32 !MSC8ARM) "advapi32 shell32 winmm mpr";
if(WIN32)
	list(APPEND LINK_LIST advapi32 shell32 winmm mpr)
endif()

#library(SOLARIS) "posix4 dl";
if(CMAKE_SYSTEM MATCHES Solaris)
	list(APPEND LINK_LIST posix4 dl)
endif()

#library(WIN32 GCC) "ole32 oleaut32 uuid";
if(WIN32 AND CMAKE_COMPILER_IS_GNUCXX)
	list(APPEND LINK_LIST ole32 oleaut32 uuid)
endif()

#library(MSC8ARM WIN32) "coredll.lib corelibc.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib ccrtrtti.lib";

#library(!WIN32) z;
if(NOT WIN32)
	list(APPEND LINK_LIST z)
endif()

#link(SOLARIS) "-Wl,-R -Wl,/usr/local/lib";
if(CMAKE_SYSTEM MATCHES Solaris)
	set_target_properties(Core PROPERTIES LINK_FLAGS "-Wl,-R -Wl,/usr/local/lib")
endif()

if(DEFINED USES_LIST)
	add_dependencies(Core ${USES_LIST})
endif()

if(DEFINED USES_LIST OR DEFINED LINK_LIST)
	target_link_libraries(Core ${USES_LIST} ${LINK_LIST})
endif()
