diff --git a/libraries/CMakeLists.txt b/libraries/CMakeLists.txt index 2b2097e203..2fbc7bc16d 100644 --- a/libraries/CMakeLists.txt +++ b/libraries/CMakeLists.txt @@ -1,16 +1,42 @@ -if(NOT SKBUILD) - install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/ - DESTINATION "${MATERIALX_INSTALL_STDLIB_PATH}" - PATTERN "CMakeLists.txt" EXCLUDE) -endif() +set(MATERIALX_DATA_LIBRARY_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/mxDataLibrary) + +file(GLOB_RECURSE MATERIALX_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 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( + OUTPUT ${DEST_FILEPATH} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SOURCE_FILEPATH} ${DEST_FILEPATH} + DEPENDS ${SOURCE_FILEPATH}) + list(APPEND MATERIALX_DATA_LIBRARY_BUILD_FILES ${DEST_FILEPATH}) +endforeach() -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") +add_custom_target(buildMaterialXDataLibrary ALL + DEPENDS ${MATERIALX_DATA_LIBRARY_BUILD_FILES}) + +set(MATERIALX_DATA_LIBRARY_BUILD_DIR ${MATERIALX_DATA_LIBRARY_BUILD_DIR} PARENT_SCOPE) + +if(NOT SKBUILD) + install(DIRECTORY ${MATERIALX_DATA_LIBRARY_BUILD_DIR}/ + DESTINATION "${MATERIALX_INSTALL_STDLIB_PATH}") 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..3f84ccdd1c 100644 --- a/source/MaterialXTest/CMakeLists.txt +++ b/source/MaterialXTest/CMakeLists.txt @@ -96,11 +96,9 @@ 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_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/"