{"action":"created","issue":{"url":"https://api.github.com/repos/geany/geany-plugins/issues/277","labels_url":"https://api.github.com/repos/geany/geany-plugins/issues/277/labels{/name}","comments_url":"https://api.github.com/repos/geany/geany-plugins/issues/277/comments","events_url":"https://api.github.com/repos/geany/geany-plugins/issues/277/events","html_url":"https://github.com/geany/geany-plugins/pull/277","id":97633918,"number":277,"title":"Automake","user":{"login":"kugel-","id":564520,"avatar_url":"https://avatars.githubusercontent.com/u/564520?v=3","gravatar_id":"","url":"https://api.github.com/users/kugel-","html_url":"https://github.com/kugel-","followers_url":"https://api.github.com/users/kugel-/followers","following_url":"https://api.github.com/users/kugel-/following{/other_user}","gists_url":"https://api.github.com/users/kugel-/gists{/gist_id}","starred_url":"https://api.github.com/users/kugel-/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kugel-/subscriptions","organizations_url":"https://api.github.com/users/kugel-/orgs","repos_url":"https://api.github.com/users/kugel-/repos","events_url":"https://api.github.com/users/kugel-/events{/privacy}","received_events_url":"https://api.github.com/users/kugel-/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2015-07-28T07:18:08Z","updated_at":"2015-07-30T05:56:21Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/geany/geany-plugins/pulls/277","html_url":"https://github.com/geany/geany-plugins/pull/277","diff_url":"https://github.com/geany/geany-plugins/pull/277.diff","patch_url":"https://github.com/geany/geany-plugins/pull/277.patch"},"body":"This PR applies http://karelzak.blogspot.de/2013/02/non-recursive-automake.html combined with automakes %reldir% feature, in order to keep make -C $subdir working.\r\n\r\nI call this super-recursive automake. However, it is generally non-recursive, i.e. a make invocation in the root does not fork more make for the subdirs. It rather refers to the ability to transparently continue to make only subdirs with make -C $subdir (or cd $subdir; make).\r\n\r\nThe non-recursive part has to major advantages:\r\n  * depenencies are globally known to make; for G-P this means that plugins don't need to be build in a specific order, but simply as soon as possible\r\n  * in fact, all plugins can be built in parallell, given infinite CPU cores. But even on normal 4 core machine this gives a nice speed up of about 20s (timed make install: 1min:15s vs 1min:36s). It is most noticeable in the install phase which takes only 4s instead of 9s even on my SSD.\r\n\r\nFor this PR i haven't converted all plugins yet. Only the most trivial ones plugins git-changebar. Since a good third of the plugins is is still missing I expect the final speedup to be 30s (on my laptop).\r\n\r\nSee c8ea6d5 for a detailed description how the conversion is done, and also for the workaround we have to apply for an automake limitation (see foo_SHORTNAME)."},"comment":{"url":"https://api.github.com/repos/geany/geany-plugins/issues/comments/126194791","html_url":"https://github.com/geany/geany-plugins/pull/277#issuecomment-126194791","issue_url":"https://api.github.com/repos/geany/geany-plugins/issues/277","id":126194791,"user":{"login":"kugel-","id":564520,"avatar_url":"https://avatars.githubusercontent.com/u/564520?v=3","gravatar_id":"","url":"https://api.github.com/users/kugel-","html_url":"https://github.com/kugel-","followers_url":"https://api.github.com/users/kugel-/followers","following_url":"https://api.github.com/users/kugel-/following{/other_user}","gists_url":"https://api.github.com/users/kugel-/gists{/gist_id}","starred_url":"https://api.github.com/users/kugel-/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kugel-/subscriptions","organizations_url":"https://api.github.com/users/kugel-/orgs","repos_url":"https://api.github.com/users/kugel-/repos","events_url":"https://api.github.com/users/kugel-/events{/privacy}","received_events_url":"https://api.github.com/users/kugel-/received_events","type":"User","site_admin":false},"created_at":"2015-07-30T05:56:21Z","updated_at":"2015-07-30T05:56:21Z","body":"It's not a workaround, it's intended and absolutely my intention. Only generated Makefiles support all automake-specific targets automatically and the corresponding Makefile.am require no maintainance (each is the same 4 lines).\r\n\r\nStub makefiles (assuming you mean the ones that contain rules like \"all:\\nmake -C $(top_srcdir) $(plugin)/src/lib$(plugin).la\") on the other hand require extra maintainance and you have to insert rules to make automake happy (for various non-all targets like check, dist-clean, etc).\r\n\r\nNot sure what you mean with \"migration code\"? Do you mean the detailed description in the commit message?"}}