-
Notifications
You must be signed in to change notification settings - Fork 19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Link internal library as CMake object library #710
Link internal library as CMake object library #710
Conversation
Win, 32bit, C2A=ON の時だけこの変更で落ちるのはあまりに変なので、Actions の minor update などを疑って #711 をやったが、違いそう |
rebase |
46ac5cc
to
c1062c2
Compare
64bit で USE_C2A=ONの時、CI はパスしてるけどビルドがスキップされてる |
#409 で変更されてるな |
そもそも 64bit ビルドが追加されたのがここか |
単純に libC2A をリンクしようとした時にリンクエラーになる、のであればまだ make sense。しかし、SILS-S2E の際は 32bit ビルドを強制させたい、のであれば後出しジャンケン的に無かったことにするべきではない。 |
そうですね。これはこれ以外のやり方がいまいちわからなかったので無理やりやったという感じです。 |
rebase |
a6a1a0c
to
8f93dde
Compare
8f93dde
to
159c9c9
Compare
159c9c9
to
52c0199
Compare
Visual Studio のリンカ(link.exe)の挙動が微妙だったためやや dirty hack も入っているが、通った(ここらへんは native Windows のサポートを続けるかどうかも含めて考えたい) |
@200km いつもの摩訶不思議なことになってしまっている |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
修正提案ありがとうございます!
Related issues
N/A
Description
s2e-core-internal libraries like
COMPONENT
have complex (and cyclic) dependencies with each other, since they are only for build S2E.However, these libraries are built as static libraries.
This causes the final executable link to not succeed unless non-trivial link configuration is performed many times.
s2e-core/CMakeLists.txt
Lines 185 to 198 in 6ca93ed
This PR change these libraries to be built as object libraries feature provided by CMake.
It eliminates the need to specify dependencies mid-build by allowing circular dependencies to exist until the final executable link.
s2e-core/CMakeLists.txt
Lines 183 to 200 in 7f8ae7c
Test results
N/A
Impact
The build process is a bit changed; S2E users also need to make a similar modification to this PR in their
CMakeLists.txt
.Supplementary information
This simplifies the build process and makes it easier to expand use cases, such as interoperation with Rust.