From 5d06cb379c9153a78ea37c13ff533eb68799f2fc Mon Sep 17 00:00:00 2001 From: Lee Kerley Date: Fri, 31 Jan 2025 14:25:50 -0800 Subject: [PATCH 1/7] Build the data library and then install it as a second step. Allowing for better incremental developer workflow by tracking files that have changed. --- libraries/CMakeLists.txt | 50 +++++++++++++++++++++++------ source/MaterialXTest/CMakeLists.txt | 8 ++--- 2 files changed, 44 insertions(+), 14 deletions(-) diff --git a/libraries/CMakeLists.txt b/libraries/CMakeLists.txt index 2b2097e203..568e4ac109 100644 --- a/libraries/CMakeLists.txt +++ b/libraries/CMakeLists.txt @@ -1,16 +1,46 @@ +set(MATERIALX_DATA_LIBRARY_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/mxDataLibrary) + +file(GLOB_RECURSE MTLX_DATA_LIBRARY_SOURCE_FILES + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + CONFIGURE_DEPENDS + LIST_DIRECTORIES false + *.mtlx + *.md + *.glsl + *.osl + *.h + *.metal) + +foreach(SOURCE_FILE IN LISTS MTLX_DATA_LIBRARY_SOURCE_FILES) + set(SOURCE_FILEPATH ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE_FILE}) + set(DEST_FILEPATH ${MATERIALX_DATA_LIBRARY_BUILD_DIR}/${SOURCE_FILE}) + add_custom_command( + OUTPUT ${DEST_FILEPATH} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SOURCE_FILEPATH} ${DEST_FILEPATH} + DEPENDS ${SOURCE_FILEPATH} + ) + list(APPEND MTLX_DATA_LIBRARY_BUILD_FILES ${DEST_FILEPATH}) +endforeach () + + +add_custom_target(buildMaterialXDataLibrary ALL + DEPENDS ${MTLX_DATA_LIBRARY_BUILD_FILES}) + +set(MATERIALX_DATA_LIBRARY_BUILD_DIR ${MATERIALX_DATA_LIBRARY_BUILD_DIR} PARENT_SCOPE) +set(MTLX_DATA_LIBRARY_BUILD_FILES ${MTLX_DATA_LIBRARY_BUILD_FILES} PARENT_SCOPE) + if(NOT SKBUILD) - install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/ + install(DIRECTORY ${MATERIALX_DATA_LIBRARY_BUILD_DIR}/ DESTINATION "${MATERIALX_INSTALL_STDLIB_PATH}" - PATTERN "CMakeLists.txt" EXCLUDE) -endif() - -set(MATERIALX_PYTHON_LIBRARIES_PATH "${MATERIALX_PYTHON_FOLDER_NAME}/${MATERIALX_INSTALL_STDLIB_PATH}") -if(SKBUILD) - set(MATERIALX_PYTHON_LIBRARIES_PATH "${SKBUILD_PLATLIB_DIR}/MaterialX/libraries") + ) endif() if(MATERIALX_BUILD_PYTHON) - install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/ - DESTINATION "${MATERIALX_PYTHON_LIBRARIES_PATH}" - PATTERN "CMakeLists.txt" EXCLUDE) + set(MATERIALX_PYTHON_LIBRARIES_PATH "${MATERIALX_PYTHON_FOLDER_NAME}/${MATERIALX_INSTALL_STDLIB_PATH}") + if(SKBUILD) + set(MATERIALX_PYTHON_LIBRARIES_PATH "${SKBUILD_PLATLIB_DIR}/MaterialX/libraries") + endif() + + install(DIRECTORY ${MATERIALX_DATA_LIBRARY_BUILD_DIR}/ + DESTINATION "${MATERIALX_PYTHON_LIBRARIES_PATH}") endif() diff --git a/source/MaterialXTest/CMakeLists.txt b/source/MaterialXTest/CMakeLists.txt index e68ad9bd4f..0a0c04f1b1 100644 --- a/source/MaterialXTest/CMakeLists.txt +++ b/source/MaterialXTest/CMakeLists.txt @@ -97,10 +97,10 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") endif() # TODO: Only do this stuff when it's relevant - -add_custom_command(TARGET MaterialXTest POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory - ${CMAKE_CURRENT_SOURCE_DIR}/../../libraries ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/libraries) +add_custom_target(buildTestMaterialXDataLibrary ALL + COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${MATERIALX_DATA_LIBRARY_BUILD_DIR} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/libraries + DEPENDS buildMaterialXDataLibrary +) if(MATERIALX_BUILD_GEN_MDL) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../../source/MaterialXGenMdl/mdl/" From 86586fb65f901ce82ebb417c63294451ced7392c Mon Sep 17 00:00:00 2001 From: Jonathan Stone Date: Wed, 12 Feb 2025 13:50:19 -0800 Subject: [PATCH 2/7] Minor spacing updates Signed-off-by: Jonathan Stone --- libraries/CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libraries/CMakeLists.txt b/libraries/CMakeLists.txt index 568e4ac109..018402159d 100644 --- a/libraries/CMakeLists.txt +++ b/libraries/CMakeLists.txt @@ -20,8 +20,7 @@ foreach(SOURCE_FILE IN LISTS MTLX_DATA_LIBRARY_SOURCE_FILES) DEPENDS ${SOURCE_FILEPATH} ) list(APPEND MTLX_DATA_LIBRARY_BUILD_FILES ${DEST_FILEPATH}) -endforeach () - +endforeach() add_custom_target(buildMaterialXDataLibrary ALL DEPENDS ${MTLX_DATA_LIBRARY_BUILD_FILES}) From 8b2080e3e7015f92f4bef8369e080b7f5ebe4404 Mon Sep 17 00:00:00 2001 From: Jonathan Stone Date: Wed, 12 Feb 2025 13:51:15 -0800 Subject: [PATCH 3/7] Minor spacing updates Signed-off-by: Jonathan Stone --- source/MaterialXTest/CMakeLists.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/source/MaterialXTest/CMakeLists.txt b/source/MaterialXTest/CMakeLists.txt index 0a0c04f1b1..fd7b0d58a6 100644 --- a/source/MaterialXTest/CMakeLists.txt +++ b/source/MaterialXTest/CMakeLists.txt @@ -98,9 +98,8 @@ endif() # TODO: Only do this stuff when it's relevant add_custom_target(buildTestMaterialXDataLibrary ALL - COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${MATERIALX_DATA_LIBRARY_BUILD_DIR} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/libraries - DEPENDS buildMaterialXDataLibrary -) + COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${MATERIALX_DATA_LIBRARY_BUILD_DIR} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/libraries + DEPENDS buildMaterialXDataLibrary) if(MATERIALX_BUILD_GEN_MDL) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../../source/MaterialXGenMdl/mdl/" From 1616b53f9ce099cb341e29f1d0a75e24dad17a6b Mon Sep 17 00:00:00 2001 From: Jonathan Stone Date: Wed, 12 Feb 2025 13:52:46 -0800 Subject: [PATCH 4/7] Remove extra newline Signed-off-by: Jonathan Stone --- libraries/CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libraries/CMakeLists.txt b/libraries/CMakeLists.txt index 018402159d..f052a36777 100644 --- a/libraries/CMakeLists.txt +++ b/libraries/CMakeLists.txt @@ -30,8 +30,7 @@ set(MTLX_DATA_LIBRARY_BUILD_FILES ${MTLX_DATA_LIBRARY_BUILD_FILES} PARENT_SCOPE) if(NOT SKBUILD) install(DIRECTORY ${MATERIALX_DATA_LIBRARY_BUILD_DIR}/ - DESTINATION "${MATERIALX_INSTALL_STDLIB_PATH}" - ) + DESTINATION "${MATERIALX_INSTALL_STDLIB_PATH}") endif() if(MATERIALX_BUILD_PYTHON) From 361145f4e06182ade3e8b0d4a06213af14fa228e Mon Sep 17 00:00:00 2001 From: Lee Kerley Date: Wed, 12 Feb 2025 20:02:16 -0800 Subject: [PATCH 5/7] align to MATERIALX_ prefix for cmake variables --- libraries/CMakeLists.txt | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/libraries/CMakeLists.txt b/libraries/CMakeLists.txt index f052a36777..0f88fa9684 100644 --- a/libraries/CMakeLists.txt +++ b/libraries/CMakeLists.txt @@ -1,6 +1,6 @@ set(MATERIALX_DATA_LIBRARY_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/mxDataLibrary) -file(GLOB_RECURSE MTLX_DATA_LIBRARY_SOURCE_FILES +file(GLOB_RECURSE MATERIALX_DATA_LIBRARY_SOURCE_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} CONFIGURE_DEPENDS LIST_DIRECTORIES false @@ -11,7 +11,7 @@ file(GLOB_RECURSE MTLX_DATA_LIBRARY_SOURCE_FILES *.h *.metal) -foreach(SOURCE_FILE IN LISTS MTLX_DATA_LIBRARY_SOURCE_FILES) +foreach(SOURCE_FILE IN LISTS MATERIALX_DATA_LIBRARY_SOURCE_FILES) set(SOURCE_FILEPATH ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE_FILE}) set(DEST_FILEPATH ${MATERIALX_DATA_LIBRARY_BUILD_DIR}/${SOURCE_FILE}) add_custom_command( @@ -19,14 +19,13 @@ foreach(SOURCE_FILE IN LISTS MTLX_DATA_LIBRARY_SOURCE_FILES) COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SOURCE_FILEPATH} ${DEST_FILEPATH} DEPENDS ${SOURCE_FILEPATH} ) - list(APPEND MTLX_DATA_LIBRARY_BUILD_FILES ${DEST_FILEPATH}) + list(APPEND MATERIALX_DATA_LIBRARY_BUILD_FILES ${DEST_FILEPATH}) endforeach() add_custom_target(buildMaterialXDataLibrary ALL - DEPENDS ${MTLX_DATA_LIBRARY_BUILD_FILES}) + DEPENDS ${MATERIALX_DATA_LIBRARY_BUILD_FILES}) set(MATERIALX_DATA_LIBRARY_BUILD_DIR ${MATERIALX_DATA_LIBRARY_BUILD_DIR} PARENT_SCOPE) -set(MTLX_DATA_LIBRARY_BUILD_FILES ${MTLX_DATA_LIBRARY_BUILD_FILES} PARENT_SCOPE) if(NOT SKBUILD) install(DIRECTORY ${MATERIALX_DATA_LIBRARY_BUILD_DIR}/ From f5c84435089353c304e5ff4348f0e3ecc9788cee Mon Sep 17 00:00:00 2001 From: Jonathan Stone Date: Thu, 13 Feb 2025 08:28:00 -0800 Subject: [PATCH 6/7] Remove legacy comment Signed-off-by: Jonathan Stone --- source/MaterialXTest/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/source/MaterialXTest/CMakeLists.txt b/source/MaterialXTest/CMakeLists.txt index fd7b0d58a6..3f84ccdd1c 100644 --- a/source/MaterialXTest/CMakeLists.txt +++ b/source/MaterialXTest/CMakeLists.txt @@ -96,7 +96,6 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") target_compile_options(MaterialXTest PUBLIC -Wno-deprecated-declarations) endif() -# TODO: Only do this stuff when it's relevant add_custom_target(buildTestMaterialXDataLibrary ALL COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${MATERIALX_DATA_LIBRARY_BUILD_DIR} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/libraries DEPENDS buildMaterialXDataLibrary) From 2e953464267ff8e6b12b64f2ec1bfd4b4a90961f Mon Sep 17 00:00:00 2001 From: Jonathan Stone Date: Thu, 13 Feb 2025 08:28:44 -0800 Subject: [PATCH 7/7] Remove extra newline Signed-off-by: Jonathan Stone --- libraries/CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libraries/CMakeLists.txt b/libraries/CMakeLists.txt index 0f88fa9684..2fbc7bc16d 100644 --- a/libraries/CMakeLists.txt +++ b/libraries/CMakeLists.txt @@ -17,8 +17,7 @@ foreach(SOURCE_FILE IN LISTS MATERIALX_DATA_LIBRARY_SOURCE_FILES) add_custom_command( OUTPUT ${DEST_FILEPATH} COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SOURCE_FILEPATH} ${DEST_FILEPATH} - DEPENDS ${SOURCE_FILEPATH} - ) + DEPENDS ${SOURCE_FILEPATH}) list(APPEND MATERIALX_DATA_LIBRARY_BUILD_FILES ${DEST_FILEPATH}) endforeach()