{"action":"created","issue":{"url":"https://api.github.com/repos/nest/nest-simulator/issues/213","repository_url":"https://api.github.com/repos/nest/nest-simulator","labels_url":"https://api.github.com/repos/nest/nest-simulator/issues/213/labels{/name}","comments_url":"https://api.github.com/repos/nest/nest-simulator/issues/213/comments","events_url":"https://api.github.com/repos/nest/nest-simulator/issues/213/events","html_url":"https://github.com/nest/nest-simulator/pull/213","id":129791812,"number":213,"title":"Clean build system and installation","user":{"login":"tammoippen","id":4425925,"avatar_url":"https://avatars.githubusercontent.com/u/4425925?v=3","gravatar_id":"","url":"https://api.github.com/users/tammoippen","html_url":"https://github.com/tammoippen","followers_url":"https://api.github.com/users/tammoippen/followers","following_url":"https://api.github.com/users/tammoippen/following{/other_user}","gists_url":"https://api.github.com/users/tammoippen/gists{/gist_id}","starred_url":"https://api.github.com/users/tammoippen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tammoippen/subscriptions","organizations_url":"https://api.github.com/users/tammoippen/orgs","repos_url":"https://api.github.com/users/tammoippen/repos","events_url":"https://api.github.com/users/tammoippen/events{/privacy}","received_events_url":"https://api.github.com/users/tammoippen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":29,"created_at":"2016-01-29T15:10:03Z","updated_at":"2016-03-09T10:04:04Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/nest/nest-simulator/pulls/213","html_url":"https://github.com/nest/nest-simulator/pull/213","diff_url":"https://github.com/nest/nest-simulator/pull/213.diff","patch_url":"https://github.com/nest/nest-simulator/pull/213.patch"},"body":"In trac we have a milestone `Clean build system and installation`:\r\n\r\n> The build system of NEST has grown over the years and is currently containing custom checks for many systems not in existence anymore. This milestone is about fixing and cleaning the build system.\r\n\r\nIn order to solve the contained tickets, I rewrote the build system from scratch\r\nusing [`cmake`](https://cmake.org/) for different reasons:\r\n\r\n* Very good cross platform support, where autotools is very much rooted in GNU Li/Unix based operating systems.\r\n* It has very good support for cross compilation using toolchain files for the different targets/compiler combinations.\r\n* As a \"meta\"-build system you can generate various \"target\"-build systems: Unix Makefiles, Ninja and project files for many different IDE's. Every developer can work with his preferred tool.\r\n\r\nEvery build configuration, that was possible before, should be possible with the cmake version, too. I tried to keep most of the work-flows intact. For NEST installation details, please see INSTALL.\r\n\r\nThe trac tickets that should be solved by this PR:\r\n\r\n* trac.523 \"make dist target includes compilation byproducts with libltdl\" as libltdl will not be generated during configuring / building and the system libltdl will be used.\r\n* trac.768 \"Use pkgconfig for library detection wherever possible\" as cmake has a [find_package](https://cmake.org/cmake/help/v3.0/command/find_package.html) infrastructure which is \"simple\" to extend. Internally, they often use pkgconfig.\r\n* trac.775 \"Change OpenMP configuration option --with-openmp to take the flag as argument\" is enabled.\r\n* trac.791 \"Remove `--enable-bluegene` ./configure flag\" as the corresponding toolchain sets all necessary options.\r\n* trac.865 \"check cython version in configure\" as we check for Cythen version now.\r\n* trac.923 \"Do have gcc/g++ default guess when setting compiler options\" as cmake has support for many compilers [included](https://github.com/Kitware/CMake/tree/master/Modules/Compiler). I tried to use as few as possible default flags in the CMakeLists.txt files\r\n\r\nPartly or not solved trac issues from this milestone:\r\n\r\n* trac.654 \"Move all examples from all over the source tree to the examples directory\" _partially_ solved, as all examples are installed, but in the same directory structure as before.\r\n* trac.781 \"NEST build system doesn't respect --docdir\" __NOT__ solved, but can be adjusted by modifying `INSTALL_DOC_DIR` to be a user option.\r\n* trac.904 \"Review examples\" did __NOT__ happen (although all examples are installed now).\r\n\r\nThe GitHub Issues affected by this:\r\n* #152 Documentation will be skipped when cross compiling.\r\n* #56 Both, dynamic and static building of user modules is enabled with cmake. It might also be possible to build a user module as a cmake _add_subdirectory_, but this requires additional work.\r\n\r\nI propose as reviewers @jougs, @apeyser, @heplesser, but again I also welcome @nest/nest-developers to review this PR (especially those with cmake experiences). "},"comment":{"url":"https://api.github.com/repos/nest/nest-simulator/issues/comments/194218876","html_url":"https://github.com/nest/nest-simulator/pull/213#issuecomment-194218876","issue_url":"https://api.github.com/repos/nest/nest-simulator/issues/213","id":194218876,"user":{"login":"heplesser","id":1059644,"avatar_url":"https://avatars.githubusercontent.com/u/1059644?v=3","gravatar_id":"","url":"https://api.github.com/users/heplesser","html_url":"https://github.com/heplesser","followers_url":"https://api.github.com/users/heplesser/followers","following_url":"https://api.github.com/users/heplesser/following{/other_user}","gists_url":"https://api.github.com/users/heplesser/gists{/gist_id}","starred_url":"https://api.github.com/users/heplesser/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/heplesser/subscriptions","organizations_url":"https://api.github.com/users/heplesser/orgs","repos_url":"https://api.github.com/users/heplesser/repos","events_url":"https://api.github.com/users/heplesser/events{/privacy}","received_events_url":"https://api.github.com/users/heplesser/received_events","type":"User","site_admin":false},"created_at":"2016-03-09T10:04:04Z","updated_at":"2016-03-09T10:04:04Z","body":"I would vote for a clean CMAKE build. There is really a lot of old cruft in the autotools code that has neither been used nor tested for a long time, such as system support (Hitachi, Scali MPI) or tools support (Vampir). I would suggest a build system that works for the systems we are using today, e.g. Linux, OSX, BG, K, gcc, xlc, K, clang and Intel compilers."}}