Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus / 2025-12

Introducing PasBuild 1.0.0 - Maven-Inspired Build Tool for Free Pascal

1 message · 1 person ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Unknown author

Hi all,

I'm excited to announce the first release of PasBuild v1.0.0, a modern build automation tool for Free Pascal projects inspired by Apache Maven!

GitHub: https://github.com/graemeg/PasBuild

Why PasBuild?
=============

While fpmake is powerful, it can be laborious to create and maintain, especially for large projects. A real-world example: fpGUI Toolkit has 120+ units, include files in various locations, and platform-dependent directory trees. The fpmake.pp file was 40KB with over 750 lines of code that needed constant updates when adding or removing units.

PasBuild's project.xml? Just 3KB and 117 lines - and we know how verbose XML is. ;-) No updates needed when units change - it self-discovers your code and dynamically builds the FPC command!

Key Features
============

Convention Over Configuration
-----------------------------
- Standard directory layout (src/main/pascal, src/test/pascal)
- Zero configuration for projects following conventions
- Override only what you need to customize

Intelligent Automation
----------------------
- Auto-discovers all units and subdirectories
- Automatic include path detection (*.inc files)
- Self-maintaining - add/remove files without updating config
- Cross-platform path handling (src/main/pascal ? src\main\pascal)

Complete Build Lifecycle
-------------------------
- clean: Remove build artifacts
- compile: Build your executable or library
- test: Compile and run tests (FPCUnit/FPTest auto-detection)
- package: Create release archives
- source-package: Generate source distributions

Build Profiles
--------------
- Define multiple build configurations (debug, release, etc.)
- Activate single or multiple profiles: -p base,debug,logging
- Profile-specific compiler options and defines
- Perfect for cross-platform conditional compilation

Resource Management
-------------------
- Automatic resource copying to target directory
- Variable filtering: ${project.version} ? 1.0.0
- Supports both main and test resources
- Version injection via resource filtering

Developer-Friendly
------------------
- Single XML configuration file (project.xml)
- Semantic versioning 2.0.0 with pre-release tags
- Verbose mode for debugging (-v flag)
- Alternate project files support (-f custom.xml)
- Maven-style goal dependencies

Cross-Platform
--------------
- Works identically on Linux, Windows, macOS, FreeBSD
- Automatic path separator handling
- Platform-specific conditional compilation support

Self-Hosting
------------
- PasBuild builds itself using project.xml
- Demonstrates best practices
- Easy to bootstrap from source

Real-World Testing
==================

PasBuild has been extensively tested with:
- Multiple production applications
- fpGUI Toolkit (120+ units, complex structure)
- Projects with platform-dependent code trees
- Libraries and applications alike

Example: Minimal project.xml
=============================

<?xml version="1.0" encoding="UTF-8"?>
<project>
<name>MyApp</name>
<version>1.0.0</version>
<author>Your Name</author>
<license>BSD-3-Clause</license>

<build>
<mainSource>Main.pas</mainSource>
<executableName>myapp</executableName>
</build>
</project>

That's it! PasBuild handles the rest automatically.

Getting Started
===============

# Bootstrap compilation
mkdir -p target/units
echo '1.0.0' > target/version.inc
fpc -Mobjfpc -O1 -FEtarget -FUtarget/units -Fitarget \ -Fusrc/main/pascal src/main/pascal/PasBuild.pas

# Now use PasBuild to build itself
./target/pasbuild compile

# Create a new project
mkdir myproject && cd myproject
pasbuild init

Documentation
=============

Comprehensive documentation available in the repository:
- Quick Start Guide: docs/quick-start-guide.adoc
- Design Document: docs/design.adoc
- Bootstrap Instructions: BOOTSTRAP.txt

Try It Today!
=============

Clone from GitHub:
git clone https://github.com/graemeg/PasBuild.git

Your feedback and contributions are welcome! Please kindly use the GitHub Issue Tracker.

More features to come soon.

License: BSD-3-Clause

Regards,
- Graeme -

fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal http://fpgui.sourceforge.net/

Reply by email