|
| 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