Skip to content

Commit 9188e14

Browse files
Speed up incremental builds
1 parent ed477dc commit 9188e14

6 files changed

Lines changed: 40 additions & 48 deletions

File tree

CMakeLists.txt

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ set(LAVATUBE_SRC
182182
)
183183

184184
add_custom_command(
185-
OUTPUT .autogenerated
185+
OUTPUT ${CMAKE_BINARY_DIR}/.autogenerated
186186
BYPRODUCTS ${SRC_ROOT}/generated/struct_read_auto.cpp ${SRC_ROOT}/generated/struct_write_auto.cpp ${SRC_ROOT}/generated/struct_read_auto.h ${SRC_ROOT}/generated/struct_write_auto.h
187187
${SRC_ROOT}/generated/read_auto.cpp ${SRC_ROOT}/generated/write_auto.cpp ${SRC_ROOT}/generated/read_auto.h ${SRC_ROOT}/generated/write_auto.h ${SRC_ROOT}/generated/util_auto.cpp
188188
${SRC_ROOT}/generated/util_auto.h ${SRC_ROOT}/generated/vk_wrapper_auto.h ${SRC_ROOT}/generated/vk_wrapper_auto.cpp
@@ -193,14 +193,14 @@ add_custom_command(
193193
COMMAND ${PYTHON_EXECUTABLE} ${SRC_ROOT}/scripts/lava.py
194194
COMMAND ${PYTHON_EXECUTABLE} ${SRC_ROOT}/scripts/vk_wrapper.py
195195
COMMAND ${PYTHON_EXECUTABLE} ${SRC_ROOT}/scripts/tostring.py
196-
COMMAND touch .autogenerated
196+
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_BINARY_DIR}/.autogenerated
197197
WORKING_DIRECTORY ${SRC_ROOT}
198198
DEPENDS ${SRC_ROOT}/scripts/lava.py ${SRC_ROOT}/external/tracetooltests/external/Vulkan-Headers/registry/vk.xml ${SRC_ROOT}/external/tracetooltests/scripts/spec.py
199199
${SRC_ROOT}/src/hardcode_read.cpp ${SRC_ROOT}/src/hardcode_write.cpp ${SRC_ROOT}/scripts/util.py ${SRC_ROOT}/scripts/vk_wrapper.py
200200
)
201201

202202
# The below is necessary to inform cmake that we should not run the above once per target
203-
add_custom_target(sync_generated DEPENDS .autogenerated)
203+
add_custom_target(sync_generated DEPENDS ${CMAKE_BINARY_DIR}/.autogenerated)
204204

205205
add_library(lavatube STATIC ${COMMON_SRC} ${LAVATUBE_SRC})
206206
target_include_directories(lavatube ${COMMON_INCLUDE})
@@ -215,9 +215,9 @@ target_include_directories(VkLayer_lavatube ${COMMON_INCLUDE})
215215
target_link_libraries(VkLayer_lavatube ${COMMON_LIBRARIES})
216216
target_compile_options(VkLayer_lavatube PRIVATE ${COMMON_FLAGS})
217217
target_compile_definitions(VkLayer_lavatube PUBLIC COMPILE_LAYER)
218-
add_custom_command(TARGET VkLayer_lavatube POST_BUILD COMMAND mkdir -p implicit_layer.d)
219-
add_custom_command(TARGET VkLayer_lavatube POST_BUILD COMMAND mv libVkLayer_lavatube.so implicit_layer.d/libVkLayer_lavatube.so)
220-
add_custom_command(TARGET VkLayer_lavatube POST_BUILD COMMAND cp ${SRC_ROOT}/VkLayer_lavatube.json implicit_layer.d/VkLayer_lavatube.json)
218+
add_custom_command(TARGET VkLayer_lavatube POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/implicit_layer.d)
219+
add_custom_command(TARGET VkLayer_lavatube POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:VkLayer_lavatube> ${CMAKE_BINARY_DIR}/implicit_layer.d/libVkLayer_lavatube.so)
220+
add_custom_command(TARGET VkLayer_lavatube POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SRC_ROOT}/VkLayer_lavatube.json ${CMAKE_BINARY_DIR}/implicit_layer.d/VkLayer_lavatube.json)
221221
add_dependencies(VkLayer_lavatube sync_generated)
222222
install(FILES ${CMAKE_BINARY_DIR}/implicit_layer.d/VkLayer_lavatube.json ${CMAKE_BINARY_DIR}/implicit_layer.d/libVkLayer_lavatube.so DESTINATION implicit_layer.d)
223223
install(PROGRAMS scripts/lava-capture.py TYPE BIN)
@@ -228,7 +228,6 @@ add_executable(mprotect tests/mprotect.cpp src/util.cpp src/util.h)
228228
target_include_directories(mprotect ${COMMON_INCLUDE})
229229
target_link_libraries(mprotect ${MOST_COMMON_LIBRARIES} pthread)
230230
target_compile_options(mprotect PRIVATE ${COMMON_FLAGS})
231-
target_compile_definitions(mprotect PUBLIC COMPILE_LAYER PUBLIC NO_JSON)
232231

233232
#add_executable(userfaultfd tests/userfaultfd.cpp src/util.cpp src/util.h)
234233
#target_include_directories(userfaultfd ${COMMON_INCLUDE})
@@ -388,23 +387,20 @@ add_executable(write4 tests/write4.cpp src/filewriter.cpp src/util.cpp)
388387
target_include_directories(write4 ${COMMON_INCLUDE})
389388
target_link_libraries(write4 ${MOST_COMMON_LIBRARIES} density LZ4::LZ4 pthread)
390389
target_compile_options(write4 PRIVATE ${COMMON_FLAGS})
391-
target_compile_definitions(write4 PUBLIC COMPILE_LAYER NO_JSON)
392390
add_dependencies(write4 sync_generated)
393391
add_test(NAME write_test_4 COMMAND ${CMAKE_CURRENT_BINARY_DIR}/write4)
394392

