-
-
Notifications
You must be signed in to change notification settings - Fork 367
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
Intergrate Conan into build pipeline #1980
base: master
Are you sure you want to change the base?
Conversation
Nice, why not ready for review? |
Because I'm making some changes locally so that it can be enforced to all code related to the emulator more easily, including Boost and FFmpeg. |
88e36d4
to
ec31566
Compare
arch=x86_64 | ||
arch_build=x86_64 | ||
compiler=clang | ||
# Using Clang 11 so that no issues arise in GitHub CI, but any version newer than that can be used just fine |
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.
Do you mean clang lower than 11 fails in CI?
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.
I mean that because the default Clang version in CI is Clang 11, setting it to a higher value would probably cause issues with CI and therefore fail the build due to the Conan preset requiring a higher Clang version than what CI actually uses.
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.
Yup that make sense.
i think pr name sould be changed, it turned into making linux use libc++ into making vita3k use dependencies from conan and improving their integration |
Maybe worth splitting off pr if you want. I like introducing conan btw -- much better than our fragile DIY boost building. |
I initially just wanted to enable libc++ (Clang) for Linux builds, in which I succeeded to do so without Conan (@EXtremeExploit has been trying it as well using the first commit I made to this PR and we can confirm substantial performance improvements just by using it instead of libstdc++). But since Boost and FFmpeg were still built with libstdc++ (GNU) I needed to rework the way those two are built so that I could enforce the C++ library I wanted. I could split it into separate PRs but since I re-adapted the libc++ settings to have Conan in mind, it's more straightforward to keep both on the same PR. |
No worries. Just do in the way you prefer to. I'm totally fine with either. I just said that cause I thought libc++ needed more works to make this WIP. |
dc845b6
to
057f669
Compare
If libc++ and lld packages are now required would be nice to add them to the building instructions, same goes for conan if necessary |
Already did it for Conan but not for libc++ and lld. Thanks for reminding me. |
066ea62
to
920dae7
Compare
I don't think we should default to clang/lld/libc++ family yet. It's nice to have as an option but default should be gcc/ld/libstdc++. |
f701063
to
1fd9738
Compare
fcc5939
to
0b7a071
Compare
From what I understand, Conan is only used for boost right now, right? |
- Update GitHub action ilammy/msvc-dev-cmd and force using the Visual Studio x64 Native Tools Command Prompt - Change the depth of the Git fetch only to include the latest commit to speed up the checkout process
Make all CMake presets from the project detect the compiler launcher to use from the parent environment variables.
- Enable the project to use Boost from the Conan package manager. - Remove Boost submodule in `external/` - Prepare Conan and CMake for future implementation of FFmpeg.
@Macdu Yes. The FFmpeg recipe hasn't been ported to Conan 2.0 yet. |
Is openssl for windows supported ? It would be far better than using prebuilts from some 3rd party website. GitHub action is using vcpkg for openssl on Windows right now. |
@Macdu @EXtremeExploit The recipe of OpenSSL 3.x seems to now work with Conan 2.0. These are the options exposed by the package recipe configure the build: List of optionsoptions = {
"shared": [True, False],
"fPIC": [True, False],
"enable_weak_ssl_ciphers": [True, False],
"386": [True, False],
"capieng_dialog": [True, False],
"enable_capieng": [True, False],
"no_aria": [True, False],
"no_asm": [True, False],
"no_async": [True, False],
"no_blake2": [True, False],
"no_bf": [True, False],
"no_camellia": [True, False],
"no_chacha": [True, False],
"no_cms": [True, False],
"no_comp": [True, False],
"no_ct": [True, False],
"no_cast": [True, False],
"no_deprecated": [True, False],
"no_des": [True, False],
"no_dgram": [True, False],
"no_dh": [True, False],
"no_dsa": [True, False],
"no_dso": [True, False],
"no_ec": [True, False],
"no_ecdh": [True, False],
"no_ecdsa": [True, False],
"no_engine": [True, False],
"no_filenames": [True, False],
"no_fips": [True, False],
"no_gost": [True, False],
"no_idea": [True, False],
"no_legacy": [True, False],
"no_md2": [True, False],
"no_md4": [True, False],
"no_mdc2": [True, False],
"no_module": [True, False],
"no_ocsp": [True, False],
"no_pinshared": [True, False],
"no_rc2": [True, False],
"no_rc4": [True, False],
"no_rc5": [True, False],
"no_rfc3779": [True, False],
"no_rmd160": [True, False],
"no_sm2": [True, False],
"no_sm3": [True, False],
"no_sm4": [True, False],
"no_srp": [True, False],
"no_srtp": [True, False],
"no_sse2": [True, False],
"no_ssl": [True, False],
"no_stdio": [True, False],
"no_seed": [True, False],
"no_sock": [True, False],
"no_ssl3": [True, False],
"no_threads": [True, False],
"no_tls1": [True, False],
"no_ts": [True, False],
"no_whirlpool": [True, False],
"no_zlib": [True, False],
"openssldir": [None, "ANY"],
} The default configuration is to compile OpenSSL as a static library with position-independent code enabled and MD2 support disabled, with everything else set as default_options = {key: False for key in options.keys()}
default_options["fPIC"] = True
default_options["no_md2"] = True Which options should be overwritten (if any) for Vita3K aside from building it as a shared library? The more things we disable, the faster it will compile. |
ig that having mostly all enabled for now is fine, we can experiment on exactly what we need from openssl as we go on imo |
@Macdu @EXtremeExploit After some more testing, it seems the Conan recipe for OpenSSL 3.x is still broken because the header files aren't included in the include path by CMake. Even though this means that the PR should be ready to merge, I still have to make some changes before merging to re-implement download of pre-built packages because Zangetsu asked so in order to be able to build the project without using Conan and without any user interaction. |
This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation. |
7 similar comments
This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation. |
This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation. |
This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation. |
This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation. |
This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation. |
This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation. |
This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation. |
Description
This PR creates a Conan recipe (
conanfile.py
) to allow developers to satisfy the pre-built dependency requirements without having to use pre-built binaries provided by the project. It also creates a new CMake scriptCopySharedLib.cmake
which can be run at build time by the underlying build system to copy shared libraries and other artifacts needed in the binary folder that also follows and replicates symbolic link chains.Requires
To-do
Set up Vita3K/ext-deps so that people can easily obtain pre-built packages of all the dependencies needed without needing to use Conan