cmake_minimum_required(VERSION 3.5.0)

project(colorcode VERSION 0.8.7 LANGUAGES CXX)

if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE Release)
endif()

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})

find_package(Qt5 COMPONENTS Core REQUIRED)
find_package(Qt5 COMPONENTS Gui REQUIRED)
find_package(Qt5 COMPONENTS Widgets REQUIRED)
find_package(Qt5 COMPONENTS LinguistTools REQUIRED)

set(QMDIR "${CMAKE_CURRENT_BINARY_DIR}/.qm")
file(MAKE_DIRECTORY ${QMDIR})

set(TS_FILES
    trans_de.ts
    trans_en.ts
    trans_cs.ts
    trans_fr.ts
    trans_hu.ts
    trans_es.ts
)

set_source_files_properties(${TS_FILES} PROPERTIES OUTPUT_LOCATION ${QMDIR})
qt5_add_translation(QMFILES ${TS_FILES})

set(QMRESFILE "${QMDIR}/cmake_translations.qrc")
file(WRITE ${QMRESFILE} "<!DOCTYPE RCC><RCC version=\"1.0\">\n<qresource prefix=\"/\">\n")

foreach(QMFILE ${QMFILES})
file(RELATIVE_PATH QMFILE_NAME ${QMDIR} ${QMFILE})
file(APPEND ${QMRESFILE} "    <file alias=\"${QMFILE_NAME}\">${QMFILE}</file>\n")
endforeach(QMFILE)

file(APPEND ${QMRESFILE} "</qresource>\n</RCC>\n")
qt_add_resources(TRANSRES ${QMRESFILE})

qt5_wrap_ui(UIS_HDRS
    about.ui
    prefdialog.ui
    gametablesdialog.ui
)

add_executable(colorcode
    ${TRANSRES}
    ${UIS_HDRS}
    about.cpp
    colorcode.cpp
    colorpeg.cpp
    main.cpp
    msg.cpp
    pegrow.cpp
    rowhint.cpp
    ccsolver.cpp
    background.cpp
    solutionrow.cpp
    graphicsbtn.cpp
    settings.cpp
    prefdialog.cpp
    pegfactory.cpp
    gamenodisplay.cpp
    timedisplay.cpp
    timedisplaybg.cpp
    highscore.cpp
    ccgame.cpp
    buttonscell.cpp
    buttondelegate.cpp
    cellbtn.cpp
    gametimer.cpp
    savedgamesmodel.cpp
    prevgamesmodel.cpp
    highscoresmodel.cpp
    gametableview.cpp
    gametablesdialog.cpp
    gameslistmodel.cpp
    docs/GPL.html
    resource.qrc
)

target_link_libraries(colorcode
    Qt5::Widgets
    Qt5::Gui
    Qt5::Core
)

target_compile_options(colorcode
    BEFORE
    PUBLIC
    -pipe
    -O3
    -Wall
    -Wextra
    -D_REENTRANT
    -fPIC
)

# target_compile_options(colorcode PUBLIC -O3)
