I do agree Ray. Who even knows what cmake is? I have been creating c and c++ code for decades and had never heard of it before. I'm sure I can handle it if I want to but that is not the point.
For decades the worst you had to do was change to a projects source directory and type "make".
Then came the GNU guys with their auto tools.
Then came the Qt guys with the qmake.
It just gets worse and worse. Take a look at the chaos in the web development world. They seem to have come up with a thousand different ways to build anything in recent years!
Anything to do with SimpleIDE should be as simple as the Arduino IDE. Open IDE, type code, hit the button, it runs.
If not there is something very not "simple" about it.
I can't tell if that was 0 or 100% tongue-in-check, Heater.
SimpleIDE seems to work exactly like Arduino (from end user perspective - I mean to imply nothing about it's inner code). Just like the Arduino IDE, if you want to use Arduino code or libraries without the IDE, it is HORRIBLY difficult. I tried numerous times and gave up. Same with SimpleIDE - none of the libraries in SimpleIDE were made to be used outside of SimpleIDE. Very much a pain in my...
So, no one likes CMake. Stop complaining, download a PropWare binary distribution, and use whatever tool you're comfortable with to link against the complete static library for Simple that comes in the download.
Look, it's so easy, you can just click this one link and it will immediately download libSimple_xmmc.a. Woooooo.
Well, at least my "Who even knows what cmake is?" part was not tongue-in-check. I had never heard of it before.
...none of the libraries in SimpleIDE were made to be used outside of SimpleIDE. Very much a pain in my...
That is perhaps the crux of my gripe. How can that ever happen? Given that the size of code we are dealing with that can be loaded to the Propeller. And give the huge speed and memory space of the machines we are using to build that code. Then the is no reason for any pre-compiled binary libraries.
I should be able to drop the source code of any "library" into my project some where, perhaps set a path to it, and a simple make would get my whole project built in seconds. Especially after I have done it the first time. Heck, for the Propeller, code sizes are so small that even make is not required, just rebuild everything every time.
That is the way it works in Spin is it not?
Anyway, I will try to find time to catch up with the recent SimpleIDE situation and your PropWare. Even if I have to use cmake
"There is no reason for any pre-compiled binary libraries"
At a theoretical level, I'm 100% in agreement. It takes so little time to build this stuff for the propeller, libraries and incremental builds are a total joke. You get better optimization with a single translation unit as well. Life would be way better if we built a new build system from scratch to work like that.
But then... why reinvent the wheel? Libraries are a hassle... but that hassle has already been handled by existing build systems. The optimization is better with a single translation unit, but not by much (so long as the correct flags are passed in, which a build system can do without issue). Incremental builds sure are overkill... but they don't hurt anything do they?
I don't know of any existing build system that easily pulls source files in from multiple directories and compiles with a single translation unit. That means you're either writing your own build system, using multiple translation units, or manually copying files into your build tree so you can use "gcc *.c -o a.out". With Simple being set up the way it is, the third option is very painful.
Now we're left with writing your own build system, or use an existing, and the only advantage to writing your own is marginally better optimization.
So, in theory, I agree with you. We shouldn't need anything this complex. But what we do need is:
cross platform
well documented
flexible (works at the command line or in an IDE)
Doesn't force me into a specific editor/IDE
Ease of use
Control over compilation flags
Expectation of continued support and maintenance
At this point.... dealing with libraries looks like a small price to pay for all that
make can use vpath to include lots of directories where source is located. It may satisfy your needs as long as you know what directories contain your source code.
Hmmm...I certainly was not calling for yet another build system. In general I'm dead set against
"yet another anything", whatever it is. Unless it has some really compelling reason to exist.
I certainly said nothing about stuffing all the sources into a single translation unit. Although I
have often wondered if that might not be such a bad idea.
I think a lot of this mess comes from the nature of C/C++ itself. With it's header files, compiler, linker etc.
The language itself has no idea about "modules". You have to specify what you want included in your build
outside of the language itself. Languages like Ada, Python and so on have a better handle on this. Specify an "import" something in your source file and it is made so. No need for make or other means of finding files to build.
I agree with all your bullet points. SimpleIDE and prop-gcc meet some of them so far:
cross platform - check
well documented - pretty good
flexible (works at the command line or in an IDE) -
Doesn't force me into a specific editor/IDE - not sure, I used Make files.
Ease of use - clearly not judging by the number of posters here with problems.
Control over compilation flags - No, pre-compiled libs don't have that.
Expectation of continued support and maintenance - we shall see...
All in all not bad. Not suitable for noobs though.
I agree with all your bullet points. SimpleIDE and prop-gcc meet some of them so far:
cross platform - check
well documented - pretty good
flexible (works at the command line or in an IDE) -
Doesn't force me into a specific editor/IDE - not sure, I used Make files.
Ease of use - clearly not judging by the number of posters here with problems.
Control over compilation flags - No, pre-compiled libs don't have that.
Expectation of continued support and maintenance - we shall see...
Heh! Funny, I see it pretty different:
My checklist for SimpleIDE looks like
Cross platform: check
Well documented - check
flexible - FAIL (the build system is tightly integrated with the GUI, so you have no control over the editor and can not use its build system to compile at the command line)
Specific editor/IDE - FAIL
Ease of use - check with flying colors
Control over compilation flags - Marginal - you can control the flags on your own source code but not on a per-file basis
Support/Maintenance - Heh... we shall see indeed. Not much has happened lately, that's for sure.
Re: vpathThat's cool! I've never heard of that. It could make building a project with the Simple libraries a bit easier.
I just went over to the Learn site, just to check and see what the release status of SimpleIDE is, well it is still RC2. I think it has been there for what, seven months now, they must be spending a lot of time reworking the code just too make it perfect. And then when we do get a ver 1, what version of PropGCC will it be tied too?
It has been mentioned that their is work being done with GCC6, so when SimpleIDE gets to ver 1 it will be some four years behind PropGCC? Of course I am guessing at all of this because I do not know what the inner workings of PropGCC/SimpleIDE are.
So now I think we need somebody like a jazzed to come along and start maybe something like OpenIDE, which would be using to the latest PropGCC version, and deliver with the latest, most useable functions and drivers. I also went back to look at the Learn folder, there are a lot of drivers there, too bad most of it is tied to simpletools.
Stepping back in time, maybe fours years, when PropGCC was first introduced, did anybody foresee the situation that we are in now, as it is being discussed?
Ray
So now I think we need somebody like a jazzed to come along and start maybe something like OpenIDE, which would be using to the latest PropGCC version, and deliver with the latest, most useable functions and drivers.
You're joking right? Propeller Tool, BST, SimpleIDE, PropellerIDE and Parallax IDE aren't enough for you? You want another? Oh, here, maybe OmniaCreator will please you?
Yes, I forgot about OmniaCreator, and Catalina, probably a couple of more that have come and gone. Now I am thinking about when the Prop2 comes along, will there be some new IDEs for that? Will we have a lagging SimpleIDE for the Prop1, and something different for the Prop2? Or maybe we will not need PropGCC for the Prop2, because the new Spin2 will be so powerful and adept to the latest programming styles, that that will be the only tool that you will need?
Ray
I do appreciate your frustration but a couple of points need making about the situation.
1) On my new and shiny Debian 8 installation here the gcc is at version 4.9.2. Pretty much no one in the world is using any version 5. If this is good enough to build a whole Linux OS and all it's apps I'm sure it's fine for Prop development.
Or maybe we will not need PropGCC for the Prop2, because the new Spin2 will be so powerful and adept to the latest programming styles, that that will be the only tool that you will need?
Ray
I think Spin2 would have to have a lot of C features to eliminate any need for PropGCC on the Prop2. It would essentially need to become a subset of C++. I doubt if that will happen. In fact I haven't heard of any new features proposed for Spin on the P2. Parallax has only stated that it will support Spin on the P2.
There have been many enhancements proposed in the past for Spin on the P1. Maybe some of them will added to Spin2, and I don't see why they couldn't be implemented for the P1 as well.
@Heater., I am referring to PropGCC, but you mention gcc 4.9.2. So, now I am confused, the SimpleIDE RC2, that has been on the shelf since December 2014 has a gcc 4.9.2 associated with it? So, what gcc version is really in SimpleIDE RC2?
Ray
Ray,
I'm not sure really how this has been working out. GCC comes from here: https://www.gnu.org. You can check out the entire GCC history going back to 1987! There we see that GCC 5 is "experimental".
prop-gcc is an adaptation of GCC that generates Propeller code and provides tools and libraries. Clearly that adaptation will always be lagging behind the latest upstream releases of GCC.
Presumably the prop-gcc devs tack some more numbers onto the version to indicate a revision level of the base GCC version.
For example I have compilers here that call themselves "gcc-arm-none-eabi-4_8-2014q2" and "gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux" and so on.
@Heater., I am referring to PropGCC, but you mention gcc 4.9.2. So, now I am confused, the SimpleIDE RC2, that has been on the shelf since December 2014 has a gcc 4.9.2 associated with it? So, what gcc version is really in SimpleIDE RC2?
SimpleIDE RC2 contains/installs propeller-elf-gcc version: propellergcc_v1_0_0_2435 4.6.1. That's the official propgcc release as far as I know. And, as Heater mentions, most released IDEs and system builds use a released compiler version, not a Alpha, Beta or experimental version. A variant of gcc 4 is a valid compiler for current IDE's and command-line compiles.
As far as what compiler SimpleIDE executes, it should not matter as long as the input files & options are compatible and that the compiled output is compatible for the loader.
On the previous issue mentioned (including simpletools in your command-line compiles) you might be able to just compile the portions of simpletools sources with its header file as part of your project. (I'm going to test this idea)... So, all hope should not be lost. There's usually a way to get what you need with a little help.
Ray,
I'm not sure really how this has been working out. GCC comes from here: https://www.gnu.org. You can check out the entire GCC history going back to 1987! There we see that GCC 5 is "experimental".
prop-gcc is an adaptation of GCC that generates Propeller code and provides tools and libraries. Clearly that adaptation will always be lagging behind the latest upstream releases of GCC.
Presumably the prop-gcc devs tack some more numbers onto the version to indicate a revision level of the base GCC version.
For example I have compilers here that call themselves "gcc-arm-none-eabi-4_8-2014q2" and "gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux" and so on.
David Betz,
I said GCC 5 is "experimental" based on this table from https://www.gnu.org/software/gcc/develop.html#timeline
VersionDEV-PHASEWhen5.0.0(experimental)during active development of GCC 5 (stage 1 to 3)5.0.1(prerelease)during the stabilization period of GCC 56.0.0(experimental)during active development of GCC 6 (stage 1 to 3)5.1.0for the first release from the GCC 5 branch5.1.1during development on the branch post the 5.1.0 release5.2.0for the second release from the GCC 5 branch5.2.1during development on the branch post the 5.2.0 release6.0.1(prerelease)during the stabilization period of GCC 6...To summarize, the first release of GCC 5 will be GCC 5.1.0 while development snapshots will be GCC 5.0.0 and snapshots from the release branch GCC 5.n.1.
David Betz,
I said GCC 5 is "experimental" based on this table from https://www.gnu.org/software/gcc/develop.html#timeline
VersionDEV-PHASEWhen5.0.0(experimental)during active development of GCC 5 (stage 1 to 3)5.0.1(prerelease)during the stabilization period of GCC 56.0.0(experimental)during active development of GCC 6 (stage 1 to 3)5.1.0for the first release from the GCC 5 branch5.1.1during development on the branch post the 5.1.0 release5.2.0for the second release from the GCC 5 branch5.2.1during development on the branch post the 5.2.0 release6.0.1(prerelease)during the stabilization period of GCC 6...To summarize, the first release of GCC 5 will be GCC 5.1.0 while development snapshots will be GCC 5.0.0 and snapshots from the release branch GCC 5.n.1.
Yes, but they've already made the first release of GCC 5.1. Anyway, you're welcome to use GCC 4 if you want. Both are in the propeller-gcc repository.
Davis,
Ah, OK, that is cool.
As you know I'm always up for kicking the tyres of the new and experimental. Finding and reporting problems with it is usually the only way I can contribute. Presumably others would just like something that is known to be working and stable.
Davis,
Ah, OK, that is cool.
As you know I'm always up for kicking the tyres of the new and experimental. Finding and reporting problems with it is usually the only way I can contribute. Presumably others would just like something that is known to be working and stable.
One possible problem though is that we aren't on the GCC 5.1 branch. We are on the development mainline. If you build today, you'll get GCC 6 which is in development.
Davis,
Ah, OK, that is cool.
As you know I'm always up for kicking the tyres of the new and experimental. Finding and reporting problems with it is usually the only way I can contribute. Presumably others would just like something that is known to be working and stable.
One possible problem though is that we aren't on the GCC 5.1 branch. We are on the development mainline. If you build today, you'll get GCC 6 which is in development.
What does GCC6, or even GCC5 bring to the Propeller table? I am getting the impression that a lot of support and functionality for the Propeller is contained within propeller.h. I also get the impression that you could be working with something like gcc 3.0.1, and as long as propeller.h was stable and suitable, you could achieve the same usability results as you could by using GCC6 or GCC5. So, is there a widening functional gap between GCC6 and GCC4, which is what SimpleIDE RC2 is working with?
Ray
Davis,
Ah, OK, that is cool.
As you know I'm always up for kicking the tyres of the new and experimental. Finding and reporting problems with it is usually the only way I can contribute. Presumably others would just like something that is known to be working and stable.
One possible problem though is that we aren't on the GCC 5.1 branch. We are on the development mainline. If you build today, you'll get GCC 6 which is in development.
What does GCC6, or even GCC5 bring to the Propeller table? I am getting the impression that a lot of support and functionality for the Propeller is contained within propeller.h. I also get the impression that you could be working with something like gcc 3.0.1, and as long as propeller.h was stable and suitable, you could achieve the same usability results as you could by using GCC6 or GCC5. So, is there a widening functional gap between GCC6 and GCC4, which is what SimpleIDE RC2 is working with?
Ray
I'm not sure what changed from GCC4 to GCC5. Eric would have to answer that. However, I think the idea is that we don't want to get too far behind the current version of GCC since it will make updating hardware when we need to to get some bug fix that is only applied to later versions. The SimpleIDE releases have all used GCC4 so far although I don't know of any reason that they wouldn't work with later versions as long as you recompile the libraries.
Oh goody, even more experimental. It's possible you have just set me up for a weekend of prop-gcc building and testing
@Ray,
Propeller support aside, GCC is a pretty huge project comprising compilers for many languages and generating code for many processor architectures. Not to mention that the compiler itself has to run on many different architectures and platforms. Adding Propeller support is but a mere detail on that scale. In fact the GCC guys probably don't even know of prop-gcc yet.
I get the feeling that in recent times GCC development has accelerated, perhaps due to the competition coming from the new kid on the block the Clang/LLVM compiler. The GCC code base seems to have been having a major over haul including adopting the use of C++ to write the compiler rather than C.
Now, perhaps few or none of those changes and improvements will be noticed by Propeller users, although I suspect optimizer and language feature improvements will be.
But going into the future it seems like a good idea if a new target support works with the most recent GCC versions. That way Propeller support may one day find itself in the main line GCC project. And we get all the new goodies coming down the pipe.
If one were to just stop at GCC 3 or 4 the prop-gcc would always be stuck in the past out on it's own and eventually unsupported.
Anyway, as far as SimpleIDE is concerned it should not care what compiler you use with it. Perhaps one day
there will be a Clang/LLVM target for the Propeller.
I heard someone throw it out as an idea (clang/llvm). Or someone mentioned that it was considered as an idea when PropGCC was in the idea phase. I don't recall seeing anyone make any promises or even hints that they would produce such a port.
@Rsadeika, along with propeller.h, GCC has to know how to convert int x = 5; x += 1 into PASM. As I understand it, that is the real work in porting a compiler to a new architecture. I would imagine the propeller.h file is a negligible fraction of the work.
I heard someone throw it out as an idea (clang/llvm). Or someone mentioned that it was considered as an idea when PropGCC was in the idea phase. I don't recall seeing anyone make any promises or even hints that they would produce such a port.
Just a first pass at compiling a small program that uses simpletools, on the command line... This compile enabled pruning (-ffunction-sections -fdata-sections -Wl,--gc-sections) to optimize the size, a bit. Notice how including simpletools pulled-in more of the SimpleIDE libraries (simpletext & simplei2c). Since the project does not print or use i2c, simpletools.h could be modified to not include the other libs. Note: This used the previously-compiled libraries from the Learn-Folder-Updated-2014-11-07.zipside download.>
$ /Applications/SimpleIDE.app/Contents/propeller-gcc/bin/propeller-elf-gcc -I . -L . -I "<<SimpleIDEPATH>>/Learn/Simple Libraries/Utility/libsimpletools" -L "<<SimpleIDEPATH>>/SimpleIDE/Learn/Simple Libraries/Utility/libsimpletools/cmm/" -I "<<SimpleIDEPATH>>/Learn/Simple Libraries/TextDevices/libsimpletext" -L "<<SimpleIDEPATH>>/Learn/Simple Libraries/TextDevices/libsimpletext/cmm/" -I "<<SimpleIDEPATH>>/Learn/Simple Libraries/Protocol/libsimplei2c" -L "<<SimpleIDEPATH>>/Learn/Simple Libraries/Protocol/libsimplei2c/cmm/" -o cmm/simTest.elf -Os -mcmm -Wall -m32bit-doubles -fno-exceptions -std=c99 -ffunction-sections -fdata-sections -Wl,--gc-sections simTest.c -lsimpletools -lsimpletext -lsimplei2c
$propeller-load -s cmm/simTest.elf
$ ls -al cmmtotal 32drwxr-xr-x+ 4 altergator admin 136 Jul 15 21:23 .drwxr-xr-x+ 5 altergator admin 170 Jul 15 20:49 ..-rw-r--r--+ 1 altergator admin 2424 Jul 15 21:13 simTest.binary-rwxr-xr-x+ 1 altergator admin 8406 Jul 15 21:23 simTest.elfAfter editing simpletools.h to remove the includes for simpletext & simplei2c and removing all references to i2c, I could re-build with this simpler command-line:$propeller-elf-gcc -I . -L . -I "/Users/altergator/Documents/SimpleIDE/Learn/Simple Libraries/Utility/libsimpletools" -L "<<SimpleIDEPATH>>/Learn/Simple Libraries/Utility/libsimpletools/cmm/" -o cmm/simTest.elf -Os -mcmm -Wall -m32bit-doubles -fno-exceptions -std=c99 -ffunction-sections -fdata-sections -Wl,--gc-sections simTest.c -lsimpletools
$propeller-load -s cmm/simTest.elf
$ls -al cmmtotal 32drwxr-xr-x+ 4 altergator admin 136 Jul 16 09:26 .drwxr-xr-x+ 5 altergator admin 170 Jul 15 20:49 ..-rw-r--r--+ 1 altergator admin 2424 Jul 16 09:27 simTest.binary-rwxr-xr-x+ 1 altergator admin 8406 Jul 16 09:26 simTest.elf
So, with a little work (& no make file mucking-about) you can use the Learn libraries from the command line.
Comments
For decades the worst you had to do was change to a projects source directory and type "make".
Then came the GNU guys with their auto tools.
Then came the Qt guys with the qmake.
It just gets worse and worse. Take a look at the chaos in the web development world. They seem to have come up with a thousand different ways to build anything in recent years!
Anything to do with SimpleIDE should be as simple as the Arduino IDE. Open IDE, type code, hit the button, it runs.
If not there is something very not "simple" about it.
SimpleIDE seems to work exactly like Arduino (from end user perspective - I mean to imply nothing about it's inner code). Just like the Arduino IDE, if you want to use Arduino code or libraries without the IDE, it is HORRIBLY difficult. I tried numerous times and gave up. Same with SimpleIDE - none of the libraries in SimpleIDE were made to be used outside of SimpleIDE. Very much a pain in my...
So, no one likes CMake. Stop complaining, download a PropWare binary distribution, and use whatever tool you're comfortable with to link against the complete static library for Simple that comes in the download.
Look, it's so easy, you can just click this one link and it will immediately download libSimple_xmmc.a. Woooooo.
Well, at least my "Who even knows what cmake is?" part was not tongue-in-check. I had never heard of it before.
...none of the libraries in SimpleIDE were made to be used outside of SimpleIDE. Very much a pain in my...
That is perhaps the crux of my gripe. How can that ever happen? Given that the size of code we are dealing with that can be loaded to the Propeller. And give the huge speed and memory space of the machines we are using to build that code. Then the is no reason for any pre-compiled binary libraries.
I should be able to drop the source code of any "library" into my project some where, perhaps set a path to it, and a simple make would get my whole project built in seconds. Especially after I have done it the first time. Heck, for the Propeller, code sizes are so small that even make is not required, just rebuild everything every time.
That is the way it works in Spin is it not?
Anyway, I will try to find time to catch up with the recent SimpleIDE situation and your PropWare. Even if I have to use cmake
At a theoretical level, I'm 100% in agreement. It takes so little time to build this stuff for the propeller, libraries and incremental builds are a total joke. You get better optimization with a single translation unit as well. Life would be way better if we built a new build system from scratch to work like that.
But then... why reinvent the wheel? Libraries are a hassle... but that hassle has already been handled by existing build systems. The optimization is better with a single translation unit, but not by much (so long as the correct flags are passed in, which a build system can do without issue). Incremental builds sure are overkill... but they don't hurt anything do they?
I don't know of any existing build system that easily pulls source files in from multiple directories and compiles with a single translation unit. That means you're either writing your own build system, using multiple translation units, or manually copying files into your build tree so you can use "gcc *.c -o a.out". With Simple being set up the way it is, the third option is very painful.
Now we're left with writing your own build system, or use an existing, and the only advantage to writing your own is marginally better optimization.
So, in theory, I agree with you. We shouldn't need anything this complex. But what we do need is:
- cross platform
- well documented
- flexible (works at the command line or in an IDE)
- Doesn't force me into a specific editor/IDE
- Ease of use
- Control over compilation flags
- Expectation of continued support and maintenance
At this point.... dealing with libraries looks like a small price to pay for all thatHmmm...I certainly was not calling for yet another build system. In general I'm dead set against
"yet another anything", whatever it is. Unless it has some really compelling reason to exist.
I certainly said nothing about stuffing all the sources into a single translation unit. Although I
have often wondered if that might not be such a bad idea.
I think a lot of this mess comes from the nature of C/C++ itself. With it's header files, compiler, linker etc.
The language itself has no idea about "modules". You have to specify what you want included in your build
outside of the language itself. Languages like Ada, Python and so on have a better handle on this. Specify an "import" something in your source file and it is made so. No need for make or other means of finding files to build.
I agree with all your bullet points. SimpleIDE and prop-gcc meet some of them so far:
cross platform - check
well documented - pretty good
flexible (works at the command line or in an IDE) -
Doesn't force me into a specific editor/IDE - not sure, I used Make files.
Ease of use - clearly not judging by the number of posters here with problems.
Control over compilation flags - No, pre-compiled libs don't have that.
Expectation of continued support and maintenance - we shall see...
All in all not bad. Not suitable for noobs though.
cross platform - check
well documented - pretty good
flexible (works at the command line or in an IDE) -
Doesn't force me into a specific editor/IDE - not sure, I used Make files.
Ease of use - clearly not judging by the number of posters here with problems.
Control over compilation flags - No, pre-compiled libs don't have that.
Expectation of continued support and maintenance - we shall see...
Heh! Funny, I see it pretty different:
My checklist for SimpleIDE looks like
- Cross platform: check
- Well documented - check
- flexible - FAIL (the build system is tightly integrated with the GUI, so you have no control over the editor and can not use its build system to compile at the command line)
- Specific editor/IDE - FAIL
- Ease of use - check with flying colors
- Control over compilation flags - Marginal - you can control the flags on your own source code but not on a per-file basis
- Support/Maintenance - Heh... we shall see indeed. Not much has happened lately, that's for sure.
Re: vpathThat's cool! I've never heard of that. It could make building a project with the Simple libraries a bit easier.It has been mentioned that their is work being done with GCC6, so when SimpleIDE gets to ver 1 it will be some four years behind PropGCC? Of course I am guessing at all of this because I do not know what the inner workings of PropGCC/SimpleIDE are.
So now I think we need somebody like a jazzed to come along and start maybe something like OpenIDE, which would be using to the latest PropGCC version, and deliver with the latest, most useable functions and drivers. I also went back to look at the Learn folder, there are a lot of drivers there, too bad most of it is tied to simpletools.
Stepping back in time, maybe fours years, when PropGCC was first introduced, did anybody foresee the situation that we are in now, as it is being discussed?
Ray
You're joking right? Propeller Tool, BST, SimpleIDE, PropellerIDE and Parallax IDE aren't enough for you? You want another? Oh, here, maybe OmniaCreator will please you?
Ray
I do appreciate your frustration but a couple of points need making about the situation.
1) On my new and shiny Debian 8 installation here the gcc is at version 4.9.2. Pretty much no one in the world is using any version 5. If this is good enough to build a whole Linux OS and all it's apps I'm sure it's fine for Prop development.
2) That 4.9.2 GCC version was released on June 26, 2015 that is hardly "old". GCC version 5 only started development about 6 months ago. https://www.gnu.org/software/gcc/develop.html#timeline
3) SimpleIDE, and indeed any IDE, should not be dependent on or dictate any particular GCC version. In fact I don't believe it is.
Ray
I think Spin2 would have to have a lot of C features to eliminate any need for PropGCC on the Prop2. It would essentially need to become a subset of C++. I doubt if that will happen. In fact I haven't heard of any new features proposed for Spin on the P2. Parallax has only stated that it will support Spin on the P2.
There have been many enhancements proposed in the past for Spin on the P1. Maybe some of them will added to Spin2, and I don't see why they couldn't be implemented for the P1 as well.
Ray
I'm not sure really how this has been working out. GCC comes from here: https://www.gnu.org. You can check out the entire GCC history going back to 1987! There we see that GCC 5 is "experimental".
prop-gcc is an adaptation of GCC that generates Propeller code and provides tools and libraries. Clearly that adaptation will always be lagging behind the latest upstream releases of GCC.
Presumably the prop-gcc devs tack some more numbers onto the version to indicate a revision level of the base GCC version.
For example I have compilers here that call themselves "gcc-arm-none-eabi-4_8-2014q2" and "gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux" and so on.
SimpleIDE RC2 contains/installs propeller-elf-gcc version: propellergcc_v1_0_0_2435 4.6.1. That's the official propgcc release as far as I know. And, as Heater mentions, most released IDEs and system builds use a released compiler version, not a Alpha, Beta or experimental version. A variant of gcc 4 is a valid compiler for current IDE's and command-line compiles.
As far as what compiler SimpleIDE executes, it should not matter as long as the input files & options are compatible and that the compiled output is compatible for the loader.
On the previous issue mentioned (including simpletools in your command-line compiles) you might be able to just compile the portions of simpletools sources with its header file as part of your project. (I'm going to test this idea)... So, all hope should not be lost. There's usually a way to get what you need with a little help.
dgately
I'm not sure really how this has been working out. GCC comes from here: https://www.gnu.org. You can check out the entire GCC history going back to 1987! There we see that GCC 5 is "experimental".
prop-gcc is an adaptation of GCC that generates Propeller code and provides tools and libraries. Clearly that adaptation will always be lagging behind the latest upstream releases of GCC.
Presumably the prop-gcc devs tack some more numbers onto the version to indicate a revision level of the base GCC version.
For example I have compilers here that call themselves "gcc-arm-none-eabi-4_8-2014q2" and "gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux" and so on.
I'm not sure about GCC 5 being "experimental". This page says GCC 5.1 was released on April 22, 2015.
https://www.gnu.org/software/gcc/releases.html
I said GCC 5 is "experimental" based on this table from https://www.gnu.org/software/gcc/develop.html#timeline
VersionDEV-PHASEWhen5.0.0(experimental)during active development of GCC 5 (stage 1 to 3)5.0.1(prerelease)during the stabilization period of GCC 56.0.0(experimental)during active development of GCC 6 (stage 1 to 3)5.1.0for the first release from the GCC 5 branch5.1.1during development on the branch post the 5.1.0 release5.2.0for the second release from the GCC 5 branch5.2.1during development on the branch post the 5.2.0 release6.0.1(prerelease)during the stabilization period of GCC 6...To summarize, the first release of GCC 5 will be GCC 5.1.0 while development snapshots will be GCC 5.0.0 and snapshots from the release branch GCC 5.n.1.
I said GCC 5 is "experimental" based on this table from https://www.gnu.org/software/gcc/develop.html#timeline
VersionDEV-PHASEWhen5.0.0(experimental)during active development of GCC 5 (stage 1 to 3)5.0.1(prerelease)during the stabilization period of GCC 56.0.0(experimental)during active development of GCC 6 (stage 1 to 3)5.1.0for the first release from the GCC 5 branch5.1.1during development on the branch post the 5.1.0 release5.2.0for the second release from the GCC 5 branch5.2.1during development on the branch post the 5.2.0 release6.0.1(prerelease)during the stabilization period of GCC 6...To summarize, the first release of GCC 5 will be GCC 5.1.0 while development snapshots will be GCC 5.0.0 and snapshots from the release branch GCC 5.n.1.
Yes, but they've already made the first release of GCC 5.1. Anyway, you're welcome to use GCC 4 if you want. Both are in the propeller-gcc repository.
Ah, OK, that is cool.
As you know I'm always up for kicking the tyres of the new and experimental. Finding and reporting problems with it is usually the only way I can contribute. Presumably others would just like something that is known to be working and stable.
Ah, OK, that is cool.
As you know I'm always up for kicking the tyres of the new and experimental. Finding and reporting problems with it is usually the only way I can contribute. Presumably others would just like something that is known to be working and stable.
One possible problem though is that we aren't on the GCC 5.1 branch. We are on the development mainline. If you build today, you'll get GCC 6 which is in development.
Ah, OK, that is cool.
As you know I'm always up for kicking the tyres of the new and experimental. Finding and reporting problems with it is usually the only way I can contribute. Presumably others would just like something that is known to be working and stable.
One possible problem though is that we aren't on the GCC 5.1 branch. We are on the development mainline. If you build today, you'll get GCC 6 which is in development.
What does GCC6, or even GCC5 bring to the Propeller table? I am getting the impression that a lot of support and functionality for the Propeller is contained within propeller.h. I also get the impression that you could be working with something like gcc 3.0.1, and as long as propeller.h was stable and suitable, you could achieve the same usability results as you could by using GCC6 or GCC5. So, is there a widening functional gap between GCC6 and GCC4, which is what SimpleIDE RC2 is working with?
Ray
Ah, OK, that is cool.
As you know I'm always up for kicking the tyres of the new and experimental. Finding and reporting problems with it is usually the only way I can contribute. Presumably others would just like something that is known to be working and stable.
One possible problem though is that we aren't on the GCC 5.1 branch. We are on the development mainline. If you build today, you'll get GCC 6 which is in development.
What does GCC6, or even GCC5 bring to the Propeller table? I am getting the impression that a lot of support and functionality for the Propeller is contained within propeller.h. I also get the impression that you could be working with something like gcc 3.0.1, and as long as propeller.h was stable and suitable, you could achieve the same usability results as you could by using GCC6 or GCC5. So, is there a widening functional gap between GCC6 and GCC4, which is what SimpleIDE RC2 is working with?
Ray
I'm not sure what changed from GCC4 to GCC5. Eric would have to answer that. However, I think the idea is that we don't want to get too far behind the current version of GCC since it will make updating hardware when we need to to get some bug fix that is only applied to later versions. The SimpleIDE releases have all used GCC4 so far although I don't know of any reason that they wouldn't work with later versions as long as you recompile the libraries.
Oh goody, even more experimental. It's possible you have just set me up for a weekend of prop-gcc building and testing
@Ray,
Propeller support aside, GCC is a pretty huge project comprising compilers for many languages and generating code for many processor architectures. Not to mention that the compiler itself has to run on many different architectures and platforms. Adding Propeller support is but a mere detail on that scale. In fact the GCC guys probably don't even know of prop-gcc yet.
I get the feeling that in recent times GCC development has accelerated, perhaps due to the competition coming from the new kid on the block the Clang/LLVM compiler. The GCC code base seems to have been having a major over haul including adopting the use of C++ to write the compiler rather than C.
There are a ton of new features in GCC 5 including optimizer improvements, new languages and language standards support, and so on. You can get a feel for it all here: https://gcc.gnu.org/gcc-5/changes.html and here: https://gcc.gnu.org/gcc-6/changes.html
Now, perhaps few or none of those changes and improvements will be noticed by Propeller users, although I suspect optimizer and language feature improvements will be.
But going into the future it seems like a good idea if a new target support works with the most recent GCC versions. That way Propeller support may one day find itself in the main line GCC project. And we get all the new goodies coming down the pipe.
If one were to just stop at GCC 3 or 4 the prop-gcc would always be stuck in the past out on it's own and eventually unsupported.
Anyway, as far as SimpleIDE is concerned it should not care what compiler you use with it. Perhaps one day
there will be a Clang/LLVM target for the Propeller.
@Rsadeika, along with propeller.h, GCC has to know how to convert int x = 5; x += 1 into PASM. As I understand it, that is the real work in porting a compiler to a new architecture. I would imagine the propeller.h file is a negligible fraction of the work.
You mean http://forums.parallax.com/search?Search=propeLLVM?
$ /Applications/SimpleIDE.app/Contents/propeller-gcc/bin/propeller-elf-gcc -I . -L . -I "<<SimpleIDEPATH>>/Learn/Simple Libraries/Utility/libsimpletools" -L "<<SimpleIDEPATH>>/SimpleIDE/Learn/Simple Libraries/Utility/libsimpletools/cmm/" -I "<<SimpleIDEPATH>>/Learn/Simple Libraries/TextDevices/libsimpletext" -L "<<SimpleIDEPATH>>/Learn/Simple Libraries/TextDevices/libsimpletext/cmm/" -I "<<SimpleIDEPATH>>/Learn/Simple Libraries/Protocol/libsimplei2c" -L "<<SimpleIDEPATH>>/Learn/Simple Libraries/Protocol/libsimplei2c/cmm/" -o cmm/simTest.elf -Os -mcmm -Wall -m32bit-doubles -fno-exceptions -std=c99 -ffunction-sections -fdata-sections -Wl,--gc-sections simTest.c -lsimpletools -lsimpletext -lsimplei2c
$propeller-load -s cmm/simTest.elf
$ ls -al cmmtotal 32drwxr-xr-x+ 4 altergator admin 136 Jul 15 21:23 .drwxr-xr-x+ 5 altergator admin 170 Jul 15 20:49 ..-rw-r--r--+ 1 altergator admin 2424 Jul 15 21:13 simTest.binary-rwxr-xr-x+ 1 altergator admin 8406 Jul 15 21:23 simTest.elfAfter editing simpletools.h to remove the includes for simpletext & simplei2c and removing all references to i2c, I could re-build with this simpler command-line:$propeller-elf-gcc -I . -L . -I "/Users/altergator/Documents/SimpleIDE/Learn/Simple Libraries/Utility/libsimpletools" -L "<<SimpleIDEPATH>>/Learn/Simple Libraries/Utility/libsimpletools/cmm/" -o cmm/simTest.elf -Os -mcmm -Wall -m32bit-doubles -fno-exceptions -std=c99 -ffunction-sections -fdata-sections -Wl,--gc-sections simTest.c -lsimpletools
$propeller-load -s cmm/simTest.elf
$ls -al cmmtotal 32drwxr-xr-x+ 4 altergator admin 136 Jul 16 09:26 .drwxr-xr-x+ 5 altergator admin 170 Jul 15 20:49 ..-rw-r--r--+ 1 altergator admin 2424 Jul 16 09:27 simTest.binary-rwxr-xr-x+ 1 altergator admin 8406 Jul 16 09:26 simTest.elf
So, with a little work (& no make file mucking-about) you can use the Learn libraries from the command line.
dgately