Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cam't build tests with meson in Linux #109

Open
JPeterMugaas opened this issue Jun 15, 2023 · 2 comments
Open

Cam't build tests with meson in Linux #109

JPeterMugaas opened this issue Jun 15, 2023 · 2 comments
Labels
meson Related to the Meson build system

Comments

@JPeterMugaas
Copy link
Contributor

JPeterMugaas commented Jun 15, 2023

When trying to build the tests with meson, I get a problem with d3d12 not found and the tests do NOT build. I'm sure that this is NOT a linux issue because when I build with cmake in Linux, I am able to build and run the tests. Looking at the meson scripts, I have to wonder why we are looking for "d3d12" because I thought we were supposed to create it but I might be missing something.

I'm using Archlinux with wsl2. Here's the build log from my process.

The Meson build system
Version: 1.1.1
Source dir: /home/jpmugaas/arch/directx-headers-git/src/DirectX-Headers
Build dir: /home/jpmugaas/arch/directx-headers-git/src/build
Build type: native build
Project name: DirectX-Headers
Project version: 1.610.0
C++ compiler for the host machine: c++ (gcc 13.1.1 "c++ (GCC) 13.1.1 20230429")
C++ linker for the host machine: c++ ld.bfd 2.40.0
Host machine cpu family: x86_64
Host machine cpu: x86_64
Library d3d12 found: NO
Library dxcore found: NO
Library gtest found: YES
Library gtest_main found: YES
Build targets in project: 5

DirectX-Headers 1.610.0

  User defined options
    auto_features: enabled
    buildtype    : plain
    libexecdir   : lib
    prefix       : /usr
    sbindir      : bin
    wrap_mode    : nodownload
    b_lto        : false
    b_pie        : true
    build-test   : true

Found ninja-1.11.1 at /usr/sbin/ninja
Core properties:
  Source dir /home/jpmugaas/arch/directx-headers-git/src/DirectX-Headers
  Build dir  /home/jpmugaas/arch/directx-headers-git/src/build

Main project options:

  Core options                   Current Value                    Possible Values                  Description

  --------------                 -------------                    ---------------                  -----------

  auto_features                  enabled                          [enabled, disabled, auto]        Override value of all 'auto' features
  backend                        ninja                            [ninja, vs, vs2010, vs2012,      Backend to use

                                                                   vs2013, vs2015, vs2017, vs2019,

                                                                   vs2022, xcode, none]

  buildtype                      plain                            [plain, debug, debugoptimized,   Build type to use

                                                                   release, minsize, custom]

  cmake_prefix_path              []                               []                               List of additional prefixes for cmake to search
  debug                          false                            [true, false]                    Enable debug symbols and other information
  default_library                shared                           [shared, static, both]           Default library type

  force_fallback_for             []                               []                               Force fallback for those subprojects
  install_umask                  0022                             [preserve, 0000-0777]            Default umask to apply on permissions of installed files
  layout                         mirror                           [mirror, flat]                   Build directory layout
  optimization                   plain                            [plain, 0, g, 1, 2, 3, s]        Optimization level

  pkg_config_path                []                               []                               List of additional paths for pkg-config to search
  prefer_static                  false                            [true, false]                    Whether to try static linking before shared linking
  strip                          false                            [true, false]                    Strip targets on install
  unity                          off                              [on, off, subprojects]           Unity build

  unity_size                     4                                >=2                              Unity block size

  vsenv                          false                            [true, false]                    Activate Visual Studio environment
  warning_level                  1                                [0, 1, 2, 3, everything]         Compiler warning level to use
  werror                         false                            [true, false]                    Treat warnings as errors
  wrap_mode                      nodownload                       [default, nofallback,            Wrap mode

                                                                   nodownload, forcefallback,

                                                                   nopromote]


  Backend options                Current Value                    Possible Values                  Description

  -----------------              -------------                    ---------------                  -----------

  backend_max_links              0                                >=0                              Maximum number of linker processes to run or 0 for no limit

  Base options                   Current Value                    Possible Values                  Description

  --------------                 -------------                    ---------------                  -----------

  b_asneeded                     true                             [true, false]                    Use -Wl,--as-needed when linking
  b_colorout                     always                           [auto, always, never]            Use colored output

  b_coverage                     false                            [true, false]                    Enable coverage tracking.
  b_lto                          false                            [true, false]                    Use link time optimization
  b_lto_threads                  0                                                                 Use multiple threads for Link Time Optimization
  b_lundef                       true                             [true, false]                    Use -Wl,--no-undefined when linking
  b_ndebug                       false                            [true, false, if-release]        Disable asserts

  b_pch                          true                             [true, false]                    Use precompiled headers
  b_pgo                          off                              [off, generate, use]             Use profile guided optimization
  b_pie                          true                             [true, false]                    Build executables as position independent
  b_sanitize                     none                             [none, address, thread,          Code sanitizer to use

                                                                   undefined, memory, leak,

                                                                   address,undefined]

  b_staticpic                    true                             [true, false]                    Build static libraries as position independent

  Compiler options               Current Value                    Possible Values                  Description

  ------------------             -------------                    ---------------                  -----------

  cpp_args                       [-march=x86-64, -mtune=generic,  []                               Extra arguments passed to the cpp compiler
                                  -O2, -pipe, -fno-plt,

                                  -fexceptions,

                                  -Wp,-D_FORTIFY_SOURCE=2,

                                  -Wformat, -Werror=format-

                                  security, -fstack-clash-

                                  protection, -fcf-protection,

                                  -Wp,-D_GLIBCXX_ASSERTIONS]

  cpp_debugstl                   false                            [true, false]                    STL debug mode

  cpp_eh                         default                          [none, default, a, s, sc]        C++ exception handling type.
  cpp_link_args                  [-Wl,-O1,--sort-common,--as-     []                               Extra arguments passed to the cpp linker
                                  needed,-z,relro,-z,now,

                                  -march=x86-64, -mtune=generic,

                                  -O2, -pipe, -fno-plt,

                                  -fexceptions,

                                  -Wp,-D_FORTIFY_SOURCE=2,

                                  -Wformat, -Werror=format-

                                  security, -fstack-clash-

                                  protection, -fcf-protection,

                                  -Wp,-D_GLIBCXX_ASSERTIONS]

  cpp_rtti                       true                             [true, false]                    Enable RTTI

  cpp_std                        c++14                            [none, c++98, c++03, c++11,      C++ language standard to use
                                                                   c++14, c++17, c++1z, c++2a,

                                                                   c++20, gnu++03, gnu++11,

                                                                   gnu++14, gnu++17, gnu++1z,

                                                                   gnu++2a, gnu++20, c++23,

                                                                   gnu++23]


  pkgconfig module options       Current Value                    Possible Values                  Description

  --------------------------     -------------                    ---------------                  -----------

  pkgconfig.relocatable          false                            [true, false]                    Generate pkgconfig files as relocatable

  Directories                    Current Value                    Possible Values                  Description

  -------------                  -------------                    ---------------                  -----------

  bindir                         bin                                                               Executable directory

  datadir                        share                                                             Data file directory

  includedir                     include                                                           Header file directory

  infodir                        share/info                                                        Info page directory

  libdir                         lib                                                               Library directory

  libexecdir                     lib                                                               Library executable directory
  licensedir                                                                                       Licenses directory

  localedir                      share/locale                                                      Locale data directory

  localstatedir                  /var                                                              Localstate data directory
  mandir                         share/man                                                         Manual page directory

  prefix                         /usr                                                              Installation prefix

  sbindir                        bin                                                               System executable directory
  sharedstatedir                 /var/lib                                                          Architecture-independent data directory
  sysconfdir                     /etc                                                              Sysconf data directory

  Testing options                Current Value                    Possible Values                  Description

  -----------------              -------------                    ---------------                  -----------

  errorlogs                      true                             [true, false]                    Whether to print the logs from failing tests
  stdsplit                       true                             [true, false]                    Split stdout and stderr in test logs

  Project options                Current Value                    Possible Values                  Description

  -----------------              -------------                    ---------------                  -----------

  build-test                     true                             [true, false]                    Build the test

