cmake_minimum_required (VERSION 3.15) project(Tenmon) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -s") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s") option(SANITIZE_ADDRESS_LEAK "Enable -fsanitize=address -fsanitize=leak" OFF) if(SANITIZE_ADDRESS_LEAK) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address -fsanitize=leak") endif(SANITIZE_ADDRESS_LEAK) find_package(Qt6 COMPONENTS Widgets Sql OpenGLWidgets Qml REQUIRED) find_library(GSL_LIB gsl REQUIRED) find_library(GSLCBLAS_LIB gslcblas REQUIRED) find_library(EXIF_LIB exif REQUIRED) find_library(FITS_LIB cfitsio REQUIRED) find_library(RAW_LIB NAMES raw_r REQUIRED) find_library(WCS_LIB wcs wcslib REQUIRED) find_library(LCMS2_LIB lcms2 REQUIRED) find_library(STELLARSOLVER_LIB stellarsolver) add_subdirectory(libXISF) set(TENMON_SRC about.cpp about.h batchprocessing.cpp batchprocessing.h batchprocessing.ui database.cpp database.h databaseview.cpp databaseview.h delete.cpp filesystemwidget.cpp filesystemwidget.h histogram.cpp histogram.h httpdownloader.h httpdownloader.cpp imageinfo.cpp imageinfo.h imageringlist.cpp imageringlist.h imagescrollarea.cpp imagescrollarea.h imagewidget.h imagewidget.cpp loadrunable.cpp loadrunable.h main.cpp mainwindow.cpp mainwindow.h markedfiles.cpp markedfiles.h rawimage.cpp rawimage.h rawimage_sse.cpp scriptengine.cpp scriptengine.h settingsdialog.cpp settingsdialog.h starfit.cpp starfit.h statusbar.cpp statusbar.h stfslider.cpp stfslider.h stretchtoolbar.cpp stretchtoolbar.h ) qt_add_resources(TENMON_SRC resources/resources.qrc) qt_add_resources(TENMON_SRC shaders/shaders.qrc) qt_add_resources(TENMON_SRC scripts/scripts.qrc) if(WIN32) list(APPEND TENMON_SRC resources/icon.rc) set(tenmon_ICON "") elseif(APPLE) set(tenmon_ICON ${CMAKE_CURRENT_SOURCE_DIR}/resources/tenmon.icns) find_package(Qt6 COMPONENTS DBus REQUIRED) set_source_files_properties(${tenmon_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") else() set(tenmon_ICON "") find_package(Qt6 COMPONENTS DBus REQUIRED) endif() qt_add_executable(tenmon WIN32 MACOSX_BUNDLE ${tenmon_ICON} ${TENMON_SRC}) find_path(FITS_INCLUDE fitsio2.h PATH_SUFFIXES cfitsio REQUIRED) target_include_directories(tenmon PRIVATE ${FITS_INCLUDE} ${CMAKE_BINARY_DIR} ${libXISF_SOURCE_DIR}) option(COLOR_MANAGMENT "Enable sRGB framebuffer support for gamma correct images and color profiles support" ON) if(COLOR_MANAGMENT) target_compile_definitions(tenmon PRIVATE "COLOR_MANAGMENT") endif(COLOR_MANAGMENT) target_link_libraries(tenmon PRIVATE Qt6::Widgets Qt6::Sql Qt6::OpenGLWidgets Qt6::Qml ${GSL_LIB} ${GSLCBLAS_LIB} ${EXIF_LIB} ${FITS_LIB} ${RAW_LIB} ${WCS_LIB} ${LCMS2_LIB} XISF) if(APPLE) target_link_libraries(tenmon PRIVATE Qt6::DBus "-framework CoreFoundation") elseif(UNIX) target_link_libraries(tenmon PRIVATE Qt6::DBus) endif(APPLE) if(LIBRAW_STATIC) add_compile_definitions("LIBRAW_NODLL") target_link_libraries(tenmon PRIVATE jasper) endif() find_path(STELLARSOLVER_INCLUDE stellarsolver.h PATH_SUFFIXES libstellarsolver) if(STELLARSOLVER_INCLUDE AND STELLARSOLVER_LIB) target_include_directories(tenmon PRIVATE ${STELLARSOLVER_INCLUDE}) target_link_libraries(tenmon PRIVATE ${STELLARSOLVER_LIB}) target_compile_definitions(tenmon PRIVATE "PLATESOLVER") target_sources(tenmon PRIVATE solver.cpp solver.h platesolving.cpp platesolving.h platesolving.ui ) endif(STELLARSOLVER_INCLUDE AND STELLARSOLVER_LIB) option(FLATPAK "Flatpak build" OFF) if(FLATPAK) target_compile_definitions(tenmon PRIVATE FLATPAK) endif(FLATPAK) install(TARGETS tenmon BUNDLE DESTINATION .) if(UNIX AND NOT APPLE) include(GNUInstallDirs) find_program(XDG-DESKTOP-MENU_EXECUTABLE xdg-desktop-menu) if(XDG-DESKTOP-MENU_EXECUTABLE) install(SCRIPT install.cmake) else() install(FILES space.nouspiro.tenmon.desktop DESTINATION "${CMAKE_INSTALL_DATADIR}/applications") install(FILES resources/space.nouspiro.tenmon.png DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/64x64/apps") install(FILES resources/space.nouspiro.tenmon_128.png DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/128x128/apps" RENAME space.nouspiro.tenmon.png) endif() install(FILES space.nouspiro.tenmon.metainfo.xml DESTINATION "${CMAKE_INSTALL_DATADIR}/metainfo") endif(UNIX AND NOT APPLE) option(RELEASE_BUILD "Release build" OFF) if(RELEASE_BUILD) add_custom_target(tenmon_version COMMAND ${CMAKE_COMMAND} -Dlocal_dir="${CMAKE_CURRENT_SOURCE_DIR}" -Doutput_dir="${CMAKE_CURRENT_BINARY_DIR}" -P "${CMAKE_CURRENT_SOURCE_DIR}/gitversion.cmake") add_dependencies(tenmon tenmon_version) else() execute_process(COMMAND ${CMAKE_COMMAND} -Dlocal_dir=${CMAKE_CURRENT_SOURCE_DIR} -Doutput_dir=${CMAKE_CURRENT_BINARY_DIR} -P "${CMAKE_CURRENT_SOURCE_DIR}/gitversion.cmake") endif()