{"action":"created","issue":{"url":"https://api.github.com/repos/digego/extempore/issues/163","labels_url":"https://api.github.com/repos/digego/extempore/issues/163/labels{/name}","comments_url":"https://api.github.com/repos/digego/extempore/issues/163/comments","events_url":"https://api.github.com/repos/digego/extempore/issues/163/events","html_url":"https://github.com/digego/extempore/pull/163","id":52442983,"number":163,"title":"Build better with scons","user":{"login":"giorashh","id":10168572,"avatar_url":"https://avatars.githubusercontent.com/u/10168572?v=3","gravatar_id":"","url":"https://api.github.com/users/giorashh","html_url":"https://github.com/giorashh","followers_url":"https://api.github.com/users/giorashh/followers","following_url":"https://api.github.com/users/giorashh/following{/other_user}","gists_url":"https://api.github.com/users/giorashh/gists{/gist_id}","starred_url":"https://api.github.com/users/giorashh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/giorashh/subscriptions","organizations_url":"https://api.github.com/users/giorashh/orgs","repos_url":"https://api.github.com/users/giorashh/repos","events_url":"https://api.github.com/users/giorashh/events{/privacy}","received_events_url":"https://api.github.com/users/giorashh/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":10,"created_at":"2014-12-19T02:57:33Z","updated_at":"2015-01-21T21:56:06Z","closed_at":"2015-01-21T10:36:44Z","pull_request":{"url":"https://api.github.com/repos/digego/extempore/pulls/163","html_url":"https://github.com/digego/extempore/pull/163","diff_url":"https://github.com/digego/extempore/pull/163.diff","patch_url":"https://github.com/digego/extempore/pull/163.patch"},"body":"a-bit-early-and-not-precisely what was on @benswift 's [christmas list](https://github.com/digego/extempore/pull/158#issuecomment-67109544).\r\n\r\nThis is a stab at a fancier build system for extempore, based on the [scons](http://www.scons.org/) build tool, which uses Python as its underlying language. The provided build script:\r\n\r\n- Provides help via 'scons help', specifically a list of valid targets.\r\n- Checks EXT_LLVM_DIR or known homebrew locations for llvm.\r\n- Checks llvm version.\r\n- Checks that patches have been applied to 3d party libs (llvm) using md5 hashes.\r\n- (Should) Support multiple platforms (Linux, OSX, Windows?).\r\n- Compiles (and cleans) extempore binary.\r\n- Compiles (and cleans) stdlib/stdlib-core/stdlib-external.\r\n- Provides a target for running the tests.\r\n- Allows compilation of specified stdlib files only. See 'scons help'\r\n- Extracts dependency information from stdlib components (no parsing, just regexes).\r\n- Supports parallel builds (with -j N) of stdlib, using dependency info to figure out compilation order.\r\n- Caches all build artifacts (stdlib included).\r\n- Supports command line flags (see --help for list, 'scons help' for example)\r\n\r\nChoosing a build tool is invariably a contentious issue. All I can say is my experience with scons has been nothing but positive and the documentation has been top notch as well. I've looked at waf and CMake too and prefer scons better so far.\r\n\r\nTested on Fedora 21 and expect it to work out of the box on ubuntu. OSX should either work\r\nor be relatively painless to get working.\r\nWindows building should be possible, at least by converting the .bat files into scons' `env.Command`, but I haven't done it.\r\n\r\nIf you still want to hold out for CMake, I understand. This is a level-up on what the build system should be able to do.\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/digego/extempore/issues/comments/70929738","html_url":"https://github.com/digego/extempore/pull/163#issuecomment-70929738","issue_url":"https://api.github.com/repos/digego/extempore/issues/163","id":70929738,"user":{"login":"benswift","id":380241,"avatar_url":"https://avatars.githubusercontent.com/u/380241?v=3","gravatar_id":"","url":"https://api.github.com/users/benswift","html_url":"https://github.com/benswift","followers_url":"https://api.github.com/users/benswift/followers","following_url":"https://api.github.com/users/benswift/following{/other_user}","gists_url":"https://api.github.com/users/benswift/gists{/gist_id}","starred_url":"https://api.github.com/users/benswift/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/benswift/subscriptions","organizations_url":"https://api.github.com/users/benswift/orgs","repos_url":"https://api.github.com/users/benswift/repos","events_url":"https://api.github.com/users/benswift/events{/privacy}","received_events_url":"https://api.github.com/users/benswift/received_events","type":"User","site_admin":false},"created_at":"2015-01-21T21:56:06Z","updated_at":"2015-01-21T21:56:06Z","body":"Well, not necessarily.  I even rebased and did some work on it a few\ndays ago (which I haven't yet pushed to GH).  And also I was away over\nChristmas and NY.\n\nThe big problem at the moment is that it doesn't work on OSX.  It's not\nproviding the `-framework` list to clang, and even though I tried the\nscons `FRAMEWORKS` env var (as suggested by the docs) I couldn't get it\nto work.  I wonder if it doesn't thing they're ObjC++ files since they\ndon't have a `.mm` extension.\n\nSo it's not that I've given up, but until it builds on OSX I really\ncan't merge it.\n\ngiorashh writes:\n\n> I get the feeling you have your heart set on CMAKE. fair enough.\n>\n> ---\n> Reply to this email directly or view it on GitHub:\n> https://github.com/digego/extempore/pull/163#issuecomment-70816182"}}