Skip to content

Improve fpc#7260

Merged
waruqi merged 10 commits intodevfrom
fpc
Jan 25, 2026
Merged

Improve fpc#7260
waruqi merged 10 commits intodevfrom
fpc

Conversation

@waruqi
Copy link
Member

@waruqi waruqi commented Jan 23, 2026

@waruqi waruqi added this to the v3.0.7 milestone Jan 23, 2026
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @waruqi, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances Xmake's Free Pascal Compiler (FPC) toolchain integration. It refactors core compiler logic to consistently handle target-specific options, expands the Pascal language definition to support a wider range of build configurations like include paths, preprocessor definitions, and exception handling, and implements the corresponding FPC-specific command-line flag generation. These changes make the FPC support more robust and feature-complete within the Xmake build system.

Highlights

  • Standardized Target Option Handling: Refactored core compiler functions (compiler:build, compiler:buildargv, compiler:compile) to consistently retrieve and utilize the target object, improving robustness and reducing redundancy in option passing.
  • Expanded Pascal Language API: Introduced new APIs for the Pascal language definition across target, option, package, and toolchain scopes, enabling support for includedirs, defines, undefines, exceptions, and languages.
  • Enhanced FPC Toolchain Flag Generation: Implemented specific functions within the FPC toolchain (fpc.lua) to translate Xmake's generic build options into Free Pascal Compiler-specific command-line flags for include directories, preprocessor definitions, language modes, and exception handling.
  • Improved FPC Build Process: Modified the FPC build argument generation to correctly incorporate object output directories using the -FU flag, ensuring proper handling of intermediate build artifacts.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces significant improvements to the Pascal language support within Xmake, particularly for the FPC compiler. The changes centralize the handling of build options (opt) and ensure that target-specific configurations are consistently passed down to the underlying tool functions. New APIs have been added to pascal/load.lua and integrated into pascal/xmake.lua to allow more granular control over included directories, defines, undefines, languages, and exception handling for Pascal projects. The fpc.lua module now includes specific nf_ functions to translate these configurations into FPC compiler flags, which is a great step towards comprehensive FPC support. However, there is a functional issue in fpc.lua where the build function does not correctly pass the opt parameter to buildargv, potentially bypassing important build logic.

@waruqi waruqi force-pushed the fpc branch 2 times, most recently from 6fb3cf4 to cc85a27 Compare January 25, 2026 07:23
@waruqi waruqi merged commit 6fcf5e6 into dev Jan 25, 2026
71 of 72 checks passed
@github-project-automation github-project-automation bot moved this from Todo to Done in Xmake Project Jan 25, 2026
@waruqi waruqi deleted the fpc branch January 30, 2026 09:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants