pas2js/README.md
2021-08-09 18:56:27 +02:00

108 lines
2.9 KiB
Markdown

## Welcome to pas2js
Pas2js is an open source Pascal to JavaScript transpiler.
It parses Object Pascal and emits JavaScript.
Official site:
[http://wiki.freepascal.org/pas2js](http://wiki.freepascal.org/pas2js)
## Directories
* **packages** - source files needed to compile pas2js programs
* **demo** - examples
* **bin** - output folder for binaries, e.g. pas2js.exe
* **compiler** - source files to compile the compiler. This is an external submodule link.
* **units** - output folder of compiler ppu/o files
* **utils** - utilities
## Building
### Compiler
You need to install the Free Pascal compiler (fpc), 3.2.0 or better, 32 or 64bit.
Either from their website
```text
https://www.freepascal.org/download.html
```
Or via Lazarus
```text
http://wiki.freepascal.org/Getting_Lazarus
```
Or on MacOS via homebrew. On Linux this can be done via your package manager
as well if it has the latest version.
### building pas2js
### Complete checkout
The makefile expects the sources of FPC to be present under the `compiler` directory.
You can copy these sources there, or make a symlink to the sources.
The git repository contains a submodule link to the FPC sources.
You can use this to have an automatically correct version of fpc
When you do a `git clone`, make sure you also specify the `--recurse-submodules` option:
```sh
git clone --recurse-submodules https://gitlab.com/freepascal.org/fpc/pas2js.git
```
If you didn't do this, issue the init and update commands:
```sh
git submodule init
```
and update:
```sh
git submodule update
```
This will have the same effect as when you do a --recurse-submodules.
After doing a git pull, you must also update the submodule:
```sh
git submodule update --init --recursive
```
This will pull any upstream changes to the FPC repository.
#### Under Linux/macOS
type the following command:
```sh
make all
```
This creates with a 64-bit fpc the executable `bin/x86_64-linux/pas2js`
and a basic config file `bin/x86_64-linux/pas2js.cfg`.
#### Under Windows
Make sure that you use the `make.exe` from fpc, not the one from Delphi by setting the
`PATH`: For example if you installed the 32-bit version of fpc in
`C:\YourPathOfFPC\3.2.0`:
```bat
set PATH=C:\YourPathOfFPC\3.0.4\bin\i386-win32;%PATH%
```
If you installed the 64-bit version of fpc in `C:\YourPathOfFPC\3.2.0` use
```bat
set PATH=C:\YourPathOfFPC\3.0.4\bin\x86-64-win64;%PATH%
```
Then compile
make all
If you see "Error makefile ... Command syntax error" your "set PATH" was
not correct.
When `make all` has succesfully finished it created with a 32-bit fpc the executable
`bin/i386-win32/pas2js.exe` and a basic config file
`bin/i386-win32/pas2js.cfg`.
## Configuration
pas2js requires unit search paths (-Fu) in order to find its rtl units and
rtl.js. Building and installing should have created a default pas2js.cfg
containing those parameters.
[http://wiki.freepascal.org/pas2js.cfg]([http://wiki.freepascal.org/pas2js.cfg])