Skip to content

Conversation

@cr1901
Copy link
Contributor

@cr1901 cr1901 commented Aug 9, 2025

This PR fixes some Windows compilation issues I found when compiling with GCC on Windows (MinGW64/MSYS2 specifically in my case):

  • Turns some WIN32 checks into more-accurate MSVC-specific checks using _MSC_VER variable. These should not affect compilation with MSVC.
  • Remove -lrt from the linked libraries (doesn't really exist for Windows, AFAIR), and add the -lshlwapi library because abc uses PathMatchSpecA somehow.
  • ABC's link command-line has unfortunately gotten large enough that it exceeds the 32768-or-so character limit on the command-line. The workaround is Response Files- i.e. supply the command-line arguments via a dynamically-generated file. I use GNU Make's file function for this; the docs even state that response files are an intended usage :D.
  • At least in the case of MinGW, uname -s isn't necessarily static (it appends a version string, which can vary between systems). I bring in code from yosys to make the OS variable remain the same between systems.

I mainly follow the yosys branch of ABC, so I was able to compile abc without issue until a recent merge. By looking at the yosys branch and main side-by-side (git log --all --decorate --oneline --graph), it seems all the commits that required me to make these changes were between 68c576c and now (9c41da6).

@wjrforcyber
Copy link
Contributor

I mainly follow the yosys branch of ABC, so I was able to compile abc without issue until a recent merge. By looking at the yosys branch and main side-by-side (git log --all --decorate --oneline --graph), it seems all the commits that required me to make these changes were between 68c576c and now (9c41da6).

Hi, I'm not on windows but have you tried git bisect XXX to locate the exact commit that causes the issue?

@cr1901
Copy link
Contributor Author

cr1901 commented Aug 11, 2025

Hi, I'm not on windows but have you tried git bisect XXX to locate the exact commit that causes the issue?

No, I didn't bisect because there isn't a single commit that corresponds to the issues this PR fixes. Additionally, the 32768 character problem is just going to keep coming back, now that the link command is approximately large enough.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants