-
Notifications
You must be signed in to change notification settings - Fork 114
feat: full support for features
and profiles
#1181
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
I have thought about this although have not deployed that yet. Currently, a "collection" i.e. a series of platform/compiler versions, only applies to [gfortran.windows]
preprocess.cpp.macros = ["_WIN32","_WIN64"] |
That would be really cool. I look forward to it.
because I do not want to define |
Makes total sense and I think it deserves a separate PR as the current one is already huge enough. |
e994efc
to
db45d55
Compare
fd3525c
to
b587fdf
Compare
b7894d1
to
7ef6f22
Compare
@perazz These new functionalities look really exciting! Thanks for the PR! This and other recent PRs have led me to wonder when the next fpm release may come out. Do you have an idea of when a new release may come out that would contain these features? Or is there someone else I should ask or somewhere else I should consult to read what a typical fpm release schedule is like? Thanks! |
@perazz I'm also interested in the answer to @ktras's question and will add that having tagged releases when referencing |
This PR implements comprehensive Features and Profiles support, enabling conditional compilation, platform-specific configurations, and dependency feature propagation.
Overview
This implementation adds two major capabilities to FPM:
Key Features
✅ Feature System
fpm
manifest, allowing full customization✅ Profile System
development = ["debug","with_blas"]
)debug
andrelease
profiles (backward compatible; can be overridden)--profile <name>
and--features <list>
command line options✅ Advanced Capabilities
feature.os
orfeature.compiler
orfeature.compiler.os
orfeature.os.compiler
syntax for fine-grained controlUsage Examples
Basic Feature Definition
CLI Usage
Enable specific features
Use a profile
Build with dependency features
Backward Compatibility
debug
andrelease
features and profilesTesting
This implementation provides a solid foundation for conditional compilation and advanced build configurations in FPM while maintaining full backward compatibility with existing projects.