==> Starting check()...
[1/11] Compiling C++ object libDirectX-Guids.a.p/src_dxguids.cpp.o
[2/11] Linking static target libDirectX-Guids.a
[3/11] Compiling C++ object libd3dx12-format-properties.a.p/src_d3dx12_property_format_table.cpp.o
[4/11] Linking static target libd3dx12-format-properties.a
[5/11] Compiling C++ object test/DirectX-Headers-Test.p/test.cpp.o
[6/11] Linking target test/DirectX-Headers-Test
FAILED: test/DirectX-Headers-Test
c++  -o test/DirectX-Headers-Test test/DirectX-Headers-Test.p/test.cpp.o -Wl,--as-needed -Wl,--no-undefined -pie -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -Wp,-D_GLIBCXX_ASSERTIONS -Wl,--start-group libd3dx12-format-properties.a libDirectX-Guids.a -Wl,--end-group
/usr/sbin/ld: test/DirectX-Headers-Test.p/test.cpp.o: in function `main':
test.cpp:(.text.startup+0x41): undefined reference to `DXCoreCreateAdapterFactory'
/usr/sbin/ld: test.cpp:(.text.startup+0xae): undefined reference to `D3D12CreateDevice'
collect2: error: ld returned 1 exit status
[7/11] Compiling C++ object test/DirectX-Headers-Check-Feature-Support-Test.p/feature_check_test.cpp.o
[8/11] Compiling C++ object googletest/Feature-Support-Test.p/feature_support_test.cpp.o
ninja: build stopped: subcommand failed.
@jenatali
Copy link
Member

#110 will at least fix the build failures by causing the tests to be skipped. I forgot that this isn't the default behavior for a not-found library.

In WSL, these libraries are made available in /usr/lib/wsl/lib, which is added to LD_LIBRARY_PATH automatically (unless disabled), which allows the runtime linker to find them out-of-the-box, but the static linker can't find them without additional configuration. You can add that path to the LIBRARY_PATH environment variable (according to the comment at the top of this docs page) to get meson to actually find those libraries.

@JPeterMugaas
Copy link
Contributor Author

I tried #110 but that did not work when doing something like "ninja test".

==> Starting check()...
[6/11] Linking target test/DirectX-Headers-Test
FAILED: test/DirectX-Headers-Test
c++  -o test/DirectX-Headers-Test test/DirectX-Headers-Test.p/test.cpp.o -Wl,--as-needed -Wl,--no-undefined -pie -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -Wp,-D_GLIBCXX_ASSERTIONS -Wl,--start-group libd3dx12-format-properties.a libDirectX-Guids.a -Wl,--end-group
/usr/sbin/ld: test/DirectX-Headers-Test.p/test.cpp.o: in function `main':
test.cpp:(.text.startup+0x41): undefined reference to `DXCoreCreateAdapterFactory'
/usr/sbin/ld: test.cpp:(.text.startup+0xae): undefined reference to `D3D12CreateDevice'
collect2: error: ld returned 1 exit status

My impression is that it's not able to locate the static libraries, libd3dx12-format-properties.a and libDirectX-Guids.a.

@walbourn walbourn added cmake Related to how this library makes use of CMake meson Related to the Meson build system and removed cmake Related to how this library makes use of CMake labels Nov 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
meson Related to the Meson build system
Projects
None yet
Development

No branches or pull requests

3 participants