cmake_minimum_required(VERSION 3.5)

project(RElicAnalysis VERSION 0.1 LANGUAGES CXX)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets LinguistTools)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools)

#link_directories(/usr/lib/x86_64-linux-gnu/)
find_package (opcodes)
#find_library(libopcodes ONLY_CMAKE_FIND_ROOT_PATH)
#add_library (libopcodes)
#add_library( libopcodes STATIC IMPORTED )
#add_executable( libopcodes )
#set_target_properties(libopcodes PROPERTIES
#  IMPORTED_LOCATION "/usr/lib/x86_64-linux-gnu/libopcodes.so"
#)
# target_link_libraries( ${BFD_LIBRARY} )

set(TS_FILES RElicAnalysis_en_GB.ts)

set(PROJECT_SOURCES
        main.cpp
        menubar.h
        menubar.cpp
        mainwindow.cpp
        mainwindow.h
)

if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
    qt_add_executable(RElicAnalysis
        MANUAL_FINALIZATION
        ${PROJECT_SOURCES}

        centralwidget.h centralwidget.cpp
        parsingelf.h parsingelf.cpp
        dockexplorer.h dockexplorer.cpp
        dockanalizing.h dockanalizing.cpp
        data.h
        stylesheet.h
        elfdata.h elfdata.cpp
        project.h project.cpp
        projectelf.h projectelf.cpp
        handleproject.h handleproject.cpp

        fileinfo.h fileinfo.cpp
        modelwidgetelf.h modelwidgetelf.cpp

        elf/dialogelfident.h elf/dialogelfident.cpp
        elf/dialogelfheader.h elf/dialogelfheader.cpp
        functions.h
        functions.cpp
        elf/dialogelfprogram.h elf/dialogelfprogram.cpp
        elf/dialogelfsection.h elf/dialogelfsection.cpp
        elf/dialogelfsymbol.h elf/dialogelfsymbol.cpp

        disasasm.h disasasm.cpp
        dataDisas.h

        elf/mdielfhandler.h elf/mdielfhandler.cpp
        elf/mdielf.h elf/mdielf.cpp



        elf/mdielfdisassembled.h elf/mdielfdisassembled.cpp
        elf/mdielfview.cpp
        elf/mdielfview.h
        dialogabout.h dialogabout.cpp






    )
# Define target properties for Android with Qt 6 as:
#    set_property(TARGET RElicAnalysis APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
#                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation

    qt_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES})
else()
    if(ANDROID)
        add_library(RElicAnalysis SHARED
            ${PROJECT_SOURCES}
        )
# Define properties for Android with Qt 5 after find_package() calls as:
#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
    else()
        add_executable(RElicAnalysis
            ${PROJECT_SOURCES}
        )
    endif()

    qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES})
endif()

target_link_libraries(RElicAnalysis PRIVATE Qt${QT_VERSION_MAJOR}::Widgets opcodes)

# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
# If you are developing for iOS or macOS you should consider setting an
# explicit, fixed bundle identifier manually though.
if(${QT_VERSION} VERSION_LESS 6.1.0)
  set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.RElicAnalysis)
endif()
set_target_properties(RElicAnalysis PROPERTIES
    ${BUNDLE_ID_OPTION}
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
    MACOSX_BUNDLE TRUE
    WIN32_EXECUTABLE TRUE
)

include(GNUInstallDirs)
install(TARGETS RElicAnalysis
    BUNDLE DESTINATION .
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

if(QT_VERSION_MAJOR EQUAL 6)
    qt_finalize_executable(RElicAnalysis)
endif()
