| 
 | 1 | +cmake_minimum_required(VERSION 3.16)  | 
 | 2 | + | 
 | 3 | +set(CMAKE_CXX_STANDARD 20)  | 
 | 4 | +set(CMAKE_CXX_STANDARD_REQUIRED ON)  | 
 | 5 | + | 
 | 6 | +set(APP_VERSION_MAJOR 0)  | 
 | 7 | +set(APP_VERSION_MINOR 0)  | 
 | 8 | +set(APP_VERSION_PATCH  0)  | 
 | 9 | + | 
 | 10 | +set(APP_VERSION ${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}.${APP_VERSION_PATCH})  | 
 | 11 | + | 
 | 12 | +project(Gpt4AllAutoUpdater VERSION ${APP_VERSION} LANGUAGES CXX)  | 
 | 13 | + | 
 | 14 | +option(BUILD_OFFLINE_UPDATER "Build an offline updater" OFF)  | 
 | 15 | + | 
 | 16 | +if(BUILD_OFFLINE_UPDATER AND NOT GPT4ALL_INSTALLER_PATH)  | 
 | 17 | +    message(FATAL_ERROR "The path to GPT4ALL's installer is required to construct this updater.  | 
 | 18 | +Please provide it on the command line using the argument -DGPT4ALL_INSTALLER_PATH=<pth>")  | 
 | 19 | +endif()  | 
 | 20 | + | 
 | 21 | +if(NOT BUILD_OFFLINE_UPDATER AND NOT GPT4ALL_MANIFEST_ENDPOINT)  | 
 | 22 | +    message(FATAL_ERROR "The manifest endpoint was not provided, the online installer will be unable to detect updates")  | 
 | 23 | +endif()  | 
 | 24 | + | 
 | 25 | +if(APPLE)  | 
 | 26 | +    option(BUILD_UNIVERSAL "Build universal binary on MacOS" OFF)  | 
 | 27 | +    if(BUILD_UNIVERSAL)  | 
 | 28 | +        set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE)  | 
 | 29 | +    else()  | 
 | 30 | +        set(CMAKE_OSX_ARCHITECTURES "${CMAKE_HOST_SYSTEM_PROCESSOR}" CACHE STRING "" FORCE)  | 
 | 31 | +    endif()  | 
 | 32 | +endif()  | 
 | 33 | + | 
 | 34 | +if(APPLE AND BUILD_OFFLINE_UPDATER)  | 
 | 35 | +    enable_language(ASM)  | 
 | 36 | +    configure_file(src/asm/bake_installer.S.in ${CMAKE_BINARY_DIR}/bake_installer.S @ONLY)  | 
 | 37 | +    set(ASSEMBLER_SOURCES ${CMAKE_BINARY_DIR}/bake_installer.S src/Embedded.cxx)  | 
 | 38 | +elseif(WIN32 AND BUILD_OFFLINE_UPDATER)  | 
 | 39 | +    configure_file(src/resources/installer.rc.in ${CMAKE_BINARY_DIR}/resource.rc @ONLY)  | 
 | 40 | +    set(RC_FILES ${CMAKE_BINARY_DIR}/resource.rc src/Resource.cxx)  | 
 | 41 | +endif()  | 
 | 42 | + | 
 | 43 | +if(NOT BUILD_OFFLINE_UPDATER)  | 
 | 44 | +    configure_file(src/Download.cxx.in ${CMAKE_BINARY_DIR}/Download.cxx @ONLY)  | 
 | 45 | +endif()  | 
 | 46 | + | 
 | 47 | +find_package(Qt6 REQUIRED COMPONENTS Core Network)  | 
 | 48 | + | 
 | 49 | +set(auto_updater_sources  | 
 | 50 | +    src/Command.cxx  | 
 | 51 | +    src/CommandFactory.cxx  | 
 | 52 | +    src/CommandLine.cxx  | 
 | 53 | +    src/Downgrade.cxx  | 
 | 54 | +    ${CMAKE_BINARY_DIR}/Download.cxx  | 
 | 55 | +    src/Manifest.cxx  | 
 | 56 | +    src/Modify.cxx  | 
 | 57 | +    src/Package.cxx  | 
 | 58 | +    src/State.cxx  | 
 | 59 | +    src/Uninstall.cxx  | 
 | 60 | +    src/Update.cxx  | 
 | 61 | +    src/utils.cxx  | 
 | 62 | +    src/main.cxx  | 
 | 63 | +    ${ASSEMBLER_SOURCES}  | 
 | 64 | +    ${RC_FILES}  | 
 | 65 | +)  | 
 | 66 | + | 
 | 67 | +add_executable(autoupdater ${auto_updater_sources})  | 
 | 68 | +target_link_libraries(autoupdater PRIVATE Qt6::Core Qt6::Network)  | 
 | 69 | +target_include_directories(autoupdater PRIVATE include)  | 
 | 70 | + | 
 | 71 | +if(BUILD_OFFLINE_UPDATER)  | 
 | 72 | +    target_compile_definitions(autoupdater PRIVATE OFFLINE)  | 
 | 73 | +endif()  | 
0 commit comments