School is ending soon, and I have slightly more time to do things. One of the things at the top of my list is adding the eZ80 as a possible toolchain for CMake.
This means that instead of having to use GNU Make for creating CE programs (along with Wine if you're not running from Windows), you'll be able to use other programs such as Visual Studio (which now has built-in CMake support!), Ninja (an alternate build system), Eclipse CDT, and Code::Blocks (accompanied by another build system) to assist in building your project.
However, I need to address some things:
What's wrong with Make?
The main problem with Make is that it's platform- and toolchain-specific. Suppose you wanted to use SDCC (Small Device C Compiler) in lieu of the official, Windows-only compiler tools: with Make, you'd pretty much have to rewrite every Makefile with the right flags to get everything to build correctly. Creating Makefiles manually is easy for the simple stuff, but the absence of a profound layer of abstraction can increase their complexity very quickly.
Why CMake?
The main reason is because CMake is proven software. It's used by a ton of reputable software projects, from Blender to KDE, and many examples of custom toolchains are available. Moreover, CMake gives you control over what generator you would like to use to create the project files.
Will this make Mateo's work obsolete?
In a short answer, no. The CMake toolchain files, which will be worked on as a separate project/repository, will work alongside the CE toolchain, but it simply will not depend on the Makefile part of the CE toolchain. Projects will just need to use CMakeFiles.txt instead of a Makefile, but the official unofficial Makefile process can still be used.
How will this improve compatibility?
This opens up the possibility of adding in SDCC support, a toolchain that can run natively on Mac and *nix without the need for Wine. I'm waiting to see whether or not eZ80 is supported, so whether or not this will happen is tentative. At any rate, I will find a way to get eZ80 to be compiled natively on non-Windows platforms.
Right now, I am working on finding paths and figuring out the best way to lay this out. The simplest design could be just a hundred lines, but the most elaborate design could be thousands, so I must choose my next steps with care.
This means that instead of having to use GNU Make for creating CE programs (along with Wine if you're not running from Windows), you'll be able to use other programs such as Visual Studio (which now has built-in CMake support!), Ninja (an alternate build system), Eclipse CDT, and Code::Blocks (accompanied by another build system) to assist in building your project.
However, I need to address some things:
What's wrong with Make?
The main problem with Make is that it's platform- and toolchain-specific. Suppose you wanted to use SDCC (Small Device C Compiler) in lieu of the official, Windows-only compiler tools: with Make, you'd pretty much have to rewrite every Makefile with the right flags to get everything to build correctly. Creating Makefiles manually is easy for the simple stuff, but the absence of a profound layer of abstraction can increase their complexity very quickly.
Why CMake?
The main reason is because CMake is proven software. It's used by a ton of reputable software projects, from Blender to KDE, and many examples of custom toolchains are available. Moreover, CMake gives you control over what generator you would like to use to create the project files.
Will this make Mateo's work obsolete?
In a short answer, no. The CMake toolchain files, which will be worked on as a separate project/repository, will work alongside the CE toolchain, but it simply will not depend on the Makefile part of the CE toolchain. Projects will just need to use CMakeFiles.txt instead of a Makefile, but the official unofficial Makefile process can still be used.
How will this improve compatibility?
This opens up the possibility of adding in SDCC support, a toolchain that can run natively on Mac and *nix without the need for Wine. I'm waiting to see whether or not eZ80 is supported, so whether or not this will happen is tentative. At any rate, I will find a way to get eZ80 to be compiled natively on non-Windows platforms.
Right now, I am working on finding paths and figuring out the best way to lay this out. The simplest design could be just a hundred lines, but the most elaborate design could be thousands, so I must choose my next steps with care.