cmake_minimum_required(VERSION 3.21)
project(AkyuuPackage LANGUAGES CXX)

foreach(name BUNDLE VERSION FORMAT OUTPUT)
	if (NOT DEFINED AKYUU_${name})
		message(FATAL_ERROR "Set AKYUU_${name}")
	endif()
endforeach()
if (NOT AKYUU_VERSION MATCHES "^([0-9]+\\.[0-9]+\\.[0-9]+)(-([a-zA-Z0-9.]+))?$")
	message(FATAL_ERROR "Invalid release version")
endif()
set(base_version "${CMAKE_MATCH_1}")
set(prerelease "${CMAKE_MATCH_3}")
if (NOT AKYUU_FORMAT MATCHES "^(DEB|RPM)$")
	message(FATAL_ERROR "Expected DEB or RPM")
endif()
if (NOT EXISTS "${AKYUU_BUNDLE}/usr/bin/akyuu" OR NOT EXISTS "${AKYUU_BUNDLE}/usr/bin/qt.conf")
	message(FATAL_ERROR "Expected a complete deployed Linux bundle")
endif()

install(DIRECTORY "${AKYUU_BUNDLE}/usr/" DESTINATION opt/akyuu USE_SOURCE_PERMISSIONS)
add_executable(akyuu-launcher launcher.cpp)
set_target_properties(akyuu-launcher PROPERTIES OUTPUT_NAME akyuu)
install(TARGETS akyuu-launcher RUNTIME DESTINATION usr/bin)
install(FILES "${AKYUU_BUNDLE}/usr/share/applications/io.github.ligneo.Akyuu.desktop"
	DESTINATION usr/share/applications)
install(FILES "${AKYUU_BUNDLE}/usr/share/icons/hicolor/256x256/apps/io.github.ligneo.Akyuu.png"
	DESTINATION usr/share/icons/hicolor/256x256/apps)

set(CPACK_GENERATOR "${AKYUU_FORMAT}")
set(CPACK_PACKAGE_NAME akyuu)
set(CPACK_PACKAGE_VENDOR ligneo)
set(CPACK_PACKAGE_CONTACT "cenky <cenkkgl@gmail.com>")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Anime list tracker with player and browser detection")
set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/ligneo/akyuu")
set(CPACK_PACKAGE_VERSION "${base_version}")
set(CPACK_PACKAGING_INSTALL_PREFIX /)
set(CPACK_PACKAGE_DIRECTORY "${AKYUU_OUTPUT}")
set(CPACK_PACKAGE_FILE_NAME "akyuu-${AKYUU_VERSION}-x86_64")
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE amd64)
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${CPACK_PACKAGE_CONTACT}")
set(CPACK_DEBIAN_PACKAGE_SECTION video)
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS OFF)
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.38), libgl1, libegl1, libglx0, libssl3t64 | libssl3, ca-certificates, fontconfig, xdg-utils")
set(CPACK_DEBIAN_PACKAGE_RELEASE 1)
set(CPACK_DEBIAN_PACKAGE_VERSION "${base_version}")
set(CPACK_RPM_PACKAGE_ARCHITECTURE x86_64)
set(CPACK_RPM_PACKAGE_LICENSE "GPL-3.0-or-later")
set(CPACK_RPM_PACKAGE_AUTOREQPROV OFF)
set(CPACK_RPM_PACKAGE_REQUIRES "glibc >= 2.38, libGL.so.1()(64bit), libEGL.so.1()(64bit), libGLX.so.0()(64bit), libssl.so.3()(64bit), libcrypto.so.3()(64bit), ca-certificates, fontconfig, xdg-utils")
set(CPACK_RPM_PACKAGE_RELEASE 1)
# Private runtime libraries must not become system-wide providers or have their paths rewritten.
set(CPACK_RPM_PACKAGE_RELOCATABLE OFF)
set(CPACK_RPM_SPEC_MORE_DEFINE "%define __os_install_post %{nil}")
set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION /opt /usr/bin /usr/share/applications /usr/share/icons /usr/share/icons/hicolor /usr/share/icons/hicolor/256x256 /usr/share/icons/hicolor/256x256/apps)
if (prerelease)
	set(CPACK_DEBIAN_PACKAGE_VERSION "${base_version}~${prerelease}")
	set(CPACK_RPM_PACKAGE_RELEASE "0.${prerelease}.1")
endif()
include(CPack)
