Commit Graph

13 Commits

Author SHA1 Message Date
Jacob Oursland c56ae33493 CMake: use job pools to restrict number of concurrent compilers and linkers.
When using Ninja build system, CMake can specify job pools for number of concurrent compilers
and concurrent linkers.  This PR employes the heuristic of max number of compilers as available
physical ram / 1 GiB and a single linker instance to prevent using excessive RAM.  Modern
linkers are multithreaded and should not be run concurrently due to risk of resource exhaustion.
2025-04-15 13:04:22 +02:00
Jacob Oursland 7b759aae1a pixi: use clang on Linux.
clang uses considerably less memory on Linux allowing more concurrent instances than with g++.
Using clang reduced build times on a machine from 63m to 32m.
2025-04-15 13:04:13 +02:00
Jacob Oursland bc2aba9618 pixi: Use the mold linker on Linux. 2025-04-15 06:42:55 +02:00
Jacob Oursland 9b3052cf75 CI/CD: Implement weekly builds.
Brings over the functionality in https://github.com/FreeCAD/FreeCAD-Bundle
to build Linux AppImage, macOS .dmg, and Windows 7z releases.

This version also creates a tagged release for each build, creating an
archive of the weekly builds as well as the ability to easily tie each
build to a git commit.  This will make running 'git bisect' easy to
identify sources of regressions.
2025-04-09 14:55:56 -07:00
Jacob Oursland be34ec2009 CMake: Add CMAKE_POLICY_VERSION_MINIMUM=3.5 to CMakePresets.json 2025-04-08 13:24:58 -07:00
looooo ed5815eb4d pixi: add pixi.toml and pixi.lock 2024-12-04 08:02:29 -08:00
Jacob Oursland c80ab28f41 CMake: conda-macos-* do not search Homebrew for dependencies. 2024-09-13 12:28:05 -06:00
Jacob Oursland 0291603ffc CMake: Use RelWithDebInfo for Conda Windows Debug builds.
Python is not provided with debug libraries, so debug builds are not possible.
Building as RelWithDebInfo will build debug information for the binary, while
using the available release libraries.
2024-08-19 12:13:32 -04:00
Snow Faerie 05bf9029b5 Generate compile_commands.json
Modify CMakePresets.json to use -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=ON
in all the presets.

The compile_commands.json file can be used by tools like clangd to get
autocompletion and go-to-definition.

This patch also adds compile_commands.json to the .gitignore, as often
you need to symlink the compile_commands.json from the build directory
into the source directory for it to be picked by tools. That is the case
with clangd at least.
2024-07-22 10:49:34 -05:00
mosfet80 ba630dc71b Update CMakePresets.json
Updated requested cmake version, I used the same version present in cmakelist.txt
2024-01-08 21:30:10 -03:00
Jacob Oursland 7573770b0c CMake: set FREECAD_USE_PYBIND11 on conda builds, not all. 2023-12-04 10:15:08 -07:00
Pesc0 46529fa897 downgrade cmakepresets version 2023-11-27 11:22:02 -06:00
Pesc0 0303af1ebb Vscode PR - split 1 - add cmakepresets (#11385)
* add CMakePresets.json
2023-11-16 12:49:54 -03:00