This is not an issue, is just a tip to build the compiler and run it on Apple M1 Chip computers.
Issue description:
There were multiple people trying to build and run the compiler in macOS ARM/M1: #663 #662 #79 #76 #75 And me, of course.
Instructions
- First, you must install Rosetta2, open your Terminal and type:
softwareupdate --install-rosetta --agree-to-license
- Follow the guide Building on macOS but do not execute these commands:
cmake ../source/compiler -DCMAKE_C_FLAGS=-m32 -DCMAKE_BUILD_TYPE=Release
make
- We will use rosetta2 to compile a 64-bit compatible binary, in your terminal type:
(Note that I'm using zsh as shell, if you use bash or anything else, replace it with yours)
4. Verify that your current terminal is using rosetta:
Should output:
- Force 32-bit cells
First, modify source/amx/amx.h:
Replace this:
#if !defined PAWN_CELL_SIZE
#define PAWN_CELL_SIZE 32 /* by default, use 32-bit cells */
#endif
#if PAWN_CELL_SIZE==16
typedef uint16_t ucell;
typedef int16_t cell;
#elif PAWN_CELL_SIZE==32
typedef uint32_t ucell;
typedef int32_t cell;
#elif PAWN_CELL_SIZE==64
typedef uint64_t ucell;
typedef int64_t cell;
#else
#error Unsupported cell size (PAWN_CELL_SIZE)
#endif
With this:
#if !defined PAWN_CELL_SIZE
#define PAWN_CELL_SIZE 32 /* by default, use 32-bit cells */
#endif
#if PAWN_CELL_SIZE==32
typedef uint32_t ucell;
typedef int32_t cell;
#else
#error Unsupported cell size (PAWN_CELL_SIZE)
#endif
And now you will need to comment the line 493 of file source/amx/amx.c
assert_static(sizeof(f)<=sizeof(cell)); /* function pointer must fit in a cell */
It should look like this:
if (amx->sysreq_d!=0) {
/* at the point of the call, the CIP pseudo-register points directly
* behind the SYSREQ instruction and its parameter(s)
*/
....
// <--- HERE IS IT: I COMMENTED IT TO AVOID ERRORS ON COMPILATION ---->
// assert_static(sizeof(f)<=sizeof(cell)); /* function pointer must fit in a cell */
// <--- --------------------------------------------------------- ---->
....
Once you comment this line, you will be able to compile, type this in your terminal:
cmake ../source/compiler -DCMAKE_C_FLAGS=-m64 -DCMAKE_BUILD_TYPE=Release
make
- Once compiled, copy the files to your pawno folder, and enjoy!
- build/pawncc
- build/pawndisasm
- build/libpawnc.dylib
By doing this, I was able to code and compile my scripts on M1.
Workspace Information:
- Compiler version: Pawn compiler 3.10.10
- Command line arguments provided (or sampctl version):
./pawno/pawncc /path/to/your/gamemodes/MyGame.pwn -Dgamemodes '-;+' '-(+' '-d3' '-Z' '-i/path/to/your/includes'
- Operating System: macOS Ventura 13 on Apple M1
This is not an issue, is just a tip to build the compiler and run it on Apple M1 Chip computers.
Issue description:
There were multiple people trying to build and run the compiler in macOS ARM/M1: #663 #662 #79 #76 #75 And me, of course.
Instructions
(Note that I'm using zsh as shell, if you use bash or anything else, replace it with yours)
4. Verify that your current terminal is using rosetta:
Should output:
First, modify source/amx/amx.h:
Replace this:
With this:
And now you will need to comment the line 493 of file source/amx/amx.c
It should look like this:
Once you comment this line, you will be able to compile, type this in your terminal:
By doing this, I was able to code and compile my scripts on M1.
Workspace Information: