--- parent: Setup nav_order: 2 --- # Building & Testing libcu++ ## *nix Systems, Native Build/Test The procedure is demonstrated for NVCC + GCC in C++11 mode on a Debian-like Linux systems; the same basic steps are required on all other platforms. ### Step 0: Install Build Requirements In a Bash shell: ```bash # Install LLVM (needed for LLVM's CMake modules) apt-get -y install llvm # Install CMake apt-get -y install cmake # Install the LLVM Integrated Tester (`lit`) apt-get -y install python-pip pip install lit # Env vars that should be set, or kept in mind for use later export LIBCUDACXX_ROOT=/path/to/libcudacxx # Git repo root. ``` ### Step 1: Generate the Build Files In a Bash shell: ```bash cd ${LIBCUDACXX_ROOT} cmake \ -S ./ \ -B build \ -DCMAKE_CXX_COMPILER=$CXX \ -DCMAKE_CUDA_COMPILER=$TOOLKIT/bin/nvcc \ -DLIBCUDACXX_ENABLE_LIBCUDACXX_TESTS=ON \ -DLIBCUDACXX_ENABLE_LIBCXX_TESTS=OFF ``` ### Step 2: Build & Run the Tests In a Bash shell: ```bash cd ${LIBCUDACXX_ROOT}/build # build directory of this repo ../utils/nvidia/linux/perform_tests.bash --skip-libcxx-tests ``` ## *nix Systems, Cross Build/Test The procedure is demonstrated for NVCC + GCC cross compiler in C++14 mode on a Debian-like Linux systems targeting an aarch64 L4T system; the same basic steps are required on all other platforms. ### Step 0: Install Build Prerequisites Follow Step 0 for \*nix native builds/tests. ### Step 1: Generate the Build Files In a Bash shell: ```bash export HOST=executor.nvidia.com export USERNAME=ubuntu cd ${LIBCUDACXX_ROOT} cmake \ -S ./ \ -B build \ -DCMAKE_CUDA_COMPILER=$TOOLKIT/bin/nvcc \ -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ \ -DLIBCUDACXX_ENABLE_LIBCUDACXX_TESTS=ON \ -DLIBCUDACXX_ENABLE_LIBCXX_TESTS=OFF \ -DLIBCXX_EXECUTOR="SSHExecutor(host='${HOST}', username='${USERNAME}')" ``` Ensure that you can SSH to the target system from the host system without inputing a password (e.g. use SSH keys). ### Step 2: Build & Run the Tests Follow Step 2 for \*nix native builds/tests. ## *nix Systems, NVRTC Build/Test The procedure is demonstrated for NVRTC in C++11 mode on a Debian-like Linux systems; the same basic steps are required on all other platforms. ### Step 0: Install Build Prerequisites Follow Step 0 for \*nix native builds/tests. ### Step 1: Generate the Build Files In a Bash shell: ```bash cd ${LIBCUDACXX_ROOT} cmake \ -S ./ \ -B build \ -DCMAKE_CXX_COMPILER=$CC \ -DCMAKE_CUDA_COMPILER=$TOOLKIT/bin/nvcc \ -DLIBCUDACXX_ENABLE_LIBCUDACXX_TESTS=ON \ -DLIBCUDACXX_ENABLE_LIBCXX_TESTS=OFF \ -DLIBCUDACXX_TEST_WITH_NVRTC=ON ``` ### Step 2: Build & Run the Tests Follow Step 2 for \*nix native builds/tests. ## Windows, Native Build/Test ### Step 0: Install Build Requirements [Install Python](https://www.python.org/downloads/windows). Download [the get-pip.py bootstrap script](https://bootstrap.pypa.io/get-pip.py) and run it. Install the LLVM Integrated Tester (`lit`) using a Visual Studio command prompt: ```bat pip install lit ``` ### Step 0.5: Launching a Build Environment Visual Studio comes with a few build environments that are appropriate to use. The `x64 Native Tools Command Prompt` and other similarly named environments will work. If Powershell is desired, it would be best to launch it from within the native tools. This helps avoid configuration step issues. ### Step 1: Generate the Build Files In a Visual Studio command prompt: ```bat set LIBCUDACXX_ROOT=\path\to\libcudacxx # Helpful env var pointing to the git repo root. cd %LIBCUDACXX_ROOT% cmake ^ -S ./ ^ -B build ^ -G "Ninja" ^ -DCMAKE_CXX_COMPILER=cl ^ -DCMAKE_CUDA_COMPILER=nvcc ^ -DCMAKE_CUDA_COMPILER_FORCED=ON ^ -DLIBCUDACXX_ENABLE_LIBCUDACXX_TESTS=ON ^ -DLIBCUDACXX_ENABLE_LIBCXX_TESTS=OFF ``` ### Step 2: Build & Run the Tests `SM_ARCH` can be set to any integer value (Ex: "80", "86") ```bat set LIBCUDACXX_SITE_CONFIG=%LIBCUDACXX_ROOT%\build\test\lit.site.cfg lit %LIBCUDACXX_ROOT%\test -Dcompute_archs=%SM_ARCH% -sv --no-progress-bar ```