INCLUDE(${QT_USE_FILE})

#SUBDIRS(libalgebra libClassicalCrypto libNumberTheory libAnalysis libClassicalAnalysis libStats)
add_subdirectory(libalgebra)
add_subdirectory(libClassicalCrypto)
add_subdirectory(libNumberTheory)
add_subdirectory(libAnalysis)
add_subdirectory(libClassicalAnalysis)
add_subdirectory(libStats)


ADD_DEFINITIONS(-D DEBUG -Wall -Wextra -g -O0)
#ADD_DEFINITIONS(-O3)

# the variable "cryptoolinux_SRCS" contains all .cpp files of this project
SET(cryptoolinux_SRCS
	ADFGVX.cpp
	analysisOpt.cpp
	atbash.cpp
	byteAdd.cpp
	byteXor.cpp
	CaesarRot13.cpp
	drawParam.cpp
	furtOpt.cpp
	hill.cpp
	langOpt.cpp
	main.cpp
	mainWindow.cpp
	mdichild.cpp
	playfair.cpp
	startOpt.cpp
	textOpt.cpp
	vernam.cpp
	vigenere.cpp
	Text.cpp
	Factorisation.cpp
	PrimeNumberTest.cpp
	CaesarAnalysis.cpp
)

SET(cryptoolinux_RCCS application.qrc)

# generate rules for building source files from the resources
QT4_ADD_RESOURCES(cryptoolinux_RCC_SRCS ${cryptoolinux_RCCS})

# tell cmake to create .moc files for all files in the variable cryptoolinux_SRCS
# that require such a file.
# note: this assumes that you use #include "header.moc" in your files
QT4_AUTOMOC(${cryptoolinux_SRCS})

SET(cryptoolinux_UIS
	ADFGVX.ui
	analysis_opt.ui
	atbash.ui
	byteAdd.ui
	CaesarRot13.ui
	cryptoolinux.ui
	draw_param.ui
	furt_opt.ui
	hill.ui
	lang_opt.ui
	permutation.ui
	playfair.ui
	solitaire.ui
	start_opt.ui
	text_opt.ui
	vigenere.ui
	Xor.ui
	Factorisation.ui
	PrimeNumberTest.ui
)

QT4_WRAP_UI(cryptoolinux_UIS_H ${cryptoolinux_UIS})

# Don't forget to include output directory, otherwise
# the UI file won't be wrapped!
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${QT_QTASSISTANT_INCLUDE_DIR})

if(COMMAND cmake_policy)
  cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
link_directories(${cryptoolinux_BINARY_DIR}/libalgebra ${cryptoolinux_BINARY_DIR}/libClassicalCrypto ${cryptoolinux_BINARY_DIR}/libNumberTheory ${cryptoolinux_BINARY_DIR}/libAnalysis ${cryptoolinux_BINARY_DIR}/libClassicalAnalysis ${cryptoolinux_BINARY_DIR}/libStats)

# create an executable file named "cryptoolinux" from the source files in the
# variable "cryptoolinux_SRCS".
ADD_EXECUTABLE(cryptoolinux ${cryptoolinux_SRCS} ${cryptoolinux_UIS_H} ${cryptoolinux_RCC_SRCS})

SET(math_libraries libalgebra libClassicalCrypto libAnalysis libNumberTheory libClassicalAnalysis libStats libgmp.so libgmpxx.so)

SET(dev_libraries libboost_thread.so)


# link the "cryptoolinux" target against the Qt libraries. which libraries exactly, is defined by the 
# "include(${QT_USE_FILE})" line above, which sets up this variable.
TARGET_LINK_LIBRARIES(cryptoolinux ${QT_LIBRARIES} QtAssistantClient ${math_libraries})

INSTALL(TARGETS cryptoolinux RUNTIME DESTINATION /usr/bin)
