Files
ESP-VI/AgIsoVirtualTerminal/CMakeLists.txt
2025-03-09 15:25:03 -05:00

220 lines
6.9 KiB
CMake

cmake_minimum_required(VERSION 3.16)
project(
"AgISOVirtualTerminal"
LANGUAGES CXX
VERSION 1.3.0)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
set(JUCE_WEB_BROWSER OFF)
set(BUILD_TESTING OFF)
if(WIN32)
set(CAN_DRIVER "WindowsPCANBasic")
list(APPEND CAN_DRIVER "TouCAN")
if(NOT (CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND MINGW))
list(APPEND CAN_DRIVER "WindowsInnoMakerUSB2CAN")
else()
message(
STATUS
"InnoMaker hardware will not be supported in this build because you are using mingw"
)
endif()
list(APPEND CAN_DRIVER "SYS_TEC")
elseif(APPLE)
set(CAN_DRIVER "MacCANPCAN")
else()
set(CAN_DRIVER "SocketCAN")
endif()
find_package(JUCE MODULE)
find_package(CAN_Stack MODULE)
find_package(Threads REQUIRED)
juce_add_gui_app(
AgISOVirtualTerminal
ICON_BIG
doc/smallLogo.png
# image file to use as an icon ICON_SMALL ...
COMPANY_NAME
"Open-Agriculture"
COMPANY_COPYRIGHT
"Open-Agriculture"
COMPANY_WEBSITE
"https://github.com/Open-Agriculture"
PRODUCT_NAME
"AgISOVirtualTerminal"
NEEDS_CURL
FALSE
NEEDS_WEB_BROWSER
FALSE
DESCRIPTION
"An ISO11783-6 Server")
set_target_properties(AgISOVirtualTerminal PROPERTIES CXX_STANDARD 17)
target_compile_definitions(AgISOVirtualTerminal PRIVATE JUCE_USE_CURL=0
JUCE_WEB_BROWSER=0)
juce_generate_juce_header(AgISOVirtualTerminal)
target_sources(
AgISOVirtualTerminal
PRIVATE src/Main.cpp
"src/ServerMainComponent.cpp"
"src/DataMaskComponent.cpp"
"src/WorkingSetSelectorComponent.cpp"
"src/PictureGraphicComponent.cpp"
"src/WorkingSetComponent.cpp"
"src/AlarmMaskComponent.cpp"
"src/DataMaskRenderAreaComponent.cpp"
"src/JuceManagedWorkingSetCache.cpp"
"src/OutputRectangleComponent.cpp"
"src/OutputStringComponent.cpp"
"src/ButtonComponent.cpp"
"src/ContainerComponent.cpp"
"src/ObjectPointerComponent.cpp"
"src/OutputNumberComponent.cpp"
"src/SoftkeyMaskRenderArea.cpp"
"src/KeyComponent.cpp"
"src/SoftKeyMaskComponent.cpp"
"src/OutputMeterComponent.cpp"
"src/InputBooleanComponent.cpp"
"src/LoggerComponent.cpp"
"src/InputNumberComponent.cpp"
"src/OutputEllipseComponent.cpp"
"src/OutputLineComponent.cpp"
"src/OutputLinearBarGraphComponent.cpp"
"src/OutputPolygonComponent.cpp"
"src/InputStringComponent.cpp"
"src/AlarmMaskAudio.cpp"
"src/AppImages.cpp"
"src/ASCIILogFile.cpp"
"src/ConfigureHardwareWindow.cpp"
"src/ConfigureHardwareComponent.cpp"
"src/StringEncodingConversions.cpp"
"src/InputListComponent.cpp"
"src/ShortcutsWindow.cpp")
target_include_directories(AgISOVirtualTerminal
PRIVATE ${CMAKE_CURRENT_LIST_DIR}/include)
target_link_libraries(
AgISOVirtualTerminal
PRIVATE juce::juce_gui_extra juce::juce_audio_basics juce::juce_audio_utils
isobus::Isobus isobus::HardwareIntegration isobus::Utility
PUBLIC juce::juce_recommended_config_flags juce::juce_recommended_lto_flags)
if(WIN32)
add_custom_command(
TARGET AgISOVirtualTerminal
POST_BUILD
COMMENT "Copying PCANBasic.dll to the build directory"
COMMAND
"${CMAKE_COMMAND}" -E copy_if_different
${CMAKE_CURRENT_LIST_DIR}/lib/PCANBasic.dll
"$<TARGET_FILE_DIR:AgISOVirtualTerminal>"
VERBATIM)
add_custom_command(
TARGET AgISOVirtualTerminal
POST_BUILD
COMMENT "Copying Usbcan64.dll to the build directory"
COMMAND
"${CMAKE_COMMAND}" -E copy_if_different
${CMAKE_CURRENT_LIST_DIR}/lib/Usbcan64.dll
"$<TARGET_FILE_DIR:AgISOVirtualTerminal>"
VERBATIM)
add_custom_command(
TARGET AgISOVirtualTerminal
POST_BUILD
COMMENT "Copying canal.dll to the build directory"
COMMAND
"${CMAKE_COMMAND}" -E copy_if_different
${CMAKE_CURRENT_LIST_DIR}/lib/canal.dll
"$<TARGET_FILE_DIR:AgISOVirtualTerminal>"
VERBATIM)
add_custom_command(
TARGET AgISOVirtualTerminal
POST_BUILD
COMMENT "Copying InnoMakerUsb2CanLib.dll to the build directory"
COMMAND
"${CMAKE_COMMAND}" -E copy_if_different
${CMAKE_CURRENT_LIST_DIR}/lib/InnoMakerUsb2CanLib.dll
"$<TARGET_FILE_DIR:AgISOVirtualTerminal>"
VERBATIM)
endif()
if(APPLE)
install(
TARGETS AgISOVirtualTerminal
RUNTIME DESTINATION bin
BUNDLE DESTINATION . COMPONENT applications)
else()
install(TARGETS AgISOVirtualTerminal RUNTIME DESTINATION bin
COMPONENT applications)
endif()
if(MSVC)
install(
FILES ${CMAKE_CURRENT_LIST_DIR}/lib/Usbcan64.dll
DESTINATION bin
COMPONENT applications)
install(
FILES ${CMAKE_CURRENT_LIST_DIR}/lib/PCANBasic.dll
DESTINATION bin
COMPONENT applications)
install(
FILES ${CMAKE_CURRENT_LIST_DIR}/lib/canal.dll
DESTINATION bin
COMPONENT applications)
install(
FILES ${CMAKE_CURRENT_LIST_DIR}/lib/InnoMakerUsb2CanLib.dll
DESTINATION bin
COMPONENT applications)
endif()
set(CPACK_PACKAGE_NAME "AgISOVirtualTerminal")
set(CPACK_PACKAGE_VENDOR "Open-Agriculture")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "An ISO11783-6 Server")
set(CPACK_PACKAGE_VERSION "1.3.0")
set(CPACK_PACKAGE_VERSION_MAJOR "1")
set(CPACK_PACKAGE_VERSION_MINOR "3")
set(CPACK_PACKAGE_VERSION_PATCH "0")
set(CPACK_PACKAGE_INSTALL_DIRECTORY "AgISOVirtualTerminal")
set(CPACK_COMPONENTS_ALL applications)
set(CPACK_COMPONENT_APPLICATIONS_DISPLAY_NAME "AgISOVirtualTerminal")
set(CPACK_COMPONENT_APPLICATIONS_DESCRIPTION
"A free and open source ISO11783-6 Server")
set(CPACK_PACKAGE_CONTACT "delgrossoengineering@protonmail.com")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_LIST_DIR}/LICENSE")
set(CPACK_PACKAGE_EXECUTABLES "AgISOVirtualTerminal" "AgISOVirtualTerminal")
set(CPACK_ALL_INSTALL_TYPES Full)
set(CPACK_COMPONENT_LIBRARIES_INSTALL_TYPES Full)
set(CPACK_COMPONENT_APPLICATIONS_INSTALL_TYPES Full)
set(CPACK_NSIS_INSTALLED_ICON_NAME ${CMAKE_CURRENT_LIST_DIR}/doc/smallLogo.ico)
set(CPACK_NSIS_CONTACT ${CPACK_PACKAGE_CONTACT})
set(CPACK_NSIS_MUI_ICON ${CPACK_NSIS_INSTALLED_ICON_NAME})
set(CPACK_NSIS_MUI_UNICON ${CPACK_NSIS_INSTALLED_ICON_NAME})
set(CPACK_NSIS_DISPLAY_NAME "AgISOVirtualTerminal")
set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
set(CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT applications)
include(InstallRequiredSystemLibraries)
if(APPLE)
set(CPACK_GENERATOR DragNDrop ${CPACK_GENERATOR})
set(CPACK_GENERATOR "DragNDrop")
set(CPACK_DMG_FORMAT "UDBZ")
set(CPACK_DMG_VOLUME_NAME "${PROJECT_NAME}")
set(CPACK_SYSTEM_NAME "OSX")
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}")
set(CPACK_PACKAGE_ICON ${CPACK_NSIS_INSTALLED_ICON_NAME})
endif()
# Must be after the last CPACK macros
include(CPack)