/ext

PHP extension for building native desktop applications

Primary LanguageC

Ardillo PHP Extension

CI Status License

The Ardillo extension provides an object-oriented PHP interface to the libui-ng library as well as routines for implementing a ReactPHP event loop. The end goal is to provide a framework for developing cross-platform desktop applications in PHP, as seen in our examples.

Please head to ardillo.dev for documentation.

Build requirements

  • Your operating system build essentials (Xcode/clang on macOS, build-essential on Linux, MS Visual Studio 2019 on Windows);
  • PHP development headers and tools;
  • Meson/Ninja build system;

For Linux builds, you will also need the GTK development headers.

Build and install using PECL

Please note this method is currently available just for Linux and macOS.

Download the latest extension package manually or via curl:

curl -s -L https://github.com/ardillo-php/ext/releases/download/v0.1.0/ardillo-0.1.0.tgz -o ardillo.tgz

Then install it using PECL:

sudo pecl install ardillo.tgz

The Ardillo extension has yet to be published on the PECL repository.

Build from source

After cloning the repository, you will need to initialize the submodule then you can proceed to build the extension.

On unices, you can use the following commands:

git submodule update --init
phpize
./configure
make -j
sudo make install

On Windows, you should use the following commands:

git submodule update --init
cd libui-ng
meson setup build --default-library=shared
ninja -C build
cd ..
phpize
configure
nmake
nmake install

Since libui-ng is presently built as a shared library, you might want to copy the libui.dll file (libui-ng\build\meson-out\libui.dll) to a directory reachable by your Ardillo applications.

License

The Ardillo extension is licensed under the MIT license.

Acknowledgements

The Ardillo extension is based on the libui-ng library, which is licensed under the MIT license.

The Windows I/O implementation is based on the wepool library, which is licensed under the BSD 2-Clause license.

Contributing

Bug reports (and small patches) can be submitted via the issue tracker. Forking the repository and submitting a Pull Request is preferred for substantial patches. Please be sure to read and comply with the Contributing Terms document before proceeding.