-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSetDefaultSDL2Version.cmake
More file actions
83 lines (60 loc) · 2.48 KB
/
SetDefaultSDL2Version.cmake
File metadata and controls
83 lines (60 loc) · 2.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# include(SetDefaultSDL2Version)
# queries system package manager to get default version of SDL2 core library,
# caching SDL2_DEFAULT_VERSION in <major>.<minor>.<patch> format
# newest feature used: if(DEFINED CACHE{}) v3.14
cmake_minimum_required(VERSION 3.14)
include_guard(DIRECTORY)
if(DEFINED CACHE{SDL2_DEFAULT_VERSION})
return()
endif()
if(NOT COMMAND determine_package_manager)
include(DeterminePackageManager)
endif()
if(NOT COMMAND default_package_version)
include(DefaultPackageVersion)
endif()
if(NOT COMMAND upstream_ver_from_package_ver)
include(UpstreamVerFromPackageVer)
endif()
if(NOT PACKAGE_MANAGER_BINARY)
determine_package_manager()
endif()
unset(_SDL2_DEFAULT_VERSION)
if(${PACKAGE_MANAGER_BINARY} MATCHES "/brew$")
# MacOS: homebrew
default_package_version("sdl2" _SDL2_DEFAULT_VERSION)
elseif(${PACKAGE_MANAGER_BINARY} MATCHES "/aptitude$" OR
${PACKAGE_MANAGER_BINARY} MATCHES "/apt$")
# Debian: aptitude > apt [> dpkg]
default_package_version("libsdl2-2.0-0" _SDL2_DEFAULT_VERSION)
elseif(${PACKAGE_MANAGER_BINARY} MATCHES "/dnf$" OR
${PACKAGE_MANAGER_BINARY} MATCHES "/yum$")
# RHEL: dnf > yum [> rpm]
default_package_version("SDL2" _SDL2_DEFAULT_VERSION)
elseif(${PACKAGE_MANAGER_BINARY} MATCHES "/pacman$")
# Arch: pacman
default_package_version("sdl2" _SDL2_DEFAULT_VERSION)
elseif(${PACKAGE_MANAGER_BINARY} MATCHES "/emerge")
# Gentoo: portage (emerge)
default_package_version("libsdl2" _SDL2_DEFAULT_VERSION)
elseif(${PACKAGE_MANAGER_BINARY} MATCHES "/zypper$")
# openSUSE: zypper [> rpm]
# note: passing "" to `zypper info` will list all packages
default_package_version("libSDL2-2_0-0" _SDL2_DEFAULT_VERSION)
else()
message(WARNING "`${PACKAGE_MANAGER_BINARY}` is unsupported package manager")
endif()
if(NOT ${_SDL2_DEFAULT_VERSION} MATCHES "-NOTFOUND$")
upstream_ver_from_package_ver(
"${_SDL2_DEFAULT_VERSION}" _SDL2_DEFAULT_VERSION)
# upstream version according to package manager may still have suffixes,
# eg "+dfsg" or "+hg695". Here we strip all else away to get the
# <major>.<minor>.<patch> version used by SDL repository tags.
# (double backslashes for cmake argument parsing)
string(REGEX REPLACE
"^([0-9]+\\.[0-9]+\\.[0-9]+).*$" "\\1"
_SDL2_DEFAULT_VERSION "${_SDL2_DEFAULT_VERSION}")
endif()
set(SDL2_DEFAULT_VERSION "${_SDL2_DEFAULT_VERSION}" CACHE STRING
"default SDL2 package version in <major>.<minor>.<patch> format")
unset(_SDL2_DEFAULT_VERSION)