-
Notifications
You must be signed in to change notification settings - Fork 17
/
sdl.R
93 lines (70 loc) · 2.29 KB
/
sdl.R
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
84
85
86
87
88
89
90
91
92
.R.home.bin <- function(arch) {
bin <- R.home('bin')
if (arch == "i386") bin <- normalizePath(paste0(bin, "/../i386/"))
return(bin)
}
.install.dll <- function(arch = c("x64", "i386")) {
arch <- match.arg(arch)
temp <- tempdir()
bin <- .R.home.bin(arch)
ddl <- paste0(temp, '/sdldll.zip')
dll <- paste0(temp, '/SDL.dll')
if (!dir.exists(bin)) {
cat(paste0(" - SDL dll installation skipped\n"))
return(TRUE)
}
url <- if (arch == "x64") {
'https://www.libsdl.org/release/SDL-1.2.15-win32-x64.zip'
} else {
'https://www.libsdl.org/release/SDL-1.2.15-win32.zip'
}
download.file(url, ddl, quiet = TRUE)
cat(" - SDL dll downloaded\n")
utils::unzip(ddl, exdir = temp)
cat(" - SDL dll uncompressed\n")
status <- file.copy(dll, bin, recursive = TRUE)
if (!all(status)) {
cat(" - Error: SDL dll was not copied correctly.\n")
return(FALSE)
} else {
cat(" - SDL dll installed\n")
return(TRUE)
}
}
.install.headers <- function() {
temp <- tempdir()
ddl <- paste0(temp, '/sdldevel.tar.gz')
inc <- paste0(R.home('include'), '/SDL')
url <- 'https://www.libsdl.org/release/SDL-devel-1.2.15-mingw32.tar.gz'
if (!dir.exists(inc)) dir.create(inc)
download.file(url, ddl, quiet = TRUE)
cat(" - SDL headers downloaded\n")
utils::untar(ddl, exdir = temp)
cat(" - SDL headers uncompressed\n")
includes <- paste0(temp, '/SDL-1.2.15/include/SDL/')
includes <- list.files(includes, full.names = T)
status <- file.copy(includes, inc, recursive = TRUE)
if (!all(status)) {
cat(" - Error: headers were not copied correctly\n")
return(FALSE)
} else {
cat(" - SDL headers installed\n")
return(TRUE)
}
}
install.sdl <- function() {
if (.Platform$OS.type != "windows")
stop("This script is designed to install the SDL on Windows only.", call. = FALSE)
cat("Downloading and installing SDL headers...\n")
s1 <- .install.headers()
cat("Downloading and installing SDL dll (x64)...\n")
s2 <- .install.dll("x64")
cat("Downloading and installing SDL dll (i386)...\n")
s3 <- .install.dll("i386")
if (s1 + s2 + s3 < 3)
stop("Something went wrong during the installation.", call. = FALSE)
else
cat("Installation of the SDL library: ok")
}
install.sdl()
rm(install.sdl, .install.headers, .install.dll, .R.home.bin)