395393
add_executable(read4 tests/read4.cpp src/filereader.cpp src/util.cpp)
396394
target_include_directories(read4 ${COMMON_INCLUDE})
397395
target_link_libraries(read4 ${MOST_COMMON_LIBRARIES} density LZ4::LZ4 pthread)
398396
target_compile_options(read4 PRIVATE ${COMMON_FLAGS})
399-
target_compile_definitions(read4 PUBLIC COMPILE_LAYER NO_JSON)
400397
add_dependencies(read4 sync_generated)
401398
add_test(NAME read_test_4 COMMAND ${CMAKE_CURRENT_BINARY_DIR}/read4)
402399
set_property(TEST read_test_4 APPEND PROPERTY DEPENDS write_test_4)
403400

404401
add_executable(write5 tests/write5.cpp src/filewriter.cpp src/filereader.cpp src/util.cpp)
405402
target_include_directories(write5 ${COMMON_INCLUDE})
406403
target_link_libraries(write5 ${MOST_COMMON_LIBRARIES} density LZ4::LZ4 pthread)
407-
target_compile_definitions(write5 PUBLIC COMPILE_LAYER NO_JSON)
408404
target_compile_options(write5 PRIVATE ${COMMON_FLAGS})
409405
add_dependencies(write5 sync_generated)
410406
add_test(NAME write_test_5 COMMAND ${CMAKE_CURRENT_BINARY_DIR}/write5)

src/json_helpers.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
// --- JSON write helpers ---
22
// We only write out static info that does not change for the duration of the trace.
33

4+
#include "jsoncpp/json/writer.h"
5+
46
#include "json_helpers.h"
57

68
Json::Value trackable_json(const trackable* t)
@@ -499,3 +501,31 @@ trackeddescriptorsetlayout trackeddescriptorsetlayout_json(const Json::Value& v)
499501
t.enter_initialized();
500502
return t;
501503
}
504+
505+
void write_json(FILE* fp, const Json::Value& v)
506+
{
507+
Json::StyledWriter writer;
508+
std::string data = writer.write(v);
509+
size_t written;
510+
int err = 0;
511+
do {
512+
written = fwrite(data.c_str(), data.size(), 1, fp);
513+
err = ferror(fp);
514+
} while (!err && !written);
515+
if (err)
516+
{
517+
ELOG("Failed to write dictionary: %s", strerror(err));
518+
}
519+
}
520+
521+
void write_json(const std::string& path, const Json::Value& v)
522+
{
523+
FILE* fp = fopen(path.c_str(), "w");
524+
if (!fp)
525+
{
526+
ELOG("Failed to open \"%s\": %s", path.c_str(), strerror(errno));
527+
return;
528+
}
529+
write_json(fp, v);
530+
fclose(fp);
531+
}

src/json_helpers.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ Json::Value trackedrenderpass_json(const trackedrenderpass* t);
3030
Json::Value trackedpipelinelayout_json(const trackedpipelinelayout* t);
3131
Json::Value trackeddescriptorsetlayout_json(const trackeddescriptorsetlayout* t);
3232

33+
void write_json(const std::string& path, const Json::Value& v);
34+
void write_json(FILE* fp, const Json::Value& v);
35+
3336
// --- JSON read helpers ---
3437

3538
trackable trackable_json(const Json::Value& v);

src/read.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "read.h"
66
#include "packfile.h"
77
#include "jsoncpp/json/reader.h"
8+
#include "json_helpers.h"
89
#include "read_auto.h"
910
#include "util_auto.h"
1011

src/util.cpp

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -389,33 +389,3 @@ const char* pretty_print_VkObjectType(VkObjectType val)
389389
}
390390
return "Error";
391391
}
392-
393-
#ifndef NO_JSON
394-
void write_json(FILE* fp, const Json::Value& v)
395-
{
396-
Json::StyledWriter writer;
397-
std::string data = writer.write(v);
398-
size_t written;
399-
int err = 0;
400-
do {
401-
written = fwrite(data.c_str(), data.size(), 1, fp);
402-
err = ferror(fp);
403-
} while (!err && !written);
404-
if (err)
405-
{
406-
ELOG("Failed to write dictionary: %s", strerror(err));
407-
}
408-
}
409-
410-
void write_json(const std::string& path, const Json::Value& v)
411-
{
412-
FILE* fp = fopen(path.c_str(), "w");
413-
if (!fp)
414-
{
415-
ELOG("Failed to open \"%s\": %s", path.c_str(), strerror(errno));
416-
return;
417-
}
418-
write_json(fp, v);
419-
fclose(fp);
420-
}
421-
#endif

src/util.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,6 @@
1515
#include <assert.h>
1616
#include <vector>
1717
#include <string>
18-
#ifndef NO_JSON
19-
#include "jsoncpp/json/value.h"
20-
#endif
2118

2219
#define VK_NO_PROTOTYPES
2320
#include "vulkan_utility.h"
@@ -256,8 +253,3 @@ typedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceTracingObjectPropertyTRACETOOLTEST)(
256253
int get_env_int(const char* name, int v);
257254
int get_env_bool(const char* name, int v);
258255
FILE* get_env_file(const char* name, FILE* fallback);
259-
260-
#ifndef NO_JSON
261-
void write_json(const std::string& path, const Json::Value& v);
262-
void write_json(FILE* fp, const Json::Value& v);
263-
#endif

0 commit comments

Comments
 (0)