summaryrefslogtreecommitdiffhomepage
path: root/tests/test_02_linker/linker_test.cc
blob: cc580a3a664264d0046db6ba0db1f23fe77c1663 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/* ========================================

   Copyright (C) 2024-2025 Amlal El Mahrouss, Licensed under the Apache 2.0 license

   ======================================== */

/// @brief Linker Unit test, from the C++ unit to the final executable.
/// @author Amlal El Mahrouss

#include <gtest/gtest.h>

TEST(LinkerTest, BasicLinkTest) {
  /// @note this is the driver, it will look for a .cc.pp (.pp stands for pre-processed)
  auto expr = std::system("pef-amd64-cxxdrv sample/sample.cc");
  EXPECT_TRUE(expr == 0) << "C++ Driver did not compile the easy C++ unit.";

  expr = std::system("asm -asm:x64 sample/sample.cc.pp.masm");
  EXPECT_TRUE(expr == 0) << "Assembler did not assemble the easy asm unit.";

  expr = std::system("ld64 -amd64 sample/sample.cc.pp.obj -start __NECTI_main -output main.exec");
  EXPECT_TRUE(expr == 0) << "Linker did not link the easy object.";
}