Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 

99 linhas
3.5 KiB

  1. cmake_minimum_required (VERSION 3.0.0)
  2. list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
  3. project(aptdec)
  4. include(GNUInstallDirs)
  5. # libpng
  6. find_package(PNG)
  7. # libsndfile
  8. find_package(LibSndFile)
  9. set(LIB_C_SOURCE_FILES src/color.c src/dsp.c src/filter.c src/image.c src/libs/reg.c src/libs/median.c)
  10. set(EXE_C_SOURCE_FILES src/main.c src/pngio.c src/libs/argparse.c)
  11. set(LIB_C_HEADER_FILES src/apt.h)
  12. # Link with static library for aptdec executable, so we don't need to set the path
  13. add_library(aptstatic STATIC ${LIB_C_SOURCE_FILES})
  14. # Create shared library for 3rd party apps
  15. add_library(apt SHARED ${LIB_C_SOURCE_FILES})
  16. add_compile_definitions(PALETTE_DIR="${CMAKE_INSTALL_PREFIX}/palettes")
  17. if (PNG_FOUND AND LIBSNDFILE_FOUND)
  18. add_executable(aptdec ${EXE_C_SOURCE_FILES})
  19. include_directories(${PNG_PNG_INCLUDE_DIR})
  20. include_directories(${LIBSNDFILE_INCLUDE_DIR})
  21. target_link_libraries(aptdec PRIVATE PNG::PNG)
  22. target_link_libraries(aptdec PRIVATE ${LIBSNDFILE_LIBRARY})
  23. target_link_libraries(aptdec PRIVATE aptstatic)
  24. if (MSVC)
  25. target_compile_options(aptdec PRIVATE /D_CRT_SECURE_NO_WARNINGS=1 /DAPT_API_STATIC)
  26. else()
  27. # Math
  28. target_link_libraries(aptdec PRIVATE m)
  29. # Throw errors on warnings on release builds
  30. if(CMAKE_BUILD_TYPE MATCHES "Release")
  31. target_compile_options(aptdec PRIVATE -Wall -Wextra -pedantic -Wno-missing-field-initializers -Werror)
  32. else()
  33. target_compile_options(aptdec PRIVATE -Wall -Wextra -pedantic)
  34. endif()
  35. endif()
  36. else()
  37. MESSAGE(STATUS "WARNING: Only building apt library, as not all of the required libraries were found for aptdec.")
  38. endif()
  39. if (MSVC)
  40. target_compile_options(apt PRIVATE /D_CRT_SECURE_NO_WARNINGS=1 /DAPT_API_EXPORT)
  41. target_compile_options(aptstatic PRIVATE /D_CRT_SECURE_NO_WARNINGS=1 /DAPT_API_STATIC)
  42. else()
  43. # Math
  44. target_link_libraries(apt PRIVATE m)
  45. target_link_libraries(aptstatic PRIVATE m)
  46. if(CMAKE_BUILD_TYPE MATCHES "Release")
  47. target_compile_options(apt PRIVATE -Wall -Wextra -pedantic -Wno-missing-field-initializers -Werror)
  48. else()
  49. target_compile_options(apt PRIVATE -Wall -Wextra -pedantic)
  50. endif()
  51. endif()
  52. # TODO: get this from git
  53. set(PROJECT_VERSION "1.7.0")
  54. # CPack
  55. set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}")
  56. set(CPACK_PACKAGE_NAME "aptdec")
  57. set(CPACK_PACKAGE_CONTACT "Xerbo (xerbo@protonmail.com)")
  58. set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "NOAA APT satellite imagery decoder")
  59. set(CPACK_PACKAGE_DESCRIPTION "Aptdec is a FOSS program that decodes images transmitted by NOAA weather satellites. These satellites transmit constantly (among other things) medium resolution (4km/px) images of the earth over a analog mode called APT.")
  60. set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64")
  61. set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
  62. IF(NOT WIN32)
  63. set(CPACK_GENERATOR "DEB;TGZ")
  64. set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}.${CMAKE_SYSTEM_PROCESSOR}")
  65. else()
  66. #set(CPACK_GENERATOR "ZIP;NSIS")
  67. set(CPACK_GENERATOR "ZIP")
  68. set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}")
  69. if (TARGET aptdec)
  70. file(GLOB_RECURSE DLLS *.dll)
  71. install(FILES ${DLLS} DESTINATION ${CMAKE_INSTALL_BINDIR})
  72. endif()
  73. endif()
  74. if (TARGET aptdec)
  75. install(TARGETS aptdec)
  76. install(DIRECTORY "${PROJECT_SOURCE_DIR}/palettes/" DESTINATION "palettes/")
  77. endif()
  78. install(TARGETS apt)
  79. install(FILES ${LIB_C_HEADER_FILES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/apt)
  80. include(CPack)