All Projects → starkos → premake-next

starkos / premake-next

Licence: BSD-3-Clause license
An experimental, exploratory take on new ideas and approaches for Premake

Programming Languages

c
50402 projects - #5 most used programming language
HTML
75241 projects
lua
6591 projects

Projects that are alternatives of or similar to premake-next

Fortran-Tools
Fortran compilers, preprocessors, static analyzers, transpilers, IDEs, build systems, etc.
Stars: ✭ 31 (+82.35%)
Mutual labels:  makefile-generation
Geno
IDE for cross-platform C/C++ development
Stars: ✭ 39 (+129.41%)
Mutual labels:  premake
Premake Core
Premake
Stars: ✭ 2,248 (+13123.53%)
Mutual labels:  premake
premake-android-studio
premake5 module for android-studio and gradle build.
Stars: ✭ 24 (+41.18%)
Mutual labels:  premake
cpp-compiler-options
Compilation options for different versions of Clang, GCC and MSVC. Provided a generator and different file formats (cmake, xmake, meson, premake5, bjam/b2, ...)
Stars: ✭ 19 (+11.76%)
Mutual labels:  premake
PlaneGame
飞机大战源码(豪华版)
Stars: ✭ 89 (+423.53%)
Mutual labels:  premake
premake-compilationunit
Premake module adding support for compilation speed up through the use of the "single compilation unit" pattern, slightly modified.
Stars: ✭ 16 (-5.88%)
Mutual labels:  premake
fastapi-mvc
Developer productivity tool for making high-quality FastAPI production-ready APIs.
Stars: ✭ 131 (+670.59%)
Mutual labels:  project-generator

Premake

Premake Next

An exploratory take on new ideas and approaches for the Premake build tool.

☢️ This repository is no longer maintaned! ☢️

Come find me on the 6.x branch of premake-core for the latest work.


What’s going on here?

I’m trying out new ideas for Premake (see “Why “next”?, below).

Current status: I've ported over enough of Premake5 to bootstrap, execute user commands, and run unit tests. I've given most of it a good polish. The next step is to bring a new configuration scripting and storage system online, which will be the first truly novel bits.

See Changes Since v5 for a list of the improvements made so far. See the full documentation to get a sense of what's available so far.

Why “next”?

While working to fix some of Premake’s more fundamental issues I’ve come to the conclusion that its project configuration system—the heart of the program which stores and queries the scripted project settings—is fatally flawed. It’s still using the same Visual Studio-centric models that I set out in Premake 1.0, and they’ve hit the limits of what they are able to express.

  • It's too inflexible, and can't represent all of the possible formats that it needs to support (Makefile-style projects; anything that supports complex configuration at the workspace level)

  • It can't handle toolsets which support multiple platforms in one project, like Code::Blocks

  • It doesn't scale well to large combinations of platform/architecture/toolset/etc.

  • There's no easy way to "roll up" common configuration at the workspace or project level, needed for modern Xcode and Makefile projects

  • It does a terrible job handling file level configurations

  • The code is excessively complex and difficult to extend and change

  • We're hitting the performance limits of the approach, and performance is only so-so at best

I think I know how to fix all of this, but I don’t see how to get there from where we are without breaking…well, pretty much everything. I don’t really want to break everything, and I don’t think you want me to break everything either.

I’m using this space to develop a vertical slice of a new approach, providing something real that other people can see and touch, discuss, and reason about. When that’s done, either a path will be found to fold this back in Premake5, or (more likely IMHO) we’ll create a v6.x branch in premake-core and full steam ahead on Premake6.

Does this mean I'm going to have to rewrite all of my scripts?

At some point, maybe, though I'm hoping to provide a transition path. But first I have to prove it works. Stay tuned.

I need this now, how can I make it go faster?

I hear ya. Boy, do I ever.

Contributions here are welcome and appreciated, especially bug fixes and constructive feedback. But please sync up with me to make sure we’re on the same page before setting off to tackle anything big.

Otherwise, the best way to speed things up is to contribute to our OpenCollective. Every hour I don’t have to spend hunting down client work is an hour I can spend improving Premake here.

Can we talk about this?

The easiest way to start a discussion is to open an issue here. Keep in mind this is a temporary repository so don’t leave anything important lying around; use premake-core for that. I can also be reached at @premakeapp.

What about toolsets/usages/other issues?

There are definitely other big questions to tackle, but I think this is the most fundamental and, done right, makes solving those other issues easier.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].