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(Qt5 COMPONENTS Widgets Sql OpenGL 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 PATHS REQUIRED) add_subdirectory(libXISF) set(TENMON_SRC about.cpp about.h database.cpp database.h databaseview.cpp databaseview.h delete.cpp filesystemwidget.cpp filesystemwidget.h imageinfo.cpp imageinfo.h imageringlist.cpp imageringlist.h imagescrollarea.cpp imagescrollareagl.cpp imagescrollareagl.h loadrunable.cpp loadrunable.h main.cpp mainwindow.cpp mainwindow.h markedfiles.cpp markedfiles.h rawimage.cpp rawimage.h rawimage_sse.cpp settingsdialog.cpp settingsdialog.h starfit.cpp starfit.h statusbar.cpp statusbar.h stfslider.cpp stfslider.h stretchtoolbar.cpp stretchtoolbar.h ) option(COLOR_MANAGMENT "Enable sRGB framebuffer support for gamma correct images and color profiles support" ON) if(${Qt5Core_VERSION_STRING} VERSION_LESS "5.14") set(COLOR_MANAGMENT OFF) endif(${Qt5Core_VERSION_STRING} VERSION_LESS "5.14") if(COLOR_MANAGMENT) add_compile_definitions("COLOR_MANAGMENT") endif(COLOR_MANAGMENT) qt5_add_resources(TENMON_SRC resources.qrc) if(WIN32) list(APPEND TENMON_SRC icon.rc) set(tenmon_ICON "") elseif(APPLE) set(tenmon_ICON ${CMAKE_CURRENT_SOURCE_DIR}/tenmon.icns) set_source_files_properties(${tenmon_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") else() set(tenmon_ICON "") find_package(PkgConfig REQUIRED) pkg_search_module(GIO REQUIRED gio-2.0) endif() 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}) if(UNIX AND NOT APPLE) target_include_directories(tenmon PRIVATE ${GIO_INCLUDE_DIRS}) endif() target_link_libraries(tenmon Qt5::Widgets Qt5::Sql ${GSL_LIB} ${GSLCBLAS_LIB} ${EXIF_LIB} ${FITS_LIB} ${RAW_LIB} ${WCS_LIB} XISF) if(APPLE) target_link_libraries(tenmon "-framework CoreFoundation") else() target_link_libraries(tenmon ${GIO_LDFLAGS}) endif(APPLE) if(LIBRAW_STATIC) add_compile_definitions("LIBRAW_NODLL") target_link_libraries(tenmon jasper) endif() 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 space.nouspiro.tenmon.png DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/64x64/apps") install(FILES 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()