Shop OBEX P1 Docs P2 Docs Learn Events
Windows and PropGCC without SimpleIDE — Parallax Forums

Windows and PropGCC without SimpleIDE

DavidZemonDavidZemon Posts: 2,973
edited 2016-01-11 03:36 in Propeller 1
I'm working on PropWare's final touches before the first ever "official release". One of my biggest pain points has been Windows. I would like to use GNU Make, but I only know of two versions:

1) Easy download, straight from GNU, the binary was built in 2006. YIKES! (http://gnuwin32.sourceforge.net/packages/make.htm)
2) Part of MinGW's MSYS. Much more recent, but comes with a ton of bloat for a tiny program

The first option works great sometimes. But if your PATH variable contains any parenthesis, it hits an exception and dies. Not good for anyone on a 64-bit machine with a "Program Files (x86)" folder.

I gave Ninja a shot, but CMake's Ninja files are hiding stdout, which isn't good if you're trying to invoke propeller-load as a build target! :(

Perhaps this is why Parallax forced jazzed to build SimpleIDE without using Makefiles.

I need suggestions. PropWare requires CMake and CMake requires a secondary build system like Make... who has ideas for Windows?

Comments

  • Do we have access to the source from the 2006 GNUwin32 version? You're pretty a good codesmith, perhaps a little digging into that source might fix the PATH/paren issue. Conversely, cut the bloat out of the MinGW version? I'm just throwing ideas out there...

    -Mike R.
  • make works fine under Cygwin, and that's with PropGCC in a (x86) folder.
  • It is certainly an option. Never actually occurred to me lol. Not sure how big the gnu version is - hopefully small enough such that it isn't a big deal. The MinGW version... I'll look into it, but I suspect it's a behemoth.
  • Dave Hein wrote: »
    make works fine under Cygwin, and that's with PropGCC in a (x86) folder.

    Cygwin is definitely an interesting option. Is there any way to get just Make out of cygwin without requiring all of Cygwin?
  • From this URL (http://www.kitware.com/blog/home/post/434) I may grab the version Cygwin Make listed there (http://www.cmake.org/files/cygwin/make.exe) and see if it works. If it does, that will be a lot easier.
  • No luck with the Cygwin. I tried copying the exe and required DLLs from a fresh Cygwin install and from the link above and neither worked - both hit exceptions similar to the exe from 2006. Bleh :(
  • DavidZemonDavidZemon Posts: 2,973
    edited 2016-01-12 02:42
    WOOHOOO! Make from MinGW's MSYS requires only two DLLs and it works. I'm simply going to include these as part of the PropWare source code and ship them with binary installations. This will be much easier than anything I've come with so far. And it works with PropGCC installed via SimpleIDE in the "Program Files (x86)" folder.

    @Dave Hein,
    I wish I knew why it worked on your machine and not mine :(. Perhaps something different with our PATH variables or some other aspect of our environment? I'm also running Windoze 10.

    --EDIT--
    False alarm. I tried it on another Windows box and it failed. It needs /bin/sh which only worked the first time around because I had GitBash installed.
  • DavidZemonDavidZemon Posts: 2,973
    edited 2016-01-12 02:51
    I'm re-thinking this. I need opinions.

    I hypothesize that...
    anyone incapable or unwilling to install Cygwin & Make will also likely be incapable or unwilling to use PropWare's build system at the command line. That person is now incapable of utilizing PropWare's build system because, for all intents and purposes, it must be used at the command line (can't easily debug from within an IDE since debugging is done from propeller-load, not gdb)

    So perhaps a better idea is to...
    provide detailed and well-tested instructions for utilizing PropWare's libraries in SimpleIDE. I already provide a zip with all static libraries and header files, so this shouldn't be too big of a task.

    Long term, perhaps SimpleIDE could ship with PropWare's libraries, and the build system could be simplified from the current phenominal but magical black box that no one but jazzed understands.
  • DavidZemon wrote: »
    Long term, perhaps SimpleIDE could ship with PropWare's libraries, and the build system could be simplified from the current phenominal but magical black box that no one but jazzed understands.
    I think the way the build system works was mandated by Parallax. Maybe they have a spec that Steve used when constructing his implementation of it? I'd love to understand how it works because I'd like to create a way to automatically build all of the Simple Libraries. Right now, it's a manual process.

  • David Betz wrote: »
    DavidZemon wrote: »
    Long term, perhaps SimpleIDE could ship with PropWare's libraries, and the build system could be simplified from the current phenominal but magical black box that no one but jazzed understands.
    I think the way the build system works was mandated by Parallax. Maybe they have a spec that Steve used when constructing his implementation of it? I'd love to understand how it works because I'd like to create a way to automatically build all of the Simple Libraries. Right now, it's a manual process.

    I hope Parallax have a spec for how it works. I hope it's documented in more places than Steve's head and the codebase itself.

    But if the libraries were built prior to packaging SimpleIDE, the build system wouldn't have to be so complicated. PropWare has ~100 lines of CMake script that iterate through the propsideworkspace folder from Git and determine all source and header files that are part of the Simple Libraries. The source files are compiled into static libraries, and the headers are then flattened into a single directory. Simple :)

    Of course, I'm sure Parallax also want users to be able to browse the source code - so the Learn folder could still be provided via SimpleIDE... but it doesn't have to be searched during the build process.
  • DavidZemon wrote: »
    David Betz wrote: »
    DavidZemon wrote: »
    Long term, perhaps SimpleIDE could ship with PropWare's libraries, and the build system could be simplified from the current phenominal but magical black box that no one but jazzed understands.
    I think the way the build system works was mandated by Parallax. Maybe they have a spec that Steve used when constructing his implementation of it? I'd love to understand how it works because I'd like to create a way to automatically build all of the Simple Libraries. Right now, it's a manual process.

    I hope Parallax have a spec for how it works. I hope it's documented in more places than Steve's head and the codebase itself.

    But if the libraries were built prior to packaging SimpleIDE, the build system wouldn't have to be so complicated. PropWare has ~100 lines of CMake script that iterate through the propsideworkspace folder from Git and determine all source and header files that are part of the Simple Libraries. The source files are compiled into static libraries, and the headers are then flattened into a single directory. Simple :)

    Of course, I'm sure Parallax also want users to be able to browse the source code - so the Learn folder could still be provided via SimpleIDE... but it doesn't have to be searched during the build process.
    Check with Andy Lindsay from Parallax about how he wants to handle this. He might like your cmake solution. I think there is a desire to be able to build the libraries in some sort of automated way. The problem will be if any changes are needed in SimpleIDE to support this.

  • Maybe you can kludge this and put a wrapper around GNU make. Just feed it the hashed short filenames. This will work on all Win boxen, save those that have that file name generate disabled for performance. (There will be very few of those in the wild)
  • potatoheadpotatohead Posts: 10,261
    edited 2016-01-12 04:21
    BTW, I'll put the same suggestion here as I did for Ross' Catalina. Provide a program shortcut for a proper command line, all options set. "PropWare Command Prompt"

    I work with an enterprise app that requires a few things get done for a command prompt to really work. They found it easier to just supply one rather than take on all the many support requests associated with setting one up. There is a seemingly endless set of things people can and will do somehow to fail on the standard prompt.

    That way, there is one known good reference case users can use to identify if their environment is a problem or not.
  • potatohead wrote: »
    Maybe you can kludge this and put a wrapper around GNU make. Just feed it the hashed short filenames. This will work on all Win boxen, save those that have that file name generate disabled for performance. (There will be very few of those in the wild)

    Heh, that would be nice. But the makefiles are generated by cmake - I can't mess with them in that way. Not without abandoning cmake entirely
  • David Betz wrote: »
    DavidZemon wrote: »
    David Betz wrote: »
    DavidZemon wrote: »
    Long term, perhaps SimpleIDE could ship with PropWare's libraries, and the build system could be simplified from the current phenominal but magical black box that no one but jazzed understands.
    I think the way the build system works was mandated by Parallax. Maybe they have a spec that Steve used when constructing his implementation of it? I'd love to understand how it works because I'd like to create a way to automatically build all of the Simple Libraries. Right now, it's a manual process.

    I hope Parallax have a spec for how it works. I hope it's documented in more places than Steve's head and the codebase itself.

    But if the libraries were built prior to packaging SimpleIDE, the build system wouldn't have to be so complicated. PropWare has ~100 lines of CMake script that iterate through the propsideworkspace folder from Git and determine all source and header files that are part of the Simple Libraries. The source files are compiled into static libraries, and the headers are then flattened into a single directory. Simple :)

    Of course, I'm sure Parallax also want users to be able to browse the source code - so the Learn folder could still be provided via SimpleIDE... but it doesn't have to be searched during the build process.
    Check with Andy Lindsay from Parallax about how he wants to handle this. He might like your cmake solution. I think there is a desire to be able to build the libraries in some sort of automated way. The problem will be if any changes are needed in SimpleIDE to support this.
    I checked with Andy and there is no build system design document. Essentially, SimpleIDE does a recursive search for #include statements starting at the root file and uses that to determine what libraries need to be included in the build.

  • potatohead wrote: »
    BTW, I'll put the same suggestion here as I did for Ross' Catalina. Provide a program shortcut for a proper command line, all options set. "PropWare Command Prompt"

    I work with an enterprise app that requires a few things get done for a command prompt to really work. They found it easier to just supply one rather than take on all the many support requests associated with setting one up. There is a seemingly endless set of things people can and will do somehow to fail on the standard prompt.

    That way, there is one known good reference case users can use to identify if their environment is a problem or not.

    That's a really good idea. I'll see about implementing that!
  • David Betz wrote: »
    I checked with Andy and there is no build system design document. Essentially, SimpleIDE does a recursive search for #include statements starting at the root file and uses that to determine what libraries need to be included in the build.

    The lack of a spec sheet could imply to me that they (Parallax) don't care? Or they assumed emails to and from Steve would be sufficient?

    In any case, I'm not too interested in tackling SimpleIDE changes at the moment - just pipe dreams. I gave up trying to convert SimpleIDE to use PropWare as a build system. I was able to make some progress there, but the work involved was a dark rabbit hole with no end in sight, and no users requesting said work either.
  • DavidZemon wrote: »
    David Betz wrote: »
    I checked with Andy and there is no build system design document. Essentially, SimpleIDE does a recursive search for #include statements starting at the root file and uses that to determine what libraries need to be included in the build.

    The lack of a spec sheet could imply to me that they (Parallax) don't care? Or they assumed emails to and from Steve would be sufficient?

    In any case, I'm not too interested in tackling SimpleIDE changes at the moment - just pipe dreams. I gave up trying to convert SimpleIDE to use PropWare as a build system. I was able to make some progress there, but the work involved was a dark rabbit hole with no end in sight, and no users requesting said work either.
    That's too bad. I thought you had already accomplished getting SimpleIDE to work with PropWare. I guess I haven't been paying close attention. :-(

  • David Betz wrote: »
    DavidZemon wrote: »
    David Betz wrote: »
    I checked with Andy and there is no build system design document. Essentially, SimpleIDE does a recursive search for #include statements starting at the root file and uses that to determine what libraries need to be included in the build.

    The lack of a spec sheet could imply to me that they (Parallax) don't care? Or they assumed emails to and from Steve would be sufficient?

    In any case, I'm not too interested in tackling SimpleIDE changes at the moment - just pipe dreams. I gave up trying to convert SimpleIDE to use PropWare as a build system. I was able to make some progress there, but the work involved was a dark rabbit hole with no end in sight, and no users requesting said work either.
    That's too bad. I thought you had already accomplished getting SimpleIDE to work with PropWare. I guess I haven't been paying close attention. :-(

    "getting SimpleIDE to work" is pretty ambiguous. You are right that I had SimpleIDE invoking PropWare to build a project and run it in the GUI terminal, but that was about the extent that I'd completed anything. After that, I spent many hours trying to re-write its project model to work better with PropWare (so that you could create new projects, modify project settings, etc) and that's when I found myself deep, deep into the rabbit hole... and no way to know how deep it went. It's far from the worst codebase I've seen by a long shot, but it's also not perfect. So with no one to provide guidance, no written requirements for what it's supposed to do, and no one having ever requested I do the work in the first place, I just gave up and am now concentrating on PropWare. I was terrified that I was going to pour an ungodly number of hours into it, present my work to Parallax, and them say they like SimpleIDE just the way it is.
  • DavidZemon wrote: »
    David Betz wrote: »
    DavidZemon wrote: »
    David Betz wrote: »
    I checked with Andy and there is no build system design document. Essentially, SimpleIDE does a recursive search for #include statements starting at the root file and uses that to determine what libraries need to be included in the build.

    The lack of a spec sheet could imply to me that they (Parallax) don't care? Or they assumed emails to and from Steve would be sufficient?

    In any case, I'm not too interested in tackling SimpleIDE changes at the moment - just pipe dreams. I gave up trying to convert SimpleIDE to use PropWare as a build system. I was able to make some progress there, but the work involved was a dark rabbit hole with no end in sight, and no users requesting said work either.
    That's too bad. I thought you had already accomplished getting SimpleIDE to work with PropWare. I guess I haven't been paying close attention. :-(

    "getting SimpleIDE to work" is pretty ambiguous. You are right that I had SimpleIDE invoking PropWare to build a project and run it in the GUI terminal, but that was about the extent that I'd completed anything. After that, I spent many hours trying to re-write its project model to work better with PropWare (so that you could create new projects, modify project settings, etc) and that's when I found myself deep, deep into the rabbit hole... and no way to know how deep it went. It's far from the worst codebase I've seen by a long shot, but it's also not perfect. So with no one to provide guidance, no written requirements for what it's supposed to do, and no one having ever requested I do the work in the first place, I just gave up and am now concentrating on PropWare. I was terrified that I was going to pour an ungodly number of hours into it, present my work to Parallax, and them say they like SimpleIDE just the way it is.
    Makes complete sense to cut your losses.

  • Well, back to the topic of this post, I've just finished writing instructions for integrating PropWare with SimpleIDE. Find them here.
Sign In or Register to comment.