{"action":"closed","number":4905,"pull_request":{"url":"https://api.github.com/repos/ARMmbed/mbed-os/pulls/4905","id":135639898,"html_url":"https://github.com/ARMmbed/mbed-os/pull/4905","diff_url":"https://github.com/ARMmbed/mbed-os/pull/4905.diff","patch_url":"https://github.com/ARMmbed/mbed-os/pull/4905.patch","issue_url":"https://api.github.com/repos/ARMmbed/mbed-os/issues/4905","number":4905,"state":"closed","locked":false,"title":"NEW TOOLCHAIN: Add the ARMC6 compiler","user":{"login":"theotherjimmy","id":685409,"avatar_url":"https://avatars2.githubusercontent.com/u/685409?v=4","gravatar_id":"","url":"https://api.github.com/users/theotherjimmy","html_url":"https://github.com/theotherjimmy","followers_url":"https://api.github.com/users/theotherjimmy/followers","following_url":"https://api.github.com/users/theotherjimmy/following{/other_user}","gists_url":"https://api.github.com/users/theotherjimmy/gists{/gist_id}","starred_url":"https://api.github.com/users/theotherjimmy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/theotherjimmy/subscriptions","organizations_url":"https://api.github.com/users/theotherjimmy/orgs","repos_url":"https://api.github.com/users/theotherjimmy/repos","events_url":"https://api.github.com/users/theotherjimmy/events{/privacy}","received_events_url":"https://api.github.com/users/theotherjimmy/received_events","type":"User","site_admin":false},"body":"# Description\r\n\r\nThis PR adds a new compiler to mbed OS: ARM Compiler 6 or armclang. This compiler\r\nuses LLVM and CLang as the front end to an ARM proprietary optimization and code\r\ngeneration layer. ARMC6 supports the new ARMv8M, ARMv8R and ARMv8A architectures.\r\n\r\n\r\n## Design notes\r\n\r\nYou may notice, when reviewing the code, that the ARMC6 toolchain class does not\r\ninherit from the ARM toolchain class. This is intentional. While ARMC6 does use \r\nthe same linker (armlink) and assembler (armasm) as ARM Compiler 5, it is not \r\ncompatible.\r\n\r\nThe reason for this incompatibility are twofold:\r\n * armlink ~and armasm~ may invoke the C preprocessor by adding a shebang (`#!`) to \r\n   the top of their input files.\r\n * ARMC6 and ARMC5 differ in how you invoke the preprocessor:\r\n   * ARMC5: `#! armcc -E`\r\n   * ARMC6: `#! armclang -E`\r\n\r\nWhen a toolchain inherits from another, each of their class names become \r\nconverted a `TOOLCHAIN_<name>` define and the resource scanner will pick up \r\nfiles within directories of the same name. If ARMC6 were to inherit from the \r\nARM base class, it would pick up the arm assembler and linker files, which \r\ncontain a possibly incorrect preprocessor invocation. The correctness of the\r\npreprocesssor invocation depends on if you have ARM Compiler 5 installed. This\r\nis generally a Bad Thing. ~Therefore, I elected to force the semi-duplication of\r\nthese files to guarantee that the invocation is correct for each toolchain.~\r\nI have made a new partial Toolchain implementation for ARMASM, and created \r\na pair of \r\n\r\n## Current limitations\r\n\r\n~Presently, the tools are not creating or processing dependency files for ARMC6.~\r\n~This can make development with it a headache. I consider this an essential~\r\n~feature of a toolchain and will be updating this PR to include it.~ Done.\r\n\r\nAlso, The output of ARMC6 is not filtered in any way to generate the short \r\nversion of each warning or error. This makes development with ARMC6 a little\r\nverbose. I consider this a nonessential feature and will submit another PR to\r\ninclude output processing unless someone convinces me otherwise.\r\n\r\n~Further, ARMC6 is not supported by the small build profile. This was an unintentional\r\nomission, and I will correct it in this PR.~ Done.\r\n\r\nThis PR only adds K64F support for ARMC6. I think that other devices should be \r\nsupported with subsequent PRs, so I'm not going to add support in this PR.\r\n\r\nThere is no exporter for Uvision + ARMC6. I think this is also out of scope and \r\nshould come as a separate PR.\r\n\r\n# TODO\r\n\r\n- [x] Write section detailing this new toolchain in the Handbook\r\n- [ ] Add ARMC6 to the CI\r\n- [ ] Run nightly test to verify my implementation of ARMC6\r\n- [x] Process dependency information for ARM6\r\n- [x] Add small profile\r\n- [ ] Small error/warning messages","created_at":"2017-08-14T16:52:27Z","updated_at":"2017-08-24T18:35:09Z","closed_at":"2017-08-24T18:35:09Z","merged_at":null,"merge_commit_sha":"4e54d4bf7eba4d3de6e154af9c7465858f5a1bbe","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/ARMmbed/mbed-os/pulls/4905/commits","review_comments_url":"https://api.github.com/repos/ARMmbed/mbed-os/pulls/4905/comments","review_comment_url":"https://api.github.com/repos/ARMmbed/mbed-os/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ARMmbed/mbed-os/issues/4905/comments","statuses_url":"https://api.github.com/repos/ARMmbed/mbed-os/statuses/ae8e7dfca7fd2dc15e0cf4ecc578450d0d56b01f","head":{"label":"theotherjimmy:feature-armc6","ref":"feature-armc6","sha":"ae8e7dfca7fd2dc15e0cf4ecc578450d0d56b01f","user":{"login":"theotherjimmy","id":685409,"avatar_url":"https://avatars2.githubusercontent.com/u/685409?v=4","gravatar_id":"","url":"https://api.github.com/users/theotherjimmy","html_url":"https://github.com/theotherjimmy","followers_url":"https://api.github.com/users/theotherjimmy/followers","following_url":"https://api.github.com/users/theotherjimmy/following{/other_user}","gists_url":"https://api.github.com/users/theotherjimmy/gists{/gist_id}","starred_url":"https://api.github.com/users/theotherjimmy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/theotherjimmy/subscriptions","organizations_url":"https://api.github.com/users/theotherjimmy/orgs","repos_url":"https://api.github.com/users/theotherjimmy/repos","events_url":"https://api.github.com/users/theotherjimmy/events{/privacy}","received_events_url":"https://api.github.com/users/theotherjimmy/received_events","type":"User","site_admin":false},"repo":{"id":59587271,"name":"mbed","full_name":"theotherjimmy/mbed","owner":{"login":"theotherjimmy","id":685409,"avatar_url":"https://avatars2.githubusercontent.com/u/685409?v=4","gravatar_id":"","url":"https://api.github.com/users/theotherjimmy","html_url":"https://github.com/theotherjimmy","followers_url":"https://api.github.com/users/theotherjimmy/followers","following_url":"https://api.github.com/users/theotherjimmy/following{/other_user}","gists_url":"https://api.github.com/users/theotherjimmy/gists{/gist_id}","starred_url":"https://api.github.com/users/theotherjimmy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/theotherjimmy/subscriptions","organizations_url":"https://api.github.com/users/theotherjimmy/orgs","repos_url":"https://api.github.com/users/theotherjimmy/repos","events_url":"https://api.github.com/users/theotherjimmy/events{/privacy}","received_events_url":"https://api.github.com/users/theotherjimmy/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/theotherjimmy/mbed","description":"mbed libraries and tools (Classic). For mbed OS, look here: https://www.mbed.com/en/development/software/mbed-os/","fork":true,"url":"https://api.github.com/repos/theotherjimmy/mbed","forks_url":"https://api.github.com/repos/theotherjimmy/mbed/forks","keys_url":"https://api.github.com/repos/theotherjimmy/mbed/keys{/key_id}","collaborators_url":"https://api.github.com/repos/theotherjimmy/mbed/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/theotherjimmy/mbed/teams","hooks_url":"https://api.github.com/repos/theotherjimmy/mbed/hooks","issue_events_url":"https://api.github.com/repos/theotherjimmy/mbed/issues/events{/number}","events_url":"https://api.github.com/repos/theotherjimmy/mbed/events","assignees_url":"https://api.github.com/repos/theotherjimmy/mbed/assignees{/user}","branches_url":"https://api.github.com/repos/theotherjimmy/mbed/branches{/branch}","tags_url":"https://api.github.com/repos/theotherjimmy/mbed/tags","blobs_url":"https://api.github.com/repos/theotherjimmy/mbed/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/theotherjimmy/mbed/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/theotherjimmy/mbed/git/refs{/sha}","trees_url":"https://api.github.com/repos/theotherjimmy/mbed/git/trees{/sha}","statuses_url":"https://api.github.com/repos/theotherjimmy/mbed/statuses/{sha}","languages_url":"https://api.github.com/repos/theotherjimmy/mbed/languages","stargazers_url":"https://api.github.com/repos/theotherjimmy/mbed/stargazers","contributors_url":"https://api.github.com/repos/theotherjimmy/mbed/contributors","subscribers_url":"https://api.github.com/repos/theotherjimmy/mbed/subscribers","subscription_url":"https://api.github.com/repos/theotherjimmy/mbed/subscription","commits_url":"https://api.github.com/repos/theotherjimmy/mbed/commits{/sha}","git_commits_url":"https://api.github.com/repos/theotherjimmy/mbed/git/commits{/sha}","comments_url":"https://api.github.com/repos/theotherjimmy/mbed/comments{/number}","issue_comment_url":"https://api.github.com/repos/theotherjimmy/mbed/issues/comments{/number}","contents_url":"https://api.github.com/repos/theotherjimmy/mbed/contents/{+path}","compare_url":"https://api.github.com/repos/theotherjimmy/mbed/compare/{base}...{head}","merges_url":"https://api.github.com/repos/theotherjimmy/mbed/merges","archive_url":"https://api.github.com/repos/theotherjimmy/mbed/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/theotherjimmy/mbed/downloads","issues_url":"https://api.github.com/repos/theotherjimmy/mbed/issues{/number}","pulls_url":"https://api.github.com/repos/theotherjimmy/mbed/pulls{/number}","milestones_url":"https://api.github.com/repos/theotherjimmy/mbed/milestones{/number}","notifications_url":"https://api.github.com/repos/theotherjimmy/mbed/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/theotherjimmy/mbed/labels{/name}","releases_url":"https://api.github.com/repos/theotherjimmy/mbed/releases{/id}","deployments_url":"https://api.github.com/repos/theotherjimmy/mbed/deployments","created_at":"2016-05-24T15:53:58Z","updated_at":"2016-05-24T15:54:55Z","pushed_at":"2017-08-23T15:06:31Z","git_url":"git://github.com/theotherjimmy/mbed.git","ssh_url":"git@github.com:theotherjimmy/mbed.git","clone_url":"https://github.com/theotherjimmy/mbed.git","svn_url":"https://github.com/theotherjimmy/mbed","homepage":"","size":157120,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ARMmbed:master","ref":"master","sha":"c72d60a9e607cfa17a5682bbdb2d28bded69beb0","user":{"login":"ARMmbed","id":8916057,"avatar_url":"https://avatars3.githubusercontent.com/u/8916057?v=4","gravatar_id":"","url":"https://api.github.com/users/ARMmbed","html_url":"https://github.com/ARMmbed","followers_url":"https://api.github.com/users/ARMmbed/followers","following_url":"https://api.github.com/users/ARMmbed/following{/other_user}","gists_url":"https://api.github.com/users/ARMmbed/gists{/gist_id}","starred_url":"https://api.github.com/users/ARMmbed/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ARMmbed/subscriptions","organizations_url":"https://api.github.com/users/ARMmbed/orgs","repos_url":"https://api.github.com/users/ARMmbed/repos","events_url":"https://api.github.com/users/ARMmbed/events{/privacy}","received_events_url":"https://api.github.com/users/ARMmbed/received_events","type":"Organization","site_admin":false},"repo":{"id":8270972,"name":"mbed-os","full_name":"ARMmbed/mbed-os","owner":{"login":"ARMmbed","id":8916057,"avatar_url":"https://avatars3.githubusercontent.com/u/8916057?v=4","gravatar_id":"","url":"https://api.github.com/users/ARMmbed","html_url":"https://github.com/ARMmbed","followers_url":"https://api.github.com/users/ARMmbed/followers","following_url":"https://api.github.com/users/ARMmbed/following{/other_user}","gists_url":"https://api.github.com/users/ARMmbed/gists{/gist_id}","starred_url":"https://api.github.com/users/ARMmbed/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ARMmbed/subscriptions","organizations_url":"https://api.github.com/users/ARMmbed/orgs","repos_url":"https://api.github.com/users/ARMmbed/repos","events_url":"https://api.github.com/users/ARMmbed/events{/privacy}","received_events_url":"https://api.github.com/users/ARMmbed/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ARMmbed/mbed-os","description":"ARM mbed OS is a platform operating system designed for the internet of things","fork":false,"url":"https://api.github.com/repos/ARMmbed/mbed-os","forks_url":"https://api.github.com/repos/ARMmbed/mbed-os/forks","keys_url":"https://api.github.com/repos/ARMmbed/mbed-os/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ARMmbed/mbed-os/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ARMmbed/mbed-os/teams","hooks_url":"https://api.github.com/repos/ARMmbed/mbed-os/hooks","issue_events_url":"https://api.github.com/repos/ARMmbed/mbed-os/issues/events{/number}","events_url":"https://api.github.com/repos/ARMmbed/mbed-os/events","assignees_url":"https://api.github.com/repos/ARMmbed/mbed-os/assignees{/user}","branches_url":"https://api.github.com/repos/ARMmbed/mbed-os/branches{/branch}","tags_url":"https://api.github.com/repos/ARMmbed/mbed-os/tags","blobs_url":"https://api.github.com/repos/ARMmbed/mbed-os/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ARMmbed/mbed-os/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ARMmbed/mbed-os/git/refs{/sha}","trees_url":"https://api.github.com/repos/ARMmbed/mbed-os/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ARMmbed/mbed-os/statuses/{sha}","languages_url":"https://api.github.com/repos/ARMmbed/mbed-os/languages","stargazers_url":"https://api.github.com/repos/ARMmbed/mbed-os/stargazers","contributors_url":"https://api.github.com/repos/ARMmbed/mbed-os/contributors","subscribers_url":"https://api.github.com/repos/ARMmbed/mbed-os/subscribers","subscription_url":"https://api.github.com/repos/ARMmbed/mbed-os/subscription","commits_url":"https://api.github.com/repos/ARMmbed/mbed-os/commits{/sha}","git_commits_url":"https://api.github.com/repos/ARMmbed/mbed-os/git/commits{/sha}","comments_url":"https://api.github.com/repos/ARMmbed/mbed-os/comments{/number}","issue_comment_url":"https://api.github.com/repos/ARMmbed/mbed-os/issues/comments{/number}","contents_url":"https://api.github.com/repos/ARMmbed/mbed-os/contents/{+path}","compare_url":"https://api.github.com/repos/ARMmbed/mbed-os/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ARMmbed/mbed-os/merges","archive_url":"https://api.github.com/repos/ARMmbed/mbed-os/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ARMmbed/mbed-os/downloads","issues_url":"https://api.github.com/repos/ARMmbed/mbed-os/issues{/number}","pulls_url":"https://api.github.com/repos/ARMmbed/mbed-os/pulls{/number}","milestones_url":"https://api.github.com/repos/ARMmbed/mbed-os/milestones{/number}","notifications_url":"https://api.github.com/repos/ARMmbed/mbed-os/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ARMmbed/mbed-os/labels{/name}","releases_url":"https://api.github.com/repos/ARMmbed/mbed-os/releases{/id}","deployments_url":"https://api.github.com/repos/ARMmbed/mbed-os/deployments","created_at":"2013-02-18T15:23:11Z","updated_at":"2017-08-24T15:39:36Z","pushed_at":"2017-08-24T18:11:07Z","git_url":"git://github.com/ARMmbed/mbed-os.git","ssh_url":"git@github.com:ARMmbed/mbed-os.git","clone_url":"https://github.com/ARMmbed/mbed-os.git","svn_url":"https://github.com/ARMmbed/mbed-os","homepage":"https://mbed.com","size":153424,"stargazers_count":1169,"watchers_count":1169,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1114,"mirror_url":null,"open_issues_count":475,"forks":1114,"open_issues":475,"watchers":1169,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ARMmbed/mbed-os/pulls/4905"},"html":{"href":"https://github.com/ARMmbed/mbed-os/pull/4905"},"issue":{"href":"https://api.github.com/repos/ARMmbed/mbed-os/issues/4905"},"comments":{"href":"https://api.github.com/repos/ARMmbed/mbed-os/issues/4905/comments"},"review_comments":{"href":"https://api.github.com/repos/ARMmbed/mbed-os/pulls/4905/comments"},"review_comment":{"href":"https://api.github.com/repos/ARMmbed/mbed-os/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ARMmbed/mbed-os/pulls/4905/commits"},"statuses":{"href":"https://api.github.com/repos/ARMmbed/mbed-os/statuses/ae8e7dfca7fd2dc15e0cf4ecc578450d0d56b01f"}},"merged":false,"mergeable":true,"rebaseable":true,"mergeable_state":"unstable","merged_by":null,"comments":11,"review_comments":20,"maintainer_can_modify":false,"commits":4,"additions":202,"deletions":316,"changed_files":66}}
{"actor":{"display_login":"theotherjimmy"}}