cmake_minimum_required(VERSION 2.8)
project(jasmine)
find_package(Qt4 4.5 REQUIRED QtCore QtGui QtNetwork)
find_package(OpenMP)
add_definitions(${QT_DEFINITIONS})
include_directories(${CMAKE_CURRENT_BINARY_DIR} ${QT_INCLUDE_DIR})
include(${QT_USE_FILE})
if(CMAKE_BUILD_TYPE STREQUAL Debug)
	message(STATUS "Debugging mode is being enabled. This is not recommended for normal use.")
	add_definitions(-DDEBUG)
	set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wall)
endif(CMAKE_BUILD_TYPE STREQUAL Debug)
#No mocs
set(main main.cxx settings.cxx)
set(validator
	validator/ipaddressvalidator.cxx
	)
set(ported_rmd6
	ported_rmd6/basis.cxx
	ported_rmd6/context.cxx
	ported_rmd6/rmd6.cxx
	ported_rmd6/rmd6_context.cxx
	)
set(structures
	structures/header.cxx
	settings.cxx
	)

#Mocs
set(network_h
	network/tcpnetwork.h
)
set(ui_h
	ui/about.h
	ui/editdelegate.h
	ui/jasmine_mainwindow.h
	ui/memberlist.h
	ui/settingdialog.h
	ui/rtfeditor.h
)

#Ui files
set(ui
	ui/uifiles/about.ui
	ui/uifiles/jasmine_main.ui
	ui/uifiles/settings.ui
	)

#The implementation files
set(network_src
	network/tcpnetwork.cxx
)
set(ui_src
	ui/about.cxx
	ui/editdelegate.cxx
	ui/jasmine_mainwindow.cxx
	ui/memberlist.cxx
	ui/settingdialog.cxx
	ui/rtfeditor.cxx
)

#resource files
set(res
	res/main.res
	)

qt4_wrap_cpp(network_moc ${network_h})

qt4_wrap_cpp(ui_moc ${ui_h})
qt4_wrap_ui(ui_moc ${ui})
qt4_add_resources(res_moc ${res})
if(WIN32)
	if(OPENMP_FOUND)
		add_executable(jasmine WIN32
			${main} ${ui_moc} ${ui_src} ${network_moc}
			${network_src} ${structures} ${res_moc}
			${validator} ${ported_rmd6})
		set_property(TARGET jasmine PROPERTY COMPLILE_FLAGS ${OpenMP_CXX_FLAGS} APPEND)
		target_link_libraries(jasmine gomp ${QT_LIBRARIES})
	else(OPENMP_FOUND)
		add_executable(jasmine WIN32
			${main} ${ui_moc} ${ui_src} ${network_moc}
			${network_src} ${structures} ${res_moc}
			${validator} ${ported_rmd6})
		target_link_libraries(jasmine ${QT_LIBRARIES})
	endif(OPENMP_FOUND)
else(WIN32)
	add_library(qripemd160 SHARED ${ported_rmd6})
	add_library(validator SHARED ${validator})
	add_library(resource SHARED ${res_moc})
	add_library(structures SHARED ${structures})

	add_library(network SHARED ${network_moc} ${network_src})
	add_library(ui SHARED ${ui_moc} ${ui_src})

	add_executable(jasmine ${main})

	target_link_libraries(qripemd160 ${QT_LIBRARIES})
	target_link_libraries(validator ${QT_LIBRARIES})
	target_link_libraries(resource ${QT_LIBRARIES})
	target_link_libraries(structures ${QT_LIBRARIES})

	target_link_libraries(structures qripemd160 ${QT_LIBRARIES})
	target_link_libraries(network structures validator ${QT_LIBRARIES})
	target_link_libraries(ui resource network ${QT_LIBRARIES})

	target_link_libraries(jasmine ui ${QT_LIBRARIES})
	if(OPENMP_FOUND)
		set_property(TARGET ui PROPERTY COMPILE_FLAGS ${OpenMP_CXX_FLAGS} APPEND)
		#set_property(TARGET network PROPERTY COMPLE_FLAGS ${OpenMP_CXX_FLAGS} APPEND)
		target_link_libraries(ui gomp)
	endif(OPENMP_FOUND)
endif(WIN32)
