aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2022-04-17 23:41:39 +0200
committerMike Pall <mike>2022-04-17 23:41:39 +0200
commit34a62c7f738347e4981e7882bbf4f7a4f706dc5d (patch)
tree8528f19d8ffda9ccaddcae82f942538ffeb7f5b8
parentddb955376457461bbcc62d4c7fee86669adad20c (diff)
downloadluajit-34a62c7f738347e4981e7882bbf4f7a4f706dc5d.tar.gz
luajit-34a62c7f738347e4981e7882bbf4f7a4f706dc5d.tar.bz2
luajit-34a62c7f738347e4981e7882bbf4f7a4f706dc5d.zip
Add PS5 port.
-rw-r--r--doc/install.html12
-rw-r--r--doc/luajit.html2
-rw-r--r--src/lib_io.c2
-rw-r--r--src/lib_os.c2
-rw-r--r--src/lj_alloc.c2
-rw-r--r--src/lj_arch.h11
-rw-r--r--src/lj_prng.c4
-rw-r--r--src/ps5build.bat123
8 files changed, 149 insertions, 9 deletions
diff --git a/doc/install.html b/doc/install.html
index 90f76bf8..a38bdb5f 100644
--- a/doc/install.html
+++ b/doc/install.html
@@ -118,7 +118,7 @@ operating systems, CPUs and compilers:
118<tr class="even"> 118<tr class="even">
119<td class="compatcpu">x64 (64 bit)</td> 119<td class="compatcpu">x64 (64 bit)</td>
120<td class="compatos">GCC 4.2+</td> 120<td class="compatos">GCC 4.2+</td>
121<td class="compatos">GCC 4.2+<br>ORBIS (<a href="#ps4">PS4</a>)</td> 121<td class="compatos">GCC 4.2+<br>ORBIS (<a href="#ps4">PS4</a>)<br>PROSPERO (<a href="#ps5">PS5</a>)</td>
122<td class="compatos">XCode 5.0+<br>Clang</td> 122<td class="compatos">XCode 5.0+<br>Clang</td>
123<td class="compatos">MSVC<br>Durango (<a href="#xboxone">Xbox One</a>)</td> 123<td class="compatos">MSVC<br>Durango (<a href="#xboxone">Xbox One</a>)</td>
124</tr> 124</tr>
@@ -478,6 +478,16 @@ cd src
478ps4build 478ps4build
479</pre> 479</pre>
480<p> 480<p>
481To cross-compile for <b id="ps5">PS5</b> from a Windows host,
482open a "Visual Studio .NET Command Prompt" (64&nbsp;bit host compiler),
483<tt>cd</tt> to the directory where you've unpacked the sources and
484run the following commands:
485</p>
486<pre class="code">
487cd src
488ps5build
489</pre>
490<p>
481To cross-compile for <b id="psvita">PS Vita</b> from a Windows host, 491To cross-compile for <b id="psvita">PS Vita</b> from a Windows host,
482open a "Visual Studio .NET Command Prompt" (32&nbsp;bit host compiler), 492open a "Visual Studio .NET Command Prompt" (32&nbsp;bit host compiler),
483<tt>cd</tt> to the directory where you've unpacked the sources and 493<tt>cd</tt> to the directory where you've unpacked the sources and
diff --git a/doc/luajit.html b/doc/luajit.html
index 2aa143ae..06774ddf 100644
--- a/doc/luajit.html
+++ b/doc/luajit.html
@@ -162,7 +162,7 @@ LuaJIT is Copyright &copy; 2005-2022 Mike Pall, released under the
162<tr><td><span style="font-size:90%;">Embedded</span></td><td>Android</td><td>iOS</td></tr> 162<tr><td><span style="font-size:90%;">Embedded</span></td><td>Android</td><td>iOS</td></tr>
163</table> 163</table>
164<table class="feature os os3"> 164<table class="feature os os3">
165<tr><td>PS3</td><td>PS4</td><td>PS Vita</td><td>Xbox 360</td><td>Xbox One</td></tr> 165<tr><td>PS3</td><td>PS4</td><td>PS5</td><td>PS Vita</td><td>Xbox 360</td><td>Xbox One</td></tr>
166</table> 166</table>
167<table class="feature compiler"> 167<table class="feature compiler">
168<tr><td>GCC</td><td>Clang<br>LLVM</td><td>MSVC</td></tr> 168<tr><td>GCC</td><td>Clang<br>LLVM</td><td>MSVC</td></tr>
diff --git a/src/lib_io.c b/src/lib_io.c
index a3278ab2..7f218e49 100644
--- a/src/lib_io.c
+++ b/src/lib_io.c
@@ -439,7 +439,7 @@ LJLIB_CF(io_popen)
439LJLIB_CF(io_tmpfile) 439LJLIB_CF(io_tmpfile)
440{ 440{
441 IOFileUD *iof = io_file_new(L); 441 IOFileUD *iof = io_file_new(L);
442#if LJ_TARGET_PS3 || LJ_TARGET_PS4 || LJ_TARGET_PSVITA 442#if LJ_TARGET_PS3 || LJ_TARGET_PS4 || LJ_TARGET_PS5 || LJ_TARGET_PSVITA
443 iof->fp = NULL; errno = ENOSYS; 443 iof->fp = NULL; errno = ENOSYS;
444#else 444#else
445 iof->fp = tmpfile(); 445 iof->fp = tmpfile();
diff --git a/src/lib_os.c b/src/lib_os.c
index a61ded40..eb8704cf 100644
--- a/src/lib_os.c
+++ b/src/lib_os.c
@@ -76,7 +76,7 @@ LJLIB_CF(os_rename)
76 76
77LJLIB_CF(os_tmpname) 77LJLIB_CF(os_tmpname)
78{ 78{
79#if LJ_TARGET_PS3 || LJ_TARGET_PS4 || LJ_TARGET_PSVITA 79#if LJ_TARGET_PS3 || LJ_TARGET_PS4 || LJ_TARGET_PS5 || LJ_TARGET_PSVITA
80 lj_err_caller(L, LJ_ERR_OSUNIQF); 80 lj_err_caller(L, LJ_ERR_OSUNIQF);
81 return 0; 81 return 0;
82#else 82#else
diff --git a/src/lj_alloc.c b/src/lj_alloc.c
index 165203fa..20e60493 100644
--- a/src/lj_alloc.c
+++ b/src/lj_alloc.c
@@ -330,7 +330,7 @@ static void *mmap_plain(size_t size)
330#define CALL_MMAP(prng, size) mmap_plain(size) 330#define CALL_MMAP(prng, size) mmap_plain(size)
331#endif 331#endif
332 332
333#if LJ_64 && !LJ_GC64 && ((defined(__FreeBSD__) && __FreeBSD__ < 10) || defined(__FreeBSD_kernel__)) && !LJ_TARGET_PS4 333#if LJ_64 && !LJ_GC64 && ((defined(__FreeBSD__) && __FreeBSD__ < 10) || defined(__FreeBSD_kernel__)) && !LJ_TARGET_PS4 && !LJ_TARGET_PS5
334 334
335#include <sys/resource.h> 335#include <sys/resource.h>
336 336
diff --git a/src/lj_arch.h b/src/lj_arch.h
index cc4eae72..1852c497 100644
--- a/src/lj_arch.h
+++ b/src/lj_arch.h
@@ -83,7 +83,7 @@
83#define LUAJIT_OS LUAJIT_OS_OSX 83#define LUAJIT_OS LUAJIT_OS_OSX
84#elif (defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \ 84#elif (defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \
85 defined(__NetBSD__) || defined(__OpenBSD__) || \ 85 defined(__NetBSD__) || defined(__OpenBSD__) || \
86 defined(__DragonFly__)) && !defined(__ORBIS__) 86 defined(__DragonFly__)) && !defined(__ORBIS__) && !defined(__PROSPERO__)
87#define LUAJIT_OS LUAJIT_OS_BSD 87#define LUAJIT_OS LUAJIT_OS_BSD
88#elif (defined(__sun__) && defined(__svr4__)) 88#elif (defined(__sun__) && defined(__svr4__))
89#define LJ_TARGET_SOLARIS 1 89#define LJ_TARGET_SOLARIS 1
@@ -139,6 +139,13 @@
139#define NULL ((void*)0) 139#define NULL ((void*)0)
140#endif 140#endif
141 141
142#ifdef __PROSPERO__
143#define LJ_TARGET_PS5 1
144#define LJ_TARGET_CONSOLE 1
145#undef NULL
146#define NULL ((void*)0)
147#endif
148
142#ifdef __psp2__ 149#ifdef __psp2__
143#define LJ_TARGET_PSVITA 1 150#define LJ_TARGET_PSVITA 1
144#define LJ_TARGET_CONSOLE 1 151#define LJ_TARGET_CONSOLE 1
@@ -634,7 +641,7 @@ extern void *LJ_WIN_LOADLIBA(const char *path);
634#endif 641#endif
635#endif 642#endif
636 643
637#if defined(LUAJIT_NO_UNWIND) || __GNU_COMPACT_EH__ || defined(__symbian__) || LJ_TARGET_IOS || LJ_TARGET_PS3 || LJ_TARGET_PS4 644#if defined(LUAJIT_NO_UNWIND) || __GNU_COMPACT_EH__ || defined(__symbian__) || LJ_TARGET_IOS || LJ_TARGET_PS3 || LJ_TARGET_PS4 || LJ_TARGET_PS5
638#define LJ_NO_UNWIND 1 645#define LJ_NO_UNWIND 1
639#endif 646#endif
640 647
diff --git a/src/lj_prng.c b/src/lj_prng.c
index fff155a1..fd8219de 100644
--- a/src/lj_prng.c
+++ b/src/lj_prng.c
@@ -83,7 +83,7 @@ extern int XNetRandom(void *buf, unsigned int len);
83 83
84extern int sys_get_random_number(void *buf, uint64_t len); 84extern int sys_get_random_number(void *buf, uint64_t len);
85 85
86#elif LJ_TARGET_PS4 || LJ_TARGET_PSVITA 86#elif LJ_TARGET_PS4 || LJ_TARGET_PS5 || LJ_TARGET_PSVITA
87 87
88extern int sceRandomGetRandomNumber(void *buf, size_t len); 88extern int sceRandomGetRandomNumber(void *buf, size_t len);
89 89
@@ -171,7 +171,7 @@ int LJ_FASTCALL lj_prng_seed_secure(PRNGState *rs)
171 if (sys_get_random_number(rs->u, sizeof(rs->u)) == 0) 171 if (sys_get_random_number(rs->u, sizeof(rs->u)) == 0)
172 goto ok; 172 goto ok;
173 173
174#elif LJ_TARGET_PS4 || LJ_TARGET_PSVITA 174#elif LJ_TARGET_PS4 || LJ_TARGET_PS5 || LJ_TARGET_PSVITA
175 175
176 if (sceRandomGetRandomNumber(rs->u, sizeof(rs->u)) == 0) 176 if (sceRandomGetRandomNumber(rs->u, sizeof(rs->u)) == 0)
177 goto ok; 177 goto ok;
diff --git a/src/ps5build.bat b/src/ps5build.bat
new file mode 100644
index 00000000..0b1ebd5b
--- /dev/null
+++ b/src/ps5build.bat
@@ -0,0 +1,123 @@
1@rem Script to build LuaJIT with the PS5 SDK.
2@rem Donated to the public domain.
3@rem
4@rem Open a "Visual Studio .NET Command Prompt" (64 bit host compiler)
5@rem or "VS20xx x64 Native Tools Command Prompt".
6@rem
7@rem Then cd to this directory and run this script.
8@rem
9@rem Recommended invocation:
10@rem
11@rem ps5build release build, amalgamated, 64-bit GC
12@rem ps5build debug debug build, amalgamated, 64-bit GC
13@rem
14@rem Additional command-line options (not generally recommended):
15@rem
16@rem gc32 (before debug) 32-bit GC
17@rem noamalg (after debug) non-amalgamated build
18
19@if not defined INCLUDE goto :FAIL
20@if not defined SCE_PROSPERO_SDK_DIR goto :FAIL
21
22@setlocal
23@rem ---- Host compiler ----
24@set LJCOMPILE=cl /nologo /c /MD /O2 /W3 /D_CRT_SECURE_NO_DEPRECATE
25@set LJLINK=link /nologo
26@set LJMT=mt /nologo
27@set DASMDIR=..\dynasm
28@set DASM=%DASMDIR%\dynasm.lua
29@set ALL_LIB=lib_base.c lib_math.c lib_bit.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c lib_debug.c lib_jit.c lib_ffi.c lib_buffer.c
30@set GC64=
31@set DASC=vm_x64.dasc
32
33@if "%1" neq "gc32" goto :NOGC32
34@shift
35@set GC64=-DLUAJIT_DISABLE_GC64
36@set DASC=vm_x86.dasc
37:NOGC32
38
39%LJCOMPILE% host\minilua.c
40@if errorlevel 1 goto :BAD
41%LJLINK% /out:minilua.exe minilua.obj
42@if errorlevel 1 goto :BAD
43if exist minilua.exe.manifest^
44 %LJMT% -manifest minilua.exe.manifest -outputresource:minilua.exe
45
46@rem Check for 64 bit host compiler.
47@minilua
48@if not errorlevel 8 goto :FAIL
49
50@set DASMFLAGS=-D P64 -D NO_UNWIND
51minilua %DASM% -LN %DASMFLAGS% -o host\buildvm_arch.h %DASC%
52@if errorlevel 1 goto :BAD
53
54%LJCOMPILE% /I "." /I %DASMDIR% %GC64% -DLUAJIT_TARGET=LUAJIT_ARCH_X64 -DLUAJIT_OS=LUAJIT_OS_OTHER -DLUAJIT_DISABLE_JIT -DLUAJIT_DISABLE_FFI -DLUAJIT_NO_UNWIND host\buildvm*.c
55@if errorlevel 1 goto :BAD
56%LJLINK% /out:buildvm.exe buildvm*.obj
57@if errorlevel 1 goto :BAD
58if exist buildvm.exe.manifest^
59 %LJMT% -manifest buildvm.exe.manifest -outputresource:buildvm.exe
60
61buildvm -m elfasm -o lj_vm.s
62@if errorlevel 1 goto :BAD
63buildvm -m bcdef -o lj_bcdef.h %ALL_LIB%
64@if errorlevel 1 goto :BAD
65buildvm -m ffdef -o lj_ffdef.h %ALL_LIB%
66@if errorlevel 1 goto :BAD
67buildvm -m libdef -o lj_libdef.h %ALL_LIB%
68@if errorlevel 1 goto :BAD
69buildvm -m recdef -o lj_recdef.h %ALL_LIB%
70@if errorlevel 1 goto :BAD
71buildvm -m vmdef -o jit\vmdef.lua %ALL_LIB%
72@if errorlevel 1 goto :BAD
73buildvm -m folddef -o lj_folddef.h lj_opt_fold.c
74@if errorlevel 1 goto :BAD
75
76@rem ---- Cross compiler ----
77@set LJCOMPILE="%SCE_PROSPERO_SDK_DIR%\host_tools\bin\prospero-clang" -c -Wall -DLUAJIT_DISABLE_FFI %GC64%
78@set LJLIB="%SCE_PROSPERO_SDK_DIR%\host_tools\bin\prospero-llvm-ar" rcus
79@set INCLUDE=""
80
81%SCE_PROSPERO_SDK_DIR%\host_tools\bin\prospero-llvm-as -o lj_vm.o lj_vm.s
82
83@if "%1" neq "debug" goto :NODEBUG
84@shift
85@set LJCOMPILE=%LJCOMPILE% -g -O0
86@set TARGETLIB=libluajitD_ps5.a
87goto :BUILD
88:NODEBUG
89@set LJCOMPILE=%LJCOMPILE% -O2
90@set TARGETLIB=libluajit_ps5.a
91:BUILD
92del %TARGETLIB%
93@if "%1" neq "noamalg" goto :AMALG
94for %%f in (lj_*.c lib_*.c) do (
95 %LJCOMPILE% %%f
96 @if errorlevel 1 goto :BAD
97)
98
99%LJLIB% %TARGETLIB% lj_*.o lib_*.o
100@if errorlevel 1 goto :BAD
101@goto :NOAMALG
102:AMALG
103%LJCOMPILE% ljamalg.c
104@if errorlevel 1 goto :BAD
105%LJLIB% %TARGETLIB% ljamalg.o lj_vm.o
106@if errorlevel 1 goto :BAD
107:NOAMALG
108
109@del *.o *.obj *.manifest minilua.exe buildvm.exe
110@echo.
111@echo === Successfully built LuaJIT for PS5 ===
112
113@goto :END
114:BAD
115@echo.
116@echo *******************************************************
117@echo *** Build FAILED -- Please check the error messages ***
118@echo *******************************************************
119@goto :END
120:FAIL
121@echo To run this script you must open a "Visual Studio .NET Command Prompt"
122@echo (64 bit host compiler). The PS5 Prospero SDK must be installed, too.
123:END