cmake_minimum_required(VERSION 3.18) project(vesperprofiled VERSION 1.0.0 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG") set(CMAKE_CXX_FLAGS_DEBUG "-g -fsanitize=address") # ── Dependencies ─────────────────────────────────────────────────────────── find_package(PkgConfig REQUIRED) find_package(CURL REQUIRED) pkg_check_modules(OPENSSL REQUIRED openssl) pkg_check_modules(LIBYAML REQUIRED yaml-0.1) pkg_check_modules(DBUS REQUIRED dbus-1) pkg_check_modules(SYSTEMD REQUIRED libsystemd) # ── Sources ──────────────────────────────────────────────────────────────── set(SOURCES src/main.cpp src/VesperProfileService.cpp src/ProfileParser.cpp src/ProfileStore.cpp src/SignatureVerifier.cpp src/payloads/PayloadHandlers.cpp src/zte/DeviceIdentity.cpp src/zte/ZTELookupClient.cpp src/zte/ConnectivityWatcher.cpp ) add_executable(vesperprofiled ${SOURCES}) target_include_directories(vesperprofiled PRIVATE src/ ${OPENSSL_INCLUDE_DIRS} ${LIBYAML_INCLUDE_DIRS} ${DBUS_INCLUDE_DIRS} ${SYSTEMD_INCLUDE_DIRS} ${CURL_INCLUDE_DIRS} ) target_link_libraries(vesperprofiled PRIVATE ${OPENSSL_LIBRARIES} ${LIBYAML_LIBRARIES} ${DBUS_LIBRARIES} ${SYSTEMD_LIBRARIES} ${CURL_LIBRARIES} pthread ) target_compile_options(vesperprofiled PRIVATE -Wall -Wextra -Werror ${OPENSSL_CFLAGS_OTHER} ${LIBYAML_CFLAGS_OTHER} ${DBUS_CFLAGS_OTHER} ${SYSTEMD_CFLAGS_OTHER} ${CURL_CFLAGS_OTHER} ) # ── Install ──────────────────────────────────────────────────────────────── include(GNUInstallDirs) install(TARGETS vesperprofiled RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR} ) install(FILES systemd/vesperprofiled.service DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/systemd/system ) install(FILES dbus/me.oxmc.vesperos.ProfileService.conf DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/dbus-1/system.d ) install(FILES apparmor/vesperprofiled DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/apparmor.d ) install(FILES zte.conf.example DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/vesperprofiled RENAME zte.conf.example ) # Note: profile.schema.yml is NOT installed here — it is owned by the # vesperprofiled-config-schema package and installed at # /usr/share/vesperprofiled/schema/profile.schema.yml