Skip to content

Conversation

@jkunkee
Copy link
Contributor

The toolchain for ARM64 Windows includes support for assembly code, but with a very different syntax from MASM and NASM. This change teaches GYP how to emit the right XML tags in VCXPROJ files to support compiling assembly files with the new tool.

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • tests and/or benchmarks are included
    • not yet written
  • commit message follows commit guidelines

@nodejs-github-botnodejs-github-bot added build Issues and PRs related to build files or the CI. tools Issues and PRs related to the tools directory. labels Feb 9, 2019
Copy link
Member

@bnoordhuisbnoordhuis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jkunkee
Copy link
ContributorAuthor

@bnoordhuis, thanks for the look. Since that CI run failed, I've rebased the change. Please do let me know if there's anything else I need to do so this can land.

@jkunkeejkunkee mentioned this pull request Feb 25, 2019
2 tasks
Copy link
Contributor

@refackrefack left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should come via the upstream change (refack/GYP3#23), since we have no way to CI this here.

@jkunkee
Copy link
ContributorAuthor

Understood.

When I submitted this PR, my understanding was that there are three copies of GYP:

refack/GYP had not yet become the centralized upstream of GYP for Node.js.

In turn, then, I made three PRs:

As I understand it, refack/GYP is becoming the new upstream. Since refack/GYP3#23 has already been merged, this PR can be closed as soon as the Node.js copy of GYP is updated to the new upstream.

@joaocgreis
Copy link
Member

I had started a CI run that failed to compile with multiple errors of the form:

c:\workspace\node-compile-windows\**.vcxproj(30,3): error MSB4019: The imported project "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\BuildCustomizations\marmasm.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. 

I confirmed this was because VS2017 was not fully updated on that machine and that any updated installation of VS2017 should have that file, whether ARM components were selected or not. I endured VS2017 is updated and receiving automatic updated on all our machines, so we should not see this again.

Copy link
Member

@joaocgreisjoaocgreis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm ok with getting this from refack/GYP3#23, but anyway this LGTM.

@BridgeAR
Copy link
Member

@refack can you please briefly elaborate what should be done here?

The toolchain for ARM64 Windows includes support for assembly code, but with a very different syntax from MASM and NASM. This change teaches GYP how to emit the right XML tags in VCXPROJ files to support compiling assembly files with the new tool.
@BridgeAR
Copy link
Member

Ping @refack

@refack
Copy link
Contributor

Superseded by #26620

@jkunkeejkunkee closed this Mar 14, 2019
@joaocgreis
Copy link
Member

With this PR, Node can be compiled in ARM64 Windows devices.

@refack since #26620 is still having issues with CI, do you mind if we land this one to have ARM64 support in master? This can simply be overwritten by #26620 when it lands.

@joaocgreisjoaocgreis reopened this Apr 11, 2019
@nodejs-github-bot
Copy link
Collaborator

@refack
Copy link
Contributor

@refack since #26620 is still having issues with CI, do you mind if we land this one to have ARM64 support in master? This can simply be overwritten by #26620 when it lands.

In general I'm -1 on landing code that is not covered by our CI ¯\(ツ)
At refack/GYP this code at least is tested for regressions.

@refackrefack added gyp Issues and PRs related to the GYP tool and .gyp build files python PRs and issues that require attention from people who are familiar with Python. labels Apr 11, 2019
@joaocgreis
Copy link
Member

This is not code for a Tier 1 or 2 supported platform, but to enable compilation for an experimental platform. This was tested by CI for Tier 1 and 2 platforms, confirming it does not cause any regressions for those.

In any case, this has landed in refack/GYP in refack/GYP3#23, and is already part of #26620.

@refack since this is for an experimental platform is there a reason to block this from landing?

@refack
Copy link
Contributor

since this is for an experimental platform is there a reason

Forgot it's designated experimental.

joaocgreis pushed a commit that referenced this pull request Apr 11, 2019
The toolchain for ARM64 Windows includes support for assembly code, but with a very different syntax from MASM and NASM. This change teaches GYP how to emit the right XML tags in VCXPROJ files to support compiling assembly files with the new tool. PR-URL: #26020 Refs: #25998 Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: João Reis <[email protected]> Reviewed-By: Refael Ackermann <[email protected]>
@joaocgreis
Copy link
Member

Landed in 06c10cd

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

buildIssues and PRs related to build files or the CI.gypIssues and PRs related to the GYP tool and .gyp build filespythonPRs and issues that require attention from people who are familiar with Python.toolsIssues and PRs related to the tools directory.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@jkunkee@joaocgreis@BridgeAR@refack@nodejs-github-bot@bnoordhuis