====== NervLand: Management project ====== * So I need a "Project Management" project... I will can that **NervProj** and share it on github for once (and also keep a backup on my gitlab of course) 😁! => The NervProj framework is available at https://github.com/roche-emmanuel/nervproj * Checkout the project folder: $ git clone git@github.com:roche-emmanuel/nervproj.git NervProj * So this project should contain our main "cli": let's retrieve that from **NervLand** * **Note**: Installing **Python** extension in visual studio code is necessary to activate the linter/formatter. * Next we need a global access to that cli from cygwin or linux... How could I automate this installation process ? 🤔 hmmm... why not let the pythin script itself handle this ?! 😁 * Example of using subparsers in argparse: https://gist.github.com/jirihnidek/3f5d36636198e852280f619847d22d9e * Arrf... I was think about adding a command such as ''nvp home'' to navigate into our home folder, but I realize now that this will not work since we are calling a python app here and not staying to the cygwin environment... damn it. * So instead, we need to setup an script file locally and source that file in bashrc... **OK** this seems to be working: now we can use the command line entry ''nvp'' after installing the cli from inside the project checkout folder: ./cli.sh admin install-cli * Now we should figure out how to prepare the tools needed to control the sub projects: * I need to keep the large packages out of the main nvp git repository. * => So I will share these from **files.nervtech.org** as a checkoug of the **packages** gitlab repository * Or better: actually I should be able to grant public access to the gitlab project directly, and eventually clone that somewhere else if needed ? * Checking out packages repository: $ git clone ssh://git@gitlab.nervtech.org:22002/shared/packages.git Packages /*//*/ * OK, now for proper support on linux we also need to try tar.xz archives... **OK** * Next we need to add support to point to a given sub-project: * We should add the project manually in our config file for now. * => this means we need support for a custom **config.user.json** that is not stored on the repository: **OK** * Next we want to be able to add a milestone for instance on a gitlab project, so something like: nvp -p sc milestone add "my new milestone" --desc "a milestone" --end "22/03/2022" * Interesting article about import system in python: https://www.devdungeon.com/content/python-import-syspath-and-pythonpath-tutorial * Should use **import_module** to build a plugin system: from importlib import import_module # String should match the same format you would normally use to import my_module = import_module("my_package.my_module") # Then you can use it as if you did `import my_package.my_module` my_module.my_function() * **Note**: we are allowed to modify **sys.path** during run-time. * Side note: It's starting to be a pain to get git to report filemode changes incorrectly... eventually I should consider that point seriously. * There was an issue with the project url encoded path in gitlab.nervtech.org: * cf. https://gitlab.com/gitlab-org/gitlab/-/issues/18775 * and https://stackoverflow.com/questions/20496963/avoid-nginx-decoding-query-parameters-on-proxy-pass-equivalent-to-allowencodeds * => updated the nginx gitlab site config to use: proxy_pass http://192.168.0.20:444/$request_uri; * => Now this seems to be working fine. * Typical result we get with auto creating a milestone: { 'created_at': '2022-03-20T20:47:49.681Z', 'description': 'An autogenerated milestone', 'due_date': '2022-03-25', 'expired': False, 'id': 2, 'iid': 2, 'project_id': 10, 'start_date': None, 'state': 'active', 'title': 'NervLand v0.1.0b', 'updated_at': '2022-03-20T20:47:49.681Z', 'web_url': 'https://gitlab.nervtech.org/nerv/nervland/-/milestones/2'} * Next we need to be able to go into a project home with the ''nvp home proj_name'' command: **OK** working just fine. * Before I can add more feature I should really build the script to automatically generate the SimCore milestones on neptune: * okay, so I need access to the user config file on neptune too. But for now that file is only on my seafile server: => I need a seafile client running on neptune too. * Building the client in a docker container: * cf. https://hub.docker.com/r/gronis/seafile-client * => **OK** Created seafile client container. * Adding symlink in home: ln -s /mnt/array1/app_data/seafile_client/libraries seafile * **OK**: we can now use ''nvp home sc'' on neptune too. * Next we need to have a cron script to execute everyday, to eventually create a milestone. So I'm thinking that's where we should have a project specify plugin mechanism: * we could run the command ''nvp maintenance'' that would simply run the maintenance for all the available projects, * This maintenance action should do nothing for each project by default, * But each project may also register actions into the NervProj project itself from a given entry point. * Now the problem is, we should have only a single nvp context object: so we need to figure out how to provide that... * **OK**: we now have a single **NVPContext** object. * So we should add support to load the plugins now... * But when registering components from plugins we should ensure that those components will not interfere with other components, so we should prefix them with the project name on registration, then when we "get" a component we should give priority to the project specific version if provided. let's see if this can work. * **OK** => So now storing per project components too when registering plugins. ===== Restoring dependency build support ===== * We should restore the support to build dependencies for NervLand for instance. * But basically, inside NervProj we should implement the actual support to build the dependencies from sources, and generate the corresponding packages. * We need a command line such as: ''nvp deps build'' to trigger the build of all registered dependencies * => First restored support to install tools with ''nvp tools install'': **OK** * When calling ''nvp deps build'' we should either retrieve all the dependency packages and store them locally, or build the dependencies from sources if needed. * **Update**: I actually renamed the command to use to build the "libraries" to: ''nvp build libs'', as this sounds more appropriate. ===== Fix the incorrect git file change detection in visual studio code ===== * So the incorrect file change detection from portable git on windows gives us: $ git diff diff --git a/.vs_env b/.vs_env old mode 100755 new mode 100644 diff --git a/cli.sh b/cli.sh old mode 100755 new mode 100644 diff --git a/tools/windows/7zip-9.20/7za.exe b/tools/windows/7zip-9.20/7za.exe old mode 100755 new mode 100644 * => On that point what we need is to use the same git version to checkout the project and get the status. Ideally we should always use the portable git installation on windows. * So we need a mechanism to call git with nvp like: ''nvp -p sc git status'' * In fact when this is implemented we can then use nvp to clone projects as needed with for instance ''nvp -p pkg git clone'' => This command will clone the 'pkg' (aka. 'Packages') repository in the current folder, in a sub folder with the canonical project name ("Packages"): **OK** * The commmand above will work find for public project already, but now we need to add support for private projects too => We need to setup correct access to our SSH keys/config. => hmmm, no: actually this is already working since we setup the "$HOME" env variable in cygwin, and thus git can find our ssh keys in $HOME/.ssh/ folder. * Now the remaining question is: how do we "bootstrap" the NervProj project itself, without using either git from cygwin (which would lead to incompatibility then) and without using git for windows, which is an internal tool that should be considered not available yet/not usable ? Interesting question... lol * Found this page: https://stackoverflow.com/questions/5377960/git-whats-the-best-practice-to-git-clone-into-an-existing-folder * => So we clone in another folder, and retrieve the .git folder from there, clever enough :-)! let's try that. **OK** * Now that we can bootstrap the project correctly we also have to use the proper git version to get status etc. * => Option 1 is to add support for an explicit status command: ''nvp git status'' **OK** * Also added support for diff command: ''nvp git diff'' * Also found this page now: https://www.aleksandrhovhannisyan.com/blog/crlf-vs-lf-normalizing-line-endings-in-git/ * And also: https://rehansaeed.com/gitattributes-best-practices/ * => I need to add a **.gitattributes** file! * Note to force applying the gitattributes rules to already commited files we use: git add --renormalize . git status * Also just noticed that after installing git we should enforce setting the git username/email in our global config. * **OK**: Now this is working find, but we must keep in mind that the first connection to the server should always be done on the command line (batch of cygwin) otherwise we get an error in visual studio code as long as the host is not authorized as a known host. * Now git is working just find from Visual Studio code or from nvp command line, but then using "git" from the cygwin command is not really working as expected anymore and should be avoided. ===== Restart NervLand project ===== * Now I think I should simpl just restart the NervLand project from scratches: the dependencies should not be added there at all in fact. * Setting up the common Visual Studio code settings: * on windows: in C:/Users/kenshin/AppData/Roaming/Code/User/settings.json => should use os.getenv('APPDATA') * on linux: in /home/kenshin/.config/Code/User/settings.json * **OK**: To intialize a sub project we can now use a command such as ''nvp -p nvl admin init'': this will: - Check the global vscode settings - Check the local vscode settings - Add the .gitignore file if missing - Add the .gitattributes file if missing - Add the .editorconfig file if missing - Generate the local .vs_env file for the current platform ===== Write a first minimal test app with cmake ===== * I think we are now reaching a state where it is time to provide a first minimal test app into the NervLand project itself. Once we have that test app running as expected, we will use it to start setting up our gitlab CI system 👍! => Installing the **shell-format**, **cmake-format** and **clang-format** extensions in Visual Studio Code * For **cmake_format** we must install the required python package **cmake_format** in our python environment, * Next we add the "cmake-format" tool in our list, * And we setup that tool correctly in our global vscode settings file: **OK**: cmake files formatting now working. * Next we need support to build with cmake from nvp. * And so we need to run the cmake command at some point... I could write a "build.bat" file as I did before to load the visual studio environment details, but I feel I should first give it another try a study the **vsvarsall.bat** file to check if I can extract the relevant environment variables from there directly... * I think the key element in that file are these: * We set the **VCVARSALL_VSDEVCMD_ARGS** var to "-arch=x64 -host_arch=x64"* * we set **VSCMD_VCVARSALL_INIT=1** * Then we call **..\..\..\Common7\Tools\vsdevcmd.bat** with those args. * => checking vsdevcmd.bat: * Hmmm, okay, this is going too far: the script calls many other scripts, so I don't want to handle these manually. * But maybe there is a way to execute multiple commands in a python subprocess without first writting a .bat file ? * cf. https://stackoverflow.com/questions/39721924/how-to-run-multiple-commands-synchronously-from-one-subprocess-popen-command * => Maybe we can do that using simply **Popen** ? We can write to stdin indeed, btu then it is not clear when we shoudl read from stdout, and when we can write again to stdin, etc. * So for now, we will keep it simple and write our build.bat file on disk when building a project for msvc64 * => We need to add the JOM tool on windows * Or maybe I should use ninja instead ? checking how to build ninja from sources... * Initial indications: https://www.kitware.com/cmake-building-with-all-your-cores/ * => Simply using pre-built ninja app from https://github.com/ninja-build/ninja/releases * Arrf... wonderfull... and now I have a problem with linking to the boost libraries I built: LINK : fatal error LNK1104: impossible d'ouvrir le fichier 'libboost_unit_test_framework-vc143-mt-x64-1_78.lib' * As far as I understand this is because I'm trying to link to the runtime dynamically, while I only built static runtime-link support hmmm... * Okay, so I could keep fighting further to force everything in this project to use static linking and eventually build a giant single monolithic app, but, that doesn't sound like a battle that is really worth it: instead, let's just rebuild boost with dynamic runtime-link!: $ nvp build libs boost --rebuild ===== Compiling LLVM/clang from sources ===== * eventually (and very soon) I will need LLVM, so let's just compile it right now. * On windows using the tar.gz file doesn't work as expected => so using the zip sources. * But then on linux the zip file doesn't work well and 7zip produces errors such as: ERROR: Dangerous symbolic link path was ignored : llvm-project-llvmorg-14.0.0/clang/test/Driver/Inputs/multilib_32bit_linux_tree/usr/i386-unknown-linux/bin/as : ../../bin/i386-unknown-linux-gnu-as * => So I need different source urls depending on the current platform. **OK** * Now I can build clang from sources correctly on windows and linux. Which leads u to the next concern: we should be able to select the compiler we want to use when building a library or a project. * => Actually this should replace the concept of "flavor" in the NervProj project: compiler should be specified as for instance msvc2022 or clang13 or gcc8 * Default compiler should be selected depending on the platform. * So let's see what we can do about this... * => I really need to get the environment generated from the **vcvarsall.bat** setup. * cf. https://stackoverflow.com/questions/1214496/how-to-get-environment-from-a-subprocess * And now I feel it doesn't make much sense to keep a "Package" repository in fact: I should rather just store the latest version of those files, and keep a backup as needed. * So I'm now storing those packages directly in a folder on my server (/mnt/array1/dev/nvp_packages) with a public access to that folder from https://files.nervtech.org/nvp_packages : **OK** * Now that I have clang built correctly from sources on both windows and linux, and also need to update a bit how I selected the "best compiler" available: we should take into account the potential library folder from the supported compilers if available. * => And also, on linux we should prefer compressing packages with tar.xz : this might help reducing large package size using symlinks internally (which 7z doesn't seem to support): **OK** * **Note**: SDL2 compilation on windows with clang 14 takes 133 seconds, with msvc it takes 65 seconds... => Maybe I should not rebuild clang with clang first 😅 * For LuaJIT things are a bit more tricky since we only have the msvcbuild.bat file and otherwise use make to build on linux. * => Could we maybe consider writing our own build.ninja file here ? * cf. https://jpospisil.com/2014/03/16/replacing-make-with-ninja.html * Hmmm... 🤔 Interesting... now just realized that our clang compiler actually requires linking to "libcmt.lib" which comes from the MSVC tools folder in Visual Studio installation... => So basically we need Visual Studio installed to use that clang compiler ? Wonderfull... * Okay, anyway: continuing our journey with the compilation of bosot with clang on windows now: $ nvp build -c clang libs boost * => **OK** working on windows, but now broken on linux if we get to select the "clang-14" compiler that we manually built :-): $ nvp build libs boost --rebuild 2022/04/01 09:18:15 [nvp.nvp_compiler] INFO: Found clang-14.0.0 2022/04/01 09:18:15 [nvp.nvp_compiler] INFO: Found clang-13.0.1 2022/04/01 09:18:15 [build] INFO: Selecting compiler clang-14.0.0 2022/04/01 09:18:15 [build] INFO: List of settings: {'verbose': False, 'project': 'none', 'l0_cmd': 'build', 'l1_cmd': 'libs', 'compiler_type': None, 'lib_names': 'boost', 'rebuild': True, 'keep_build': False} 2022/04/01 09:18:15 [build] INFO: Removing previous build for boost-1.78.0 2022/04/01 09:18:17 [build] INFO: Removing previous source folder /mnt/array1/dev/projects/NervProj/libraries/build/boost-1.78.0 2022/04/01 09:18:17 [tools] INFO: Extracting /mnt/array1/dev/projects/NervProj/libraries/build/boost_1_78_0.7z... 2022/04/01 09:18:21 [boost] INFO: Building boost library... 2022/04/01 09:18:21 [boost] INFO: Building B2 command: ['/mnt/array1/dev/projects/NervProj/libraries/build/boost-1.78.0/./tools/build/src/engine/build.sh', 'clang', '--cxx=/mnt/array1/dev/projects/NervProj/libraries/linux_clang/LLVM-14.0.0/bin/clang++', '--cxxflags=-stdlib=libc++ -w'] A C++11 capable compiler is required for building the B2 engine. Toolset 'clang' does not appear to support C++11. > /mnt/array1/dev/projects/NervProj/libraries/linux_clang/LLVM-14.0.0/bin/clang++ -x c++ -std=c++11 -stdlib=libc++ -w check_cxx11.cpp /mnt/array1/dev/projects/NervProj/libraries/linux_clang/LLVM-14.0.0/bin/clang++: error while loading shared libraries: libc++.so.1: cannot open shared object file: No such file or directory * This seems to be related to the LD_LIBRAR_PATH... 🤔 checking that. * OOoops.... our LD_LIBRARY_PATH is correct: 'LD_LIBRARY_PATH': '/mnt/array1/dev/projects/NervProj/libraries/linux_clang/LLVM-14.0.0/lib' * ... but we don't have any **libc++.so.1** file in that folder 😒. So I guess I missed something when building LLVM. Let's get back to that. * **Note**: same state on windows actually: we don't have a c++ library generated there either. * => Could be I need to specify ''DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi"'' => or better: ''LLVM_ENABLE_RUNTIMES=all'' * Now trying to rebuild llvm on linux: $ nvp build libs llvm --rebuild * hmmm... LLVM won't build if I pass **LLVM_ENABLE_RUNTIMES=all** to the config... * Found this discussion: https://groups.google.com/g/llvm-dev/c/Oj6ttXy08Fw * So now trying with a different list of projects. * Argghh... still an error when building "compiler-rt" => let's discard that runtime for now: I don't even know when it is. * Oh my... 😖 Still not working: this time another error when building the libc runtime... I'm thinking this might come from the cxxflags/linkflags I'm providing by default on the clang-13 compiler environment (?). So let's change that and try to build again... * Found this page: https://libcxx.llvm.org/BuildingLibcxx.html => clarifying what's the deal with the build of those runtimes: but I still think my issue could be with the CXXFLAGS containing "-stdlib=libc++" by default with my config. * OK! eventually got the runtimes to compile, and installed in the correct folder * **Note**: Just updated the .gitattributes in the NervProj project on neptune, and now realized that I need to install ''git-lfs'' to fully support that config: sudo apt-get update sudo apt-get install git-lfs * Tried to use **LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF**, but this did not work: still seeing the "x86_64-unknown-linux-gnu" * So we need to add the path specification per runtime library: def get_cmake_flags(self, prefix): """Retrive the applicable cmake flags for the build""" return self.common_flags + [f"-DLIBCXX_INSTALL_LIBRARY_DIR={prefix}/lib", f"-DLIBCXX_INSTALL_INCLUDE_DIR={prefix}/include/c++/v1", f"-DLIBCXX_INSTALL_INCLUDE_TARGET_DIR={prefix}/include/c++/v1", f"-DLIBCXXABI_INSTALL_LIBRARY_DIR={prefix}/lib", f"-DLIBUNWIND_INSTALL_INCLUDE_DIR={prefix}/include/c++/v1", f"-DLIBUNWIND_INSTALL_LIBRARY_DIR={prefix}/lib"] * **Update**: Checking the cmake files, I now think that **LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF** is needed to install **libllvmlibc** in the desired folder. * Now trying to rebuild LLVM with runtimes on windows with MSVC compiler but we get an error about missing libxml2 library now: MT: command "D:\Projects\NervProj\libraries\build\LLVM-14.0.0\build\bin\llvm-mt.exe /nologo /manifest CMakeFiles\cmTC_80d49.dir/intermediate.manifest /out:CMakeFiles\cmTC_80d49.dir/embed.manifest /notify_update" failed (exit code 0x1) with the following output: llvm-mt: error: no libxml2 llvm-mt: ignoring unsupported 'notify_update' option ninja: build stopped: subcommand failed. Call Stack (most recent call first): D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libc/CMakeLists.txt:87 (include) * => I guess this means we need to provide libxml2 at compile time somehow ? 🤔 * Found in the build log: -- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR) -- Could NOT find LibXml2 (missing: LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR) * **Note**: On linux libxml2 is not found either (but not sure this is a problem there ?): -- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.11") -- Looking for compress2 -- Looking for compress2 - found -- Could NOT find LibXml2 (missing: LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR) ===== Build ZLIB and libxml2 from sources ===== * So let's add support to build zlib and libxml2 from sources... * => All OK and easy for zlib. * But for libxml2 we get an error due to dependency on missing iconv library: CMake Error at D:/Projects/NervProj/tools/windows/cmake-3.22.3/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message): Could NOT find Iconv (missing: Iconv_LIBRARY Iconv_INCLUDE_DIR) Call Stack (most recent call first): D:/Projects/NervProj/tools/windows/cmake-3.22.3/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE) D:/Projects/NervProj/tools/windows/cmake-3.22.3/share/cmake-3.22/Modules/FindIconv.cmake:165 (find_package_handle_standard_args) CMakeLists.txt:67 (find_package) -- Configuring incomplete, errors occurred! * So let's build iconv first... * ... **Holy crap**... 😳 building libiconv on windows seems to be a mess 😭 Stay calm Manu, stay calm... and think. * Found this as worst case solution: https://www.codeproject.com/Articles/302012/How-to-Build-libiconv-with-Microsoft-Visual-Studio * => **Okay** for now simply using a pre-build version of libiconv on windows. * And of course, next issue now: we also need LZMA to build libxml2: CMake Error at D:/Projects/NervProj/tools/windows/cmake-3.22.3/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (messa ge): Could NOT find LibLZMA (missing: LIBLZMA_LIBRARY LIBLZMA_INCLUDE_DIR LIBLZMA_HAS_AUTO_DECODER LIBLZMA_HAS_EASY_ENCODER LIBLZMA_HAS_LZMA_PRESET) Call Stack (most recent call first): D:/Projects/NervProj/tools/windows/cmake-3.22.3/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MES SAGE) D:/Projects/NervProj/tools/windows/cmake-3.22.3/share/cmake-3.22/Modules/FindLibLZMA.cmake:89 (find_package_handle_standard_args) CMakeLists.txt:75 (find_package) -- Configuring incomplete, errors occurred! * Checking how to build the LZMA library then... **Damn it** another one that you cannot build on windows easily... stupid primitive libraries... * OK: found this package: https://tukaani.org/xz/xz-5.2.5-windows.zip * But there is no .lib in that package, only a .a library file 😕 * => So for now building libxml2 **without** liblzma support. * Also disabled python usage and added zlib dependency, but now I have a link issue with libiconv: Création de la bibliothèque libxml2.lib et de l'objet libxml2.exp encoding.c.obj : error LNK2019: symbole externe non résolu _ _imp_libiconv_open référencé dans la fonction xmlFindCharEncodingHandler encoding.c.obj : error LNK2019: symbole externe non résolu _ _imp_libiconv référencé dans la fonction xmlByteConsumed encoding.c.obj : error LNK2019: symbole externe non résolu _ _imp_libiconv_close référencé dans la fonction xmlCharEncCloseFunc D:\Projects\NervProj\libraries\windows_msvc\libiconv-1.9.2\lib\libiconv.lib : warning LNK4272: type d'ordinateur bibliothèque 'x86' en conflit avec le type d'ordinateur cible 'x64' * Crap... this means the library I have is for x86 target I'm sure 😅 * => Now using this project to build libiconv on windows: https://github.com/pffang/libiconv-for-Windows * Feeww! **OK** Could now build libxml2 on windows. Trying on linux... ===== Using libxml2 for llvm-mt ===== * Back to our initial error now on **llvm-mt: error: no libxml2**: * Event with libxml2 properly made available I still get the error when building the runtimes on windows. * => Checking the file **llvm/lib/WindowsManifest/WindowsManifestMerger.cpp**: the error is behind the preprocessor entry **LLVM_ENABLE_LIBXML2** * But that entry doesn't seem to be defined during the compilation ? * Hmmm... interesting: in my build/include/llvm/Config/config.h file this LIBXML2 entry is not set: /* Define if libxml2 is supported on this platform. */ /* #undef LLVM_ENABLE_LIBXML2 */ * So, something not right during the LLVM build configuration ? * The build **LLVMConfig.cmake** is generated from **LLVMConfig.cmake.in** * The later using "LLVM_ENABLE_LIBXML2" to set the flag: so maybe this is not set correct at config time ? let's try to enforce it. * And now we rebuild again: $ nvp build libs llvm --rebuild 2>&1 | tee llvm_build.log * **Nope**: this is still not working. ===== Updated support for git environment setup ===== * I also just updated the setup required to use git for windows correctly in visual studio code, installing the required ssh keys and initializing the known_hosts file with the simple command ''nvp git setup'' : 2022/04/08 23:11:07 [git] INFO: Validating git setup in home dir 'D:\Softs\Cygwin\home\ultim' 2022/04/08 23:11:07 [git] INFO: Validating git setup in home dir 'C:\Users\ultim' 2022/04/08 23:11:07 [git] INFO: Installing ssh private key C:\Users\ultim\.ssh\id_rsa_default 2022/04/08 23:11:07 [git] INFO: Installing ssh private key C:\Users\ultim\.ssh\id_rsa_github.com_git 2022/04/08 23:11:07 [git] INFO: Adding github.com to known_hosts... 2022/04/08 23:11:07 [git] INFO: Executing command ['D:\\Projects\\NervProj\\tools\\windows\\git-2.35.1\\usr\\bin\\ssh.exe', '-q', '-o', 'StrictHostKeyChecking=no', 'git@github.com', '-p', '22'] Hi roche-emmanuel! You've successfully authenticated, but GitHub does not provide shell access. 2022/04/08 23:11:08 [git] INFO: Installing ssh private key C:\Users\ultim\.ssh\id_rsa_gitlab.eumetsat.int_git 2022/04/08 23:11:08 [git] INFO: Adding gitlab.eumetsat.int to known_hosts... 2022/04/08 23:11:08 [git] INFO: Executing command ['D:\\Projects\\NervProj\\tools\\windows\\git-2.35.1\\usr\\bin\\ssh.exe', '-q', '-o', 'StrictHostKeyChecking=no', 'git@gitlab.eumetsat.int', '-p', '22'] Welcome to GitLab, @eroche! 2022/04/08 23:11:09 [git] INFO: Installing ssh private key C:\Users\ultim\.ssh\id_rsa_gitlab.gmv-insyen.com_git 2022/04/08 23:11:09 [git] INFO: Adding gitlab.gmv-insyen.com to known_hosts... 2022/04/08 23:11:09 [git] INFO: Executing command ['D:\\Projects\\NervProj\\tools\\windows\\git-2.35.1\\usr\\bin\\ssh.exe', '-q', '-o', 'StrictHostKeyChecking=no', 'git@gitlab.gmv-insyen.com', '-p', '22'] Welcome to GitLab, @manu! 2022/04/08 23:11:10 [git] INFO: Installing ssh private key C:\Users\ultim\.ssh\id_rsa_gitlab.insyen.com_git 2022/04/08 23:11:10 [git] INFO: Adding gitlab.insyen.com to known_hosts... 2022/04/08 23:11:10 [git] INFO: Executing command ['D:\\Projects\\NervProj\\tools\\windows\\git-2.35.1\\usr\\bin\\ssh.exe', '-q', '-o', 'StrictHostKeyChecking=no', 'git@gitlab.insyen.com', '-p', '22'] Welcome to GitLab, @manu! 2022/04/08 23:11:11 [git] INFO: Installing ssh private key C:\Users\ultim\.ssh\id_rsa_gitlab.nervtech.org_git 2022/04/08 23:11:11 [git] INFO: Adding gitlab.nervtech.org to known_hosts... 2022/04/08 23:11:11 [git] INFO: Executing command ['D:\\Projects\\NervProj\\tools\\windows\\git-2.35.1\\usr\\bin\\ssh.exe', '-q', '-o', 'StrictHostKeyChecking=no', 'git@gitlab.nervtech.org', '-p', '22002'] Welcome to GitLab, @manu! ===== LLVM: building the runtimes separately ===== * Trying to setup the build process of LLVM to build the runtimes separately, but this is still producing just garbage. * => We really need to figure out how to had support for libxml2 in llvm-mt.exe during the compiler compilation. * Hmmmm, finally making some progress by fixing the LLVM Config/config.h **after** cmake configuration. * But now we have missing windows libraries detected, which is of course absolutely fine: libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __WSAFDIsSet referenced in function xmlNanoHTTPConnectAttempt libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_closesocket referenced in function xmlNanoHTTPConnectAttempt libxml2s.lib(nanoftp.c.obj) : error LNK2001: unresolved external symbol __imp_closesocket libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_connect referenced in function xmlNanoHTTPConnectAttempt libxml2s.lib(nanoftp.c.obj) : error LNK2001: unresolved external symbol __imp_connect libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_ioctlsocket referenced in function xmlNanoHTTPConnectAttempt libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_getsockopt referenced in function xmlNanoHTTPConnectAttempt libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_htonl referenced in function WspiapiLegacyGetAddrInfo libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_htons referenced in function WspiapiLegacyGetAddrInfo libxml2s.lib(nanoftp.c.obj) : error LNK2001: unresolved external symbol __imp_htons libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_inet_addr referenced in function WspiapiLegacyGetAddrInfo libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_inet_ntoa referenced in function WspiapiLegacyGetAddrInfo libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_ntohs referenced in function WspiapiLegacyGetNameInfo libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_recv referenced in function xmlNanoHTTPFetchContent libxml2s.lib(nanoftp.c.obj) : error LNK2001: unresolved external symbol __imp_recv libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_select referenced in function xmlNanoHTTPConnectAttempt libxml2s.lib(nanoftp.c.obj) : error LNK2001: unresolved external symbol __imp_select libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_send referenced in function xmlNanoHTTPSend libxml2s.lib(nanoftp.c.obj) : error LNK2001: unresolved external symbol __imp_send libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_socket referenced in function xmlNanoHTTPConnectAttempt libxml2s.lib(nanoftp.c.obj) : error LNK2001: unresolved external symbol __imp_socket libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_gethostbyaddr referenced in function WspiapiLegacyGetNameInfo libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_gethostbyname referenced in function WspiapiLookupNode libxml2s.lib(nanoftp.c.obj) : error LNK2001: unresolved external symbol __imp_gethostbyname libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_getservbyport referenced in function WspiapiLegacyGetNameInfo libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_getservbyname referenced in function WspiapiLegacyGetAddrInfo libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_WSAStartup referenced in function xmlNanoHTTPInit libxml2s.lib(nanoftp.c.obj) : error LNK2001: unresolved external symbol __imp_WSAStartup libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_WSACleanup referenced in function xmlNanoHTTPCleanup libxml2s.lib(nanoftp.c.obj) : error LNK2001: unresolved external symbol __imp_WSACleanup libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_WSASetLastError referenced in function WspiapiGetAddrInfo libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_WSAGetLastError referenced in function WspiapiLegacyGetNameInfo libxml2s.lib(nanoftp.c.obj) : error LNK2019: unresolved external symbol __imp_bind referenced in function xmlNanoFTPGetConnection libxml2s.lib(nanoftp.c.obj) : error LNK2019: unresolved external symbol __imp_getsockname referenced in function xmlNanoFTPGetConnection libxml2s.lib(nanoftp.c.obj) : error LNK2019: unresolved external symbol __imp_listen referenced in function xmlNanoFTPGetConnection /*__*/ * => I think all those symbols come from teh socket library. * Failure when trying to build **libc**: -- Found Python3: D:/Projects/NervProj/tools/windows/python-3.10.1/python.exe (found version "3.10.1") found components: Interpreter CMake Deprecation Warning at D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libc/CMakeLists.txt:5 (cmake_policy): The OLD behavior for policy CMP0076 will be removed from a future version of CMake. The cmake-policies(7) manual explains that the OLD behaviors of all policies are deprecated and that a policy should be set to OLD only under specific short-term circumstances. Projects should be ported to the NEW behavior and not rely on setting a policy to OLD. clang-cl: warning: unknown argument ignored in clang-cl: '--print-resource-dir' [-Wunknown-argument] clang-cl: error: no input files -- COMPILER_RESOURCE_DIR not set --print-resource-dir not supported by host compiler CMake Error at D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libc/cmake/modules/LLVMLibCCheckCpuFeatures.cmake:83 (message): Failed to run: Access violation Call Stack (most recent call first): D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libc/CMakeLists.txt:87 (include) -- Configuring incomplete, errors occurred! See also "D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/CMakeFiles/CMakeOutput.log". See also "D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/CMakeFiles/CMakeError.log". * next error observed is on the **linunwind** project: -- Performing Test LIBUNWIND_SUPPORTS_FNO_RTTI_FLAG - Failed CMake Error at D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libunwind/src/CMakeLists.txt:99 (message): Compiler doesn't support generation of unwind tables if exception support is disabled. Building libunwind DSO with runtime dependency on C++ ABI library is not supported. -- Configuring incomplete, errors occurred! See also "D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/CMakeFiles/CMakeOutput.log". See also "D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/CMakeFiles/CMakeError.log". * => So we need to enable exceptions handling ? Hmmm this is already active, but the problem here is that clang-cl doesn't accept the command line argument: clang-cl: warning: unknown argument ignored in clang-cl: '-fno-exceptions' [-Wunknown-argument] [2/2] Linking CXX executable cmTC_a5896.exe * => Maybe we can try to just use clang.exe instead then ? => OK, seems better. * next error is on openmp: -- Performing Test LIBOMP_HAVE_PSAPI - Success CMake Error at D:/Projects/NervProj/libraries/build/LLVM-14.0.0/openmp/runtime/src/CMakeLists.txt:351 (string): string sub-command REGEX, mode MATCH needs at least 5 arguments total to command. -- Looking for sqrt in m -- Looking for sqrt in m - not found -- Looking for __atomic_load_1 -- Looking for __atomic_load_1 - not found -- Looking for __atomic_load_1 in atomic -- Looking for __atomic_load_1 in atomic - not found -- check-libomp does nothing. -- check-ompt does nothing. -- check-openmp does nothing. -- Configuring incomplete, errors occurred! See also "D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/CMakeFiles/CMakeOutput.log". See also "D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/CMakeFiles/CMakeError.log". * => let's just not compile openmp for now. * Only crap! And now problem with the build script 😭: -- Build files have been written to: D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2 ninja: error: build.ninja:7988: multiple rules generate lib/c++abi.lib [-w dupbuild=err] * my my my... So, let's try again with a single unified build pass ? Naay... not a good idea I think. * For now let's just disable the static build of libc++abi to see if this helps (with ''"-DLIBCXXABI_ENABLE_STATIC=OFF"'') * okay, so this leads to another requirement: CMake Error at D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libcxx/test/CMakeLists.txt:47 (message): LIBCXX_LINK_TESTS_WITH_SHARED_LIBCXXABI being OFF requires LIBCXXABI_ENABLE_STATIC to be ON * next, same issue with libunwind 🤣 * So we disable the static build too with **"-DLIBUNWIND_ENABLE_STATIC=OFF"** * Damn it... next libunwind will produce compilation errors: In file included from D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libunwind/src/libunwind.cpp:30: In file included from D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libunwind/src/AddressSpace.hpp:23: In file included from D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libunwind/src/EHHeaderParser.hpp:17: D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libunwind/src/DwarfParser.hpp:556:37: error: use of undeclared identifier '_malloca' (PrologInfoStackEntry *)_LIBUNWIND_REMEMBER_ALLOC( ^ D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libunwind/src/config.h:130:42: note: expanded from macro '_LIBUNWIND_REMEMBER_ALLOC' #define _LIBUNWIND_REMEMBER_ALLOC(_size) _malloca(_size) ^ D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libunwind/src/DwarfInstructions.hpp:179:24: note: in instantiation of member function 'libunwind::CFI_Parser::parseFDEInstructions' requested here if (CFI_Parser::parseFDEInstructions(addressSpace, fdeInfo, cieInfo, pc, ^ D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libunwind/src/UnwindCursor.hpp:966:37: note: in instantiation of member function 'libunwind::DwarfInstructions::stepWithDwarf' requested here return DwarfInstructions::stepWithDwarf(_addressSpace, * So... let's try to disable building of **libunwind** then ? * Naaaa... still errors everywhere in libcxxabi with for instance stuff like that: D:\Projects\NervProj\libraries\build\LLVM-14.0.0\libcxxabi\src\stdlib_typeinfo.cpp(16,12): error: cannot define or redeclare '~type_info' here because namespace 'std' does not enclose namespace 'type_info' type_info::~type_info() ~~~~~~~~~~~^ D:\Projects\NervProj\libraries\build\LLVM-14.0.0\libcxxabi\src\stdlib_typeinfo.cpp(22,22): warning: noexcept specifications are incompatible with C++98 [-Wc++98-compat] bad_cast::bad_cast() noexcept ^ D:\Projects\NervProj\libraries\build\LLVM-14.0.0\libcxxabi\src\stdlib_typeinfo.cpp(22,11): error: redefinition of 'bad_cast' bad_cast::bad_cast() noexcept ^ D:\Softs\VisualStudio\VS2022\VC\Tools\MSVC\14.31.31103\include\vcruntime_typeinfo.h(135,5): note: previous definition is here bad_cast() noexcept ^ * => So this cannot possibly be an appropriate way to build the runtimes. So I'm really thinking now that we actually **cannot** build those runtimes on windows with version 14.0.0 yet ? Sounds extremely weird but I don't see another explanation... except if I'm becoming completely crazy or stupid of course 😂 * => So let's just take a step back for a while, and **not** try to build any runtime yet: maybe in fact I'm just supposed to use the runtimes from visual studio itself ?! * Or... as indicated on this page: https://libcxx.llvm.org/BuildingLibcxx.html#cmake-ninja-msvc maybe the only thing I'm supposed to build on windows is the **libc++** target actually ?! 😳 let's have a last try lol. * => **okay**! Indeed, trying to build only libcxx will bring us a bit further: and I'm now on the library check section, but unfortunately I have a failure in those tests at some point: llvm-lit.py: D:\Projects\NervProj\libraries\build\LLVM-14.0.0\libcxx\utils\libcxx\test\config.py:158: note: Linking against the C++ Library at D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib llvm-lit.py: D:\Projects\NervProj\libraries\build\LLVM-14.0.0\libcxx\utils\libcxx\test\config.py:159: note: Running against the C++ Library at D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib llvm-lit.py: D:\Projects\NervProj\libraries\build\LLVM-14.0.0\libcxx\utils\libcxx\test\config.py:160: note: Linking against the ABI Library at D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib llvm-lit.py: D:\Projects\NervProj\libraries\build\LLVM-14.0.0\libcxx\utils\libcxx\test\config.py:161: note: Running against the ABI Library at D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib -- Testing: 7624 tests, 16 workers -- FAIL: libc++ :: std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/pointer.volatile.pass.cpp (3292 of 7624) ******************** TEST 'libc++ :: std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/pointer.volatile.pass.cpp' FAILED ******************** Script: -- : 'COMPILED WITH'; D:/Projects/NervProj/libraries/windows_msvc/LLVM-14.0.0/bin\clang++.EXE D:\Projects\NervProj\libraries\build\LLVM-14.0.0\libcxx\test\std\input.output\iostream.format\output.streams\ostream.formatted\ostream.inserters.arithmetic\pointer.volatile.pass.cpp -v --target=x86_64-pc-windows-msvc -nostdinc++ -ID:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/include/c++/v1 -ID:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/libcxx\include\c++build -ID:/Projects/NervProj/libraries/build/LLVM-14.0.0/libcxx\test/support -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_STDIO_ISO_WIDE_SPECIFIERS -DNOMINMAX -std=c++2b -Werror -Wall -Wextra -Wshadow -Wundef -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-c++11-extensions -Wno-user-defined-literals -Wno-noexcept-type -Wno-atomic-alignment -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -Wno-unused-local-typedef -D_LIBCPP_DISABLE_AVAILABILITY -fcoroutines-ts -Werror=thread-safety -Wuser-defined-warnings -D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -Wno-macro-redefined -D_LIBCPP_ABI_VERSION=1 -Wno-macro-redefined -D_LIBCPP_HAS_NO_FILESYSTEM_LIBRARY -Wno-macro-redefined -D_LIBCPP_HAS_NO_INCOMPLETE_FORMAT -Wno-macro-redefined -D_LIBCPP_HAS_NO_INCOMPLETE_RANGES -L D:\Softs\VisualStudio\VS2022\VC\Tools\MSVC\14.31.31103\ATLMFC\lib\x64 -L D:\Softs\VisualStudio\VS2022\VC\Tools\MSVC\14.31.31103\lib\x64 -L "C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\ucrt\x64" -L "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.19041.0\\um\x64" -LD:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib -LD:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib -nodefaultlibs -nostdlib -lc++ -lvcruntime -lucrt -lmsvcrt -lmsvcprt -loldnames -o D:\Projects\NervProj\libraries\build\LLVM-14.0.0\build2\libcxx\test\std\input.output\iostream.format\output.streams\ostream.formatted\ostream.inserters.arithmetic\Output\pointer.volatile.pass.cpp.dir\t.tmp.exe : 'EXECUTED AS'; "D:/Projects/NervProj/tools/windows/python-3.10.1/python.exe" D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libcxx/test/../utils/run.py --execdir D:\Projects\NervProj\libraries\build\LLVM-14.0.0\build2\libcxx\test\std\input.output\iostream.format\output.streams\ostream.formatted\ostream.inserters.arithmetic\Output\pointer.volatile.pass.cpp.dir --codesign_identity "" --env PATH="D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib;D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib" -- D:\Projects\NervProj\libraries\build\LLVM-14.0.0\build2\libcxx\test\std\input.output\iostream.format\output.streams\ostream.formatted\ostream.inserters.arithmetic\Output\pointer.volatile.pass.cpp.dir\t.tmp.exe -- Exit Code: 1120 Command Output (stdout): -- $ ":" "COMPILED WITH" $ "D:/Projects/NervProj/libraries/windows_msvc/LLVM-14.0.0/bin\clang++.EXE" "D:\Projects\NervProj\libraries\build\LLVM-14.0.0\libcxx\test\std\input.output\iostream.format\output.streams\ostream.formatted\ostream.inserters.arithmetic\pointer.volatile.pass.cpp" "-v" "--target=x86_64-pc-windows-msvc" "-nostdinc++" "-ID:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/include/c++/v1" "-ID:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/libcxx\include\c++build" "-ID:/Projects/NervProj/libraries/build/LLVM-14.0.0/libcxx\test/support" "-D_CRT_SECURE_NO_WARNINGS" "-D_CRT_NONSTDC_NO_WARNINGS" "-D_CRT_STDIO_ISO_WIDE_SPECIFIERS" "-DNOMINMAX" "-std=c++2b" "-Werror" "-Wall" "-Wextra" "-Wshadow" "-Wundef" "-Wno-unused-command-line-argument" "-Wno-attributes" "-Wno-pessimizing-move" "-Wno-c++11-extensions" "-Wno-user-defined-literals" "-Wno-noexcept-type" "-Wno-atomic-alignment" "-Wsign-compare" "-Wunused-variable" "-Wunused-parameter" "-Wunreachable-code" "-Wno-unused-local-typedef" "-D_LIBCPP_DISABLE_AVAILABILITY" "-fcoroutines-ts" "-Werror=thread-safety" "-Wuser-defined-warnings" "-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER" "-Wno-macro-redefined" "-D_LIBCPP_ABI_VERSION=1" "-Wno-macro-redefined" "-D_LIBCPP_HAS_NO_FILESYSTEM_LIBRARY" "-Wno-macro-redefined" "-D_LIBCPP_HAS_NO_INCOMPLETE_FORMAT" "-Wno-macro-redefined" "-D_LIBCPP_HAS_NO_INCOMPLETE_RANGES" "-L" "D:\Softs\VisualStudio\VS2022\VC\Tools\MSVC\14.31.31103\ATLMFC\lib\x64" "-L" "D:\Softs\VisualStudio\VS2022\VC\Tools\MSVC\14.31.31103\lib\x64" "-L" "C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\ucrt\x64" "-L" "C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x64" "-LD:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib" "-LD:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib" "-nodefaultlibs" "-nostdlib" "-lc++" "-lvcruntime" "-lucrt" "-lmsvcrt" "-lmsvcprt" "-loldnames" "-o" "D:\Projects\NervProj\libraries\build\LLVM-14.0.0\build2\libcxx\test\std\input.output\iostream.format\output.streams\ostream.formatted\ostream.inserters.arithmetic\Output\pointer.volatile.pass.cpp.dir\t.tmp.exe" # command output: pointer-adda5e.o : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class std::__1::basic_ostream > & __cdecl std::__1::basic_ostream >::operator<<(void const volatile *)" (__imp_??6?$basic_ostream@DU?$char_traits@D@__1@std@@@__1@std@@QEAAAEAV012@PEDX@Z) referenced in function main Hint on symbols that are defined and could potentially match: "__declspec(dllimport) public: class std::__1::basic_ostream > & __cdecl std::__1::basic_ostream >::operator<<(void const *)" (__imp_??6?$basic_ostream@DU?$char_traits@D@__1@std@@@__1@std@@QEAAAEAV012@PEBX@Z) D:\Projects\NervProj\libraries\build\LLVM-14.0.0\build2\libcxx\test\std\input.output\iostream.format\output.streams\ostream.formatted\ostream.inserters.arithmetic\Output\pointer.volatile.pass.cpp.dir\t.tmp.exe : fatal error LNK1120: 1 unresolved externals # command stderr: clang version 14.0.0 Target: x86_64-pc-windows-msvc Thread model: posix InstalledDir: D:\Projects\NervProj\libraries\windows_msvc\LLVM-14.0.0\bin "d:\\projects\\nervproj\\libraries\\windows_msvc\\llvm-14.0.0\\bin\\clang++.exe" -cc1 -triple x86_64-pc-windows-msvc19.31.31106 -emit-obj -mrelax-all -mincremental-linker-compatible --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name pointer.volatile.pass.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -v "-fcoverage-compilation-dir=D:\\Projects\\NervProj\\libraries\\build\\LLVM-14.0.0\\build2\\libcxx\\test\\std\\input.output\\iostream.format\\output.streams\\ostream.formatted\\ostream.inserters.arithmetic" -nostdinc++ -resource-dir "d:\\projects\\nervproj\\libraries\\windows_msvc\\llvm-14.0.0\\lib\\clang\\14.0.0" -I D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/include/c++/v1 -I "D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/libcxx\\include\\c++build" -I "D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libcxx\\test/support" -D _CRT_SECURE_NO_WARNINGS -D _CRT_NONSTDC_NO_WARNINGS -D _CRT_STDIO_ISO_WIDE_SPECIFIERS -D NOMINMAX -D _LIBCPP_DISABLE_AVAILABILITY -D _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -D _LIBCPP_ABI_VERSION=1 -D _LIBCPP_HAS_NO_FILESYSTEM_LIBRARY -D _LIBCPP_HAS_NO_INCOMPLETE_FORMAT -D _LIBCPP_HAS_NO_INCOMPLETE_RANGES -internal-isystem "d:\\projects\\nervproj\\libraries\\windows_msvc\\llvm-14.0.0\\lib\\clang\\14.0.0\\include" -internal-isystem "D:\\Softs\\VisualStudio\\VS2022\\VC\\Tools\\MSVC\\14.31.31103\\ATLMFC\\include" -internal-isystem "D:\\Softs\\VisualStudio\\VS2022\\VC\\Tools\\MSVC\\14.31.31103\\include" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.19041.0\\ucrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.19041.0\\\\shared" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.19041.0\\\\um" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.19041.0\\\\winrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.19041.0\\\\cppwinrt" -Werror -Wall -Wextra -Wshadow -Wundef -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-c++11-extensions -Wno-user-defined-literals -Wno-noexcept-type -Wno-atomic-alignment -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -Wno-unused-local-typedef -Werror=thread-safety -Wuser-defined-warnings -Wno-macro-redefined -Wno-macro-redefined -Wno-macro-redefined -Wno-macro-redefined -std=c++2b -fdeprecated-macro "-fdebug-compilation-dir=D:\\Projects\\NervProj\\libraries\\build\\LLVM-14.0.0\\build2\\libcxx\\test\\std\\input.output\\iostream.format\\output.streams\\ostream.formatted\\ostream.inserters.arithmetic" -ferror-limit 19 -fcoroutines-ts -fno-use-cxa-atexit -fms-extensions -fms-compatibility -fms-compatibility-version=19.31.31106 -fdelayed-template-parsing -fcxx-exceptions -fexceptions -faddrsig -o "D:\\Softs\\Cygwin\\tmp\\lit-tmp-9uuxp_qg\\pointer-adda5e.o" -x c++ "D:\\Projects\\NervProj\\libraries\\build\\LLVM-14.0.0\\libcxx\\test\\std\\input.output\\iostream.format\\output.streams\\ostream.formatted\\ostream.inserters.arithmetic\\pointer.volatile.pass.cpp" clang -cc1 version 14.0.0 based upon LLVM 14.0.0 default target x86_64-pc-windows-msvc #include "..." search starts here: #include <...> search starts here: D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/include/c++/v1 D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/libcxx\include\c++build D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libcxx\test/support d:\projects\nervproj\libraries\windows_msvc\llvm-14.0.0\lib\clang\14.0.0\include D:\Softs\VisualStudio\VS2022\VC\Tools\MSVC\14.31.31103\ATLMFC\include D:\Softs\VisualStudio\VS2022\VC\Tools\MSVC\14.31.31103\include C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt C:\Program Files (x86)\Windows Kits\10\\include\10.0.19041.0\\shared C:\Program Files (x86)\Windows Kits\10\\include\10.0.19041.0\\um C:\Program Files (x86)\Windows Kits\10\\include\10.0.19041.0\\winrt C:\Program Files (x86)\Windows Kits\10\\include\10.0.19041.0\\cppwinrt End of search list. "D:\\Softs\\VisualStudio\\VS2022\\VC\\Tools\\MSVC\\14.31.31103\\bin\\Hostx64\\x64\\link.exe" "-out:D:\\Projects\\NervProj\\libraries\\build\\LLVM-14.0.0\\build2\\libcxx\\test\\std\\input.output\\iostream.format\\output.streams\\ostream.formatted\\ostream.inserters.arithmetic\\Output\\pointer.volatile.pass.cpp.dir\\t.tmp.exe" "-libpath:D:\\Softs\\VisualStudio\\VS2022\\VC\\Tools\\MSVC\\14.31.31103\\ATLMFC\\lib\\x64" "-libpath:D:\\Softs\\VisualStudio\\VS2022\\VC\\Tools\\MSVC\\14.31.31103\\lib\\x64" "-libpath:C:\\Program Files (x86)\\Windows Kits\\10\\lib\\10.0.19041.0\\ucrt\\x64" "-libpath:C:\\Program Files (x86)\\Windows Kits\\10\\lib\\10.0.19041.0\\um\\x64" -libpath:D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib -libpath:D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib -nologo "D:\\Softs\\Cygwin\\tmp\\lit-tmp-9uuxp_qg\\pointer-adda5e.o" c++.lib vcruntime.lib ucrt.lib msvcrt.lib msvcprt.lib oldnames.lib clang++: error: linker command failed with exit code 1120 (use -v to see invocation) error: command failed with exit status: 1120 * Anyway... for now, let's just ignore those tests results and bypass the tests: I definitely don't have the time to look inot LLVM specific errors for now! * **Note** then I got a couple of additional test failure and the final report: ******************** Failed Tests (3): libc++ :: std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/pointer.volatile.pass.cpp libc++ :: std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/eval.pass.cpp libc++ :: std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/int128.pass.cpp Testing Time: 771.91s Unsupported : 1195 Passed : 6315 Expectedly Failed: 111 Failed : 3 FAILED: libcxx/test/CMakeFiles/check-cxx D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/libcxx/test/CMakeFiles/check-cxx cmd.exe /C "cd /D D:\Projects\NervProj\libraries\build\LLVM-14.0.0\build2\libcxx\test && D:\Projects\NervProj\tools\windows\python-3.10.1\python.exe D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/bin/llvm-lit.py -sv --show-xfail --show-unsupported --no-progress-bar D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/libcxx/test" ninja: build stopped: subcommand failed. /* **TODO**: Add support for the clang compiler tool on windows too (at least to get access to "clang-format") * **Add support for event handling**: */