Skip to content

Commit c2af0b2

Browse files
committed
Fix NSC builtin unmounting
1 parent daaf6db commit c2af0b2

4 files changed

Lines changed: 42 additions & 7 deletions

File tree

src/nbl/system/ISystem.cpp

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,16 @@
1212
#include "nbl/system/CArchiveLoaderTar.h"
1313
#include "nbl/system/CMountDirectoryArchive.h"
1414

15+
#include <array>
16+
1517
using namespace nbl;
1618
using namespace nbl::system;
1719

20+
namespace
21+
{
22+
constexpr std::array<const char*, 4> builtinMountPoints = { "nbl/builtin", "nbl/video", "spirv", "boost" };
23+
}
24+
1825
ISystem::ISystem(core::smart_refctd_ptr<ISystem::ICaller>&& caller) : m_dispatcher(std::move(caller))
1926
{
2027
addArchiveLoader(core::make_smart_refctd_ptr<CArchiveLoaderZip>(nullptr));
@@ -336,16 +343,14 @@ void ISystem::unmountBuiltins() {
336343
}
337344
};
338345

339-
removeByKey("nbl");
340-
removeByKey("spirv");
341-
removeByKey("boost");
346+
for (const auto* mountPoint : builtinMountPoints)
347+
removeByKey(mountPoint);
342348
}
343349

344350
bool ISystem::areBuiltinsMounted() const
345351
{
346-
// TODO: we need to span our keys and reuse accross this cpp to not DRY
347-
for (const auto& it : { "nbl/builtin", "nbl/video", "spirv", "boost" })
348-
if (!isDirectory(path(it)))
352+
for (const auto* mountPoint : builtinMountPoints)
353+
if (!isDirectory(path(mountPoint)))
349354
return false;
350355

351356
return true;
@@ -394,4 +399,4 @@ bool ISystem::isDebuggerAttached()
394399

395400
return false;
396401
}
397-
#endif
402+
#endif

tools/nsc/CMakeLists.txt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,9 @@ set(NBL_NSC_PREINSTALL_TARGET_EXE_FILENAME $<TARGET_FILE_NAME:${EXECUTABLE_NAME}
269269
set(NBL_NSC_PREINSTALL_TARGET_EXE_FILEPATH "${NBL_NSC_PREINSTALL_TARGET_EXE_DIRECTORY}/${NBL_NSC_PREINSTALL_TARGET_EXE_FILENAME}")
270270
set(NBL_NSC_BUILD_INFO_FILENAME build-info.json)
271271
set(NBL_NSC_PREINSTALL_TARGET_BUILD_INFO "${NBL_NSC_PREINSTALL_TARGET_EXE_DIRECTORY}/${NBL_NSC_BUILD_INFO_FILENAME}")
272+
set(NBL_NSC_UNMOUNT_TEST_INPUT "${CMAKE_CURRENT_SOURCE_DIR}/test/hlsl/unmount/input.hlsl")
273+
set(NBL_NSC_UNMOUNT_TEST_INCLUDE_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/test/hlsl/unmount/overlay")
274+
set(NBL_NSC_UNMOUNT_TEST_OUTPUT "${NBL_NSC_COMPILE_DIRECTORY}/unmount.preprocessed.hlsl")
272275

273276
add_test(NAME NBL_NSC_COMPILE_AT_EXE_CWD_TEST
274277
COMMAND "${NBL_NSC_PREINSTALL_TARGET_EXE_FILENAME}" ${NBL_NSC_COMPILE_COMMAND}
@@ -287,6 +290,17 @@ add_test(NAME NBL_NSC_DUMP_BUILD_INFO_TEST
287290
COMMAND_EXPAND_LISTS
288291
)
289292

293+
add_test(NAME NBL_NSC_NO_NBL_BUILTINS_UNMOUNT_TEST
294+
COMMAND "${NBL_NSC_PREINSTALL_TARGET_EXE_FILEPATH}"
295+
-P
296+
-no-nbl-builtins
297+
-Fc "${NBL_NSC_UNMOUNT_TEST_OUTPUT}"
298+
-I "${NBL_NSC_UNMOUNT_TEST_INCLUDE_ROOT}"
299+
"${NBL_NSC_UNMOUNT_TEST_INPUT}"
300+
WORKING_DIRECTORY "${NBL_NSC_PREINSTALL_TARGET_EXE_DIRECTORY}"
301+
COMMAND_EXPAND_LISTS
302+
)
303+
290304
if(NBL_ENABLE_DOCKER_INTEGRATION)
291305

292306
find_program(DOCKER_EXE NAMES docker REQUIRED)
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#include "nbl/builtin/hlsl/math/linalg/basic.hlsl"
2+
3+
#ifndef NBL_UNMOUNT_TEST_MARKER
4+
#error NBL_UNMOUNT_TEST_MARKER missing
5+
#endif
6+
7+
float4 main() : SV_Target
8+
{
9+
return float4(1.0, 0.0, 0.0, 1.0);
10+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#ifndef _NBL_BUILTIN_HLSL_MATH_LINALG_BASIC_INCLUDED_
2+
#define _NBL_BUILTIN_HLSL_MATH_LINALG_BASIC_INCLUDED_
3+
4+
#define NBL_UNMOUNT_TEST_MARKER 0x4E424C55
5+
6+
#endif

0 commit comments

Comments
 (0)