Skip to main content

Pilot Light Build

Project description

Pilot Light Build

The pl-build tool is a lightweight utility used to generate batch/bash build scripts.

Background

The pl-build tool is a part of the larger Pilot Light project. In this larger project, we do not have a "build system" per se. Instead we prefer to write batch/bash scripts that directly call the compiler (in a manner similar to Casey Muratori's Handmade Hero). If this project was an end user product, this would be the end of it. However, this is not the case. It is meant to be easily extended through adding additional extensions and being used as a "pilot light" to start new projects. With this comes a couple issues. Extensions are meant to be cross platform so users need the ability to easily add new binaries for all target platforms with minimal duplication. Users shouldn't need to be bash or batch scripting experts to build new targets for all platforms and shouldn't need to test the build scripts continuously on each platform.

Another way of putting it, is we want to focus on what matters to build binaries. Ultimately this is just compiler & linker settings. We don't want to think about the differences in bash/batch syntax.

The idea is simple:

flowchart LR

    gen_build.py --> build_win32.bat

    gen_build.py --> build_linux.sh

    gen_build.py --> build_macos.sh

Features

  • entire system can be understood in an hour

  • minimizes duplicated information

  • generates standalone simple build scripts

  • fine-grained control over compilation & linker settings

  • supports hot reloading

  • easily extended to add new platforms & compilers

  • extremely light weight

  • no preference on editor/IDE

  • doesn't pretend different platforms don't exist

Documentation

Documentation can be found here.

Examples

Real World

Complete & more advanced examples can be found here:

Basic Example

This is just an example of the what an input and output scripts look like (this will not actually run).

input - gen_build.py

import pl_build.core as pl

import pl_build.backend_win32 as win32

import pl_build.backend_linux as linux

import pl_build.backend_macos as macos



with pl.project("tutorial"):



    pl.set_hot_reload_target("../out/pilot_light")



    with pl.target("example", pl.TargetType.EXECUTABLE):



        # shared across configs

        pl.set_output_directory("out")

        pl.set_output_binary("example")

        pl.add_source_files("main.c")



        with pl.configuration("debug"):



            with pl.platform("Windows"):

                with pl.compiler("msvc"):

                    pl.add_compiler_flags("-Od")



            with pl.platform("Linux"):

                with pl.compiler("gcc"):

                    pl.add_compiler_flags("-g")

                    pl.add_linker_flags("-ldl")



            with pl.platform("Darwin"):

                with pl.compiler("clang"):

                    pl.add_compiler_flags("-g", "--debug")

                    pl.add_linker_flags("-Wl,-rpath,/usr/local/lib")

                    

win32.generate_build("build_win32.bat")

linux.generate_build("build_linux.sh")

macos.generate_build("build_macos.sh")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pl_build-1.0.12.tar.gz (14.1 kB view details)

Uploaded Source

Built Distribution

pl_build-1.0.12-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

File details

Details for the file pl_build-1.0.12.tar.gz.

File metadata

  • Download URL: pl_build-1.0.12.tar.gz
  • Upload date:
  • Size: 14.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.13

File hashes

Hashes for pl_build-1.0.12.tar.gz
Algorithm Hash digest
SHA256 8542891550c6a0eac68ae35bd9a243b3e26eeaeec7af327ebdd14b061f888cff
MD5 caebb03a5668edf19e35d21d7e1d128c
BLAKE2b-256 f4a879549062eb1c7ad34570b7281672346ea1739b3ad413137509f78b3643d7

See more details on using hashes here.

File details

Details for the file pl_build-1.0.12-py3-none-any.whl.

File metadata

  • Download URL: pl_build-1.0.12-py3-none-any.whl
  • Upload date:
  • Size: 17.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.13

File hashes

Hashes for pl_build-1.0.12-py3-none-any.whl
Algorithm Hash digest
SHA256 b780cfac6dad1ae5320bdad99636c15c1a56c5e6c81a881019478e3cd707de1a
MD5 3660530296ec55abbd1d30bae9dda1fb
BLAKE2b-256 0f81f7e3a0d5d569039a11356a73175882c462328726ba60a8b51a5cc16b4882

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page