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

cmake rules fail when generating for "Ninja Multi-Config" #231

Closed
madsbuvi opened this issue Nov 28, 2020 · 3 comments · Fixed by #249
Closed

cmake rules fail when generating for "Ninja Multi-Config" #231

madsbuvi opened this issue Nov 28, 2020 · 3 comments · Fixed by #249
Labels
bug Something isn't working synced to gitlab Synchronized to OpenXR internal GitLab

Comments

@madsbuvi
Copy link

madsbuvi commented Nov 28, 2020

Platform: Windows 10 64bit
Compiler: MSVC2019 x64
CMake version: 19.1

This happens only in a clone of the OpenXR-SDK repo. It does not happen in a clone of the OpenXR-SDK-Source repo.

Reproduce:

git clone https://github.com/KhronosGroup/OpenXR-SDK.git
cd OpenXR-SDK
mkdir build
cd build
cmake .. -G "Ninja Multi-Config"
cmake --build . --config Release --target openxr_loader

Result:

H:\repos\OpenXR-SDK\build>cmake --build . --config Release --target openxr_loader
ninja: error: 'cmake_object_order_depends_target_openxr_loader_DEBUG', needed by '../src/xr_generated_dispatch_table.c', missing and no known rule to make it

H:\repos\OpenXR-SDK\build>cmake --build . --config RelWithDebInfo --target openxr_loader
ninja: error: 'cmake_object_order_depends_target_openxr_loader_DEBUG', needed by '../src/xr_generated_dispatch_table.c', missing and no known rule to make it

H:\repos\OpenXR-SDK\build>cmake --build . --config Debug --target openxr_loader
ninja: error: 'cmake_object_order_depends_target_openxr_loader_RELEASE', needed by '../src/xr_generated_dispatch_table.c', missing and no known rule to make it
@rpavlik-bot
Copy link
Collaborator

An issue (number 1516) has been filed to correspond to this issue in the internal Khronos GitLab (Khronos members only: KHR:openxr/openxr#1516 ), to facilitate working group processes.

This GitHub issue will continue to be the main site of discussion.

@rpavlik-bot rpavlik-bot added the synced to gitlab Synchronized to OpenXR internal GitLab label Feb 4, 2021
@rpavlik
Copy link
Contributor

rpavlik commented Apr 2, 2021

Hmm, this is very weird. (Even ignoring the fact I had never used the ninja multi-config mode before...)

@rpavlik
Copy link
Contributor

rpavlik commented Apr 2, 2021

OK, I figured this one out, it had to do with dependencies being added unnecessarily on generated files, since OpenXR-SDK has all files pre-generated.

@rpavlik rpavlik added the bug Something isn't working label Apr 2, 2021
rpavlik added a commit that referenced this issue Apr 14, 2021
The main SDK change in this release is that the OpenXR headers NO LONGER
EXPOSE EXTENSION FUNCTION PROTOTYPES because extension functions are not
exported by the loader. This should prevent some confusion during
development without affecting code that correctly compiles and links
with older SDKs. Code that was compiled but not linked (for instance,
the automated tests of example source in the specification) and that
would not have successfully linked may have their defects highlighted by
this change, however. If you need those prototypes still available,
there is a preprocessor define that can re-enable them. The function
pointer definitions are always available.

In addition to that header change, this release contains three new
vendor extensions plus an assortment of SDK fixes.

-   Registry
    -   Add XR_VARJO_foveated_rendering vendor extension. (internal MR
        1981)
    -   Add XR_VARJO_composition_layer_depth_test vendor extension.
        (internal MR 1998)
    -   Add XR_VARJO_environment_depth_estimation vendor extension.
        (internal MR 1998)
    -   Add uint16_t to openxr_platform_defines (and associated scripts)
        so it may be used easily by extensions. (internal MR 2017)
    -   Reserve extension 149 for working group use. (internal MR 1999)
    -   Reserve extension numbers 150 to 155 for ULTRALEAP extensions
        (internal MR 2006)
    -   Reserve extension numbers 156-165 for Facebook. (internal MR
        2018)
-   SDK
    -   Hide prototypes for extension functions unless explicitly
        requested by defining XR_EXTENSION_PROTOTYPES. These functions
        are not exported from the loader, so having their prototypes
        available is confusing and leads to link errors, etc.
        (OpenXR-SDK-Source/#251, OpenXR-SDK-Source/#174, internal issue
        1554, internal issue 1338)
    -   Also list API layers in list tool. (internal MR 1991)
    -   Ensure we expose the OpenXR headers in the build-time interface
        of the loader, as well as the install-time interface, for use
        with FetchContent.cmake. (OpenXR-SDK-Source/#242,
        OpenXR-SDK-Source/#195, internal issue 1409)
    -   Improve BUILDING.md, including adding details on how to specify
        architecture for VS2019. (OpenXR-SDK-Source/#245,
        OpenXR-SDK-Source/#253)
    -   Loader: Fix loader failing to load on Windows 7 due to pathcch
        dependency. (OpenXR-SDK-Source/#239, OpenXR-SDK-Source/#214,
        internal issue 1471, OpenXR-SDK-Source/#236, internal issue
        1519)
    -   Loader: Fix conflicting filename in openxr_loader.def causing a
        linker warning when building debug for Windows.
        (OpenXR-SDK-Source/#246)
    -   Update cgenerator.py to generate header comments in openxr.h to
        show when a struct extends another struct (internal MR 2005)
    -   hello_xr: Check for shaderStorageImageMultisample feature in
        Vulkan plugin before using it. (OpenXR-SDK-Source/#234,
        OpenXR-SDK-Source/#233, internal issue 1518)
    -   hello_xr: Make sure common.h includes the reflection header that
        it uses. (OpenXR-SDK-Source/#247)
    -   layers: Revise documentation, re-formatting and updating to
        refer to real functions and URLs. (internal MR 2012)
    -   loader: Check the instance handle passed to
        xrGetInstanceProcAddr. (internal MR 1980)
    -   loader: Fix building OpenXR-SDK with CMake’s multi-config Ninja
        generator. (OpenXR-SDK-Source/#249, OpenXR-SDK-Source/#231)
    -   openxr_reflection.h: Make reproducible/deterministic by sorting
        protection defines in the script. (internal MR 1993, internal
        issue 1424)
    -   xr_dependencies (shared utility): Include unknwn.h on Windows,
        even without D3D enabled. (OpenXR-SDK-Source/#250,
        OpenXR-SDK-Source/#237)
rhabacker pushed a commit to rhabacker/OpenXR-SDK-Source that referenced this issue Nov 16, 2022
The main SDK change in this release is that the OpenXR headers NO LONGER
EXPOSE EXTENSION FUNCTION PROTOTYPES because extension functions are not
exported by the loader. This should prevent some confusion during
development without affecting code that correctly compiles and links
with older SDKs. Code that was compiled but not linked (for instance,
the automated tests of example source in the specification) and that
would not have successfully linked may have their defects highlighted by
this change, however. If you need those prototypes still available,
there is a preprocessor define that can re-enable them. The function
pointer definitions are always available.

In addition to that header change, this release contains three new
vendor extensions plus an assortment of SDK fixes.

-   Registry
    -   Add XR_VARJO_foveated_rendering vendor extension. (internal MR
        1981)
    -   Add XR_VARJO_composition_layer_depth_test vendor extension.
        (internal MR 1998)
    -   Add XR_VARJO_environment_depth_estimation vendor extension.
        (internal MR 1998)
    -   Add uint16_t to openxr_platform_defines (and associated scripts)
        so it may be used easily by extensions. (internal MR 2017)
    -   Reserve extension 149 for working group use. (internal MR 1999)
    -   Reserve extension numbers 150 to 155 for ULTRALEAP extensions
        (internal MR 2006)
    -   Reserve extension numbers 156-165 for Facebook. (internal MR
        2018)
-   SDK
    -   Hide prototypes for extension functions unless explicitly
        requested by defining XR_EXTENSION_PROTOTYPES. These functions
        are not exported from the loader, so having their prototypes
        available is confusing and leads to link errors, etc.
        (OpenXR-SDK-Source/KhronosGroup#251, OpenXR-SDK-Source/KhronosGroup#174, internal issue
        1554, internal issue 1338)
    -   Also list API layers in list tool. (internal MR 1991)
    -   Ensure we expose the OpenXR headers in the build-time interface
        of the loader, as well as the install-time interface, for use
        with FetchContent.cmake. (OpenXR-SDK-Source/KhronosGroup#242,
        OpenXR-SDK-Source/KhronosGroup#195, internal issue 1409)
    -   Improve BUILDING.md, including adding details on how to specify
        architecture for VS2019. (OpenXR-SDK-Source/KhronosGroup#245,
        OpenXR-SDK-Source/KhronosGroup#253)
    -   Loader: Fix loader failing to load on Windows 7 due to pathcch
        dependency. (OpenXR-SDK-Source/KhronosGroup#239, OpenXR-SDK-Source/KhronosGroup#214,
        internal issue 1471, OpenXR-SDK-Source/KhronosGroup#236, internal issue
        1519)
    -   Loader: Fix conflicting filename in openxr_loader.def causing a
        linker warning when building debug for Windows.
        (OpenXR-SDK-Source/KhronosGroup#246)
    -   Update cgenerator.py to generate header comments in openxr.h to
        show when a struct extends another struct (internal MR 2005)
    -   hello_xr: Check for shaderStorageImageMultisample feature in
        Vulkan plugin before using it. (OpenXR-SDK-Source/KhronosGroup#234,
        OpenXR-SDK-Source/KhronosGroup#233, internal issue 1518)
    -   hello_xr: Make sure common.h includes the reflection header that
        it uses. (OpenXR-SDK-Source/KhronosGroup#247)
    -   layers: Revise documentation, re-formatting and updating to
        refer to real functions and URLs. (internal MR 2012)
    -   loader: Check the instance handle passed to
        xrGetInstanceProcAddr. (internal MR 1980)
    -   loader: Fix building OpenXR-SDK with CMake’s multi-config Ninja
        generator. (OpenXR-SDK-Source/KhronosGroup#249, OpenXR-SDK-Source/KhronosGroup#231)
    -   openxr_reflection.h: Make reproducible/deterministic by sorting
        protection defines in the script. (internal MR 1993, internal
        issue 1424)
    -   xr_dependencies (shared utility): Include unknwn.h on Windows,
        even without D3D enabled. (OpenXR-SDK-Source/KhronosGroup#250,
        OpenXR-SDK-Source/KhronosGroup#237)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working synced to gitlab Synchronized to OpenXR internal GitLab
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants