From d2e99f1b877d123d860141aaef75f7400e468c66 Mon Sep 17 00:00:00 2001 From: Jonathan Stone Date: Fri, 5 Dec 2025 14:41:47 -0800 Subject: [PATCH] Consolidate shared CMake logic in PyMaterialX This changelist consolidates shared CMake logic in PyMaterialX, defining a new `mx_add_python_module` function to reduce duplication and improve maintainability. --- source/PyMaterialX/CMakeLists.txt | 55 +++++++++++++++++++ .../PyMaterialXCore/CMakeLists.txt | 28 +--------- .../PyMaterialXFormat/CMakeLists.txt | 30 ++-------- .../PyMaterialXGenGlsl/CMakeLists.txt | 30 ++-------- .../PyMaterialXGenMdl/CMakeLists.txt | 28 +--------- .../PyMaterialXGenMsl/CMakeLists.txt | 30 ++-------- .../PyMaterialXGenOsl/CMakeLists.txt | 30 ++-------- .../PyMaterialXGenShader/CMakeLists.txt | 34 ++---------- .../PyMaterialXGenSlang/CMakeLists.txt | 30 ++-------- .../PyMaterialXRender/CMakeLists.txt | 35 +++--------- .../PyMaterialXRenderGlsl/CMakeLists.txt | 34 ++---------- .../PyMaterialXRenderMsl/CMakeLists.txt | 36 +++--------- .../PyMaterialXRenderOsl/CMakeLists.txt | 30 ++-------- 13 files changed, 113 insertions(+), 317 deletions(-) diff --git a/source/PyMaterialX/CMakeLists.txt b/source/PyMaterialX/CMakeLists.txt index 8e5d70c1ce..f77d333111 100644 --- a/source/PyMaterialX/CMakeLists.txt +++ b/source/PyMaterialX/CMakeLists.txt @@ -35,6 +35,61 @@ if(CMAKE_CXX_COMPILER_ID MATCHES Clang) endif() endif() +function(mx_add_python_module MODULE_NAME) + set(options) + set(oneValueArgs SOURCE_EXTENSION) + set(multiValueArgs + LIBRARIES + EXCLUDE_FILES) + cmake_parse_arguments(args + "${options}" + "${oneValueArgs}" + "${multiValueArgs}" + ${ARGN}) + + # Default to .cpp source files if not specified + if (NOT args_SOURCE_EXTENSION) + set(args_SOURCE_EXTENSION "cpp") + endif() + + # Gather source and header files + file(GLOB module_source "${CMAKE_CURRENT_SOURCE_DIR}/*.${args_SOURCE_EXTENSION}") + file(GLOB module_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h") + + # Exclude specific files if requested + if (args_EXCLUDE_FILES) + foreach(exclude_file ${args_EXCLUDE_FILES}) + list(REMOVE_ITEM module_source "${CMAKE_CURRENT_SOURCE_DIR}/${exclude_file}") + endforeach() + endif() + + # Create the pybind11 module + pybind11_add_module(${MODULE_NAME} SHARED ${PYBIND11_MODULE_FLAGS} ${module_source} ${module_headers}) + + # Apple-specific visibility setting + if (APPLE) + set_target_properties(${MODULE_NAME} PROPERTIES CXX_VISIBILITY_PRESET "default") + endif() + + # Set common target properties + set_target_properties( + ${MODULE_NAME} PROPERTIES + OUTPUT_NAME ${MODULE_NAME} + COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" + LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" + INSTALL_RPATH "${MATERIALX_UP_TWO_RPATH}" + DEBUG_POSTFIX "${MATERIALX_PYTHON_DEBUG_POSTFIX}") + + # Link libraries + target_link_libraries(${MODULE_NAME} + PUBLIC ${args_LIBRARIES} + PRIVATE ${CMAKE_DL_LIBS}) + + # Install target + install(TARGETS ${MODULE_NAME} + DESTINATION "${MATERIALX_PYTHON_FOLDER_NAME}") +endfunction() + add_subdirectory(PyMaterialXCore) add_subdirectory(PyMaterialXFormat) if (MATERIALX_BUILD_GEN_GLSL OR MATERIALX_BUILD_GEN_OSL OR MATERIALX_BUILD_GEN_MDL OR MATERIALX_BUILD_GEN_MSL OR MATERIALX_BUILD_GEN_SLANG) diff --git a/source/PyMaterialX/PyMaterialXCore/CMakeLists.txt b/source/PyMaterialX/PyMaterialXCore/CMakeLists.txt index 9f3d2291c0..8db29e4c7e 100644 --- a/source/PyMaterialX/PyMaterialXCore/CMakeLists.txt +++ b/source/PyMaterialX/PyMaterialXCore/CMakeLists.txt @@ -1,25 +1,3 @@ -file(GLOB pymaterialxcore_source "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp") -file(GLOB pymaterialxcore_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h") - -pybind11_add_module(PyMaterialXCore SHARED ${PYBIND11_MODULE_FLAGS} ${pymaterialxcore_source} ${pymaterialxcore_headers}) - -if(APPLE) - set_target_properties(PyMaterialXCore PROPERTIES CXX_VISIBILITY_PRESET "default") -endif() - -set_target_properties( - PyMaterialXCore - PROPERTIES - OUTPUT_NAME PyMaterialXCore - COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" - LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" - INSTALL_RPATH "${MATERIALX_UP_TWO_RPATH}" - DEBUG_POSTFIX "${MATERIALX_PYTHON_DEBUG_POSTFIX}") - -target_link_libraries( - PyMaterialXCore - PUBLIC MaterialXCore - PRIVATE ${CMAKE_DL_LIBS}) - -install(TARGETS PyMaterialXCore - DESTINATION "${MATERIALX_PYTHON_FOLDER_NAME}") +mx_add_python_module(PyMaterialXCore + LIBRARIES + MaterialXCore) diff --git a/source/PyMaterialX/PyMaterialXFormat/CMakeLists.txt b/source/PyMaterialX/PyMaterialXFormat/CMakeLists.txt index 095b3eb087..1e0cd30041 100644 --- a/source/PyMaterialX/PyMaterialXFormat/CMakeLists.txt +++ b/source/PyMaterialX/PyMaterialXFormat/CMakeLists.txt @@ -1,26 +1,4 @@ -file(GLOB pymaterialxformat_source "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp") -file(GLOB pymaterialxformat_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h") - -pybind11_add_module(PyMaterialXFormat SHARED ${PYBIND11_MODULE_FLAGS} ${pymaterialxformat_source} ${pymaterialxformat_headers}) - -if(APPLE) - set_target_properties(PyMaterialXFormat PROPERTIES CXX_VISIBILITY_PRESET "default") -endif() - -set_target_properties( - PyMaterialXFormat - PROPERTIES - OUTPUT_NAME PyMaterialXFormat - COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" - LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" - INSTALL_RPATH "${MATERIALX_UP_TWO_RPATH}" - DEBUG_POSTFIX "${MATERIALX_PYTHON_DEBUG_POSTFIX}") - -target_link_libraries( - PyMaterialXFormat - PUBLIC PyMaterialXCore - MaterialXFormat - PRIVATE ${CMAKE_DL_LIBS}) - -install(TARGETS PyMaterialXFormat - DESTINATION "${MATERIALX_PYTHON_FOLDER_NAME}") +mx_add_python_module(PyMaterialXFormat + LIBRARIES + PyMaterialXCore + MaterialXFormat) diff --git a/source/PyMaterialX/PyMaterialXGenGlsl/CMakeLists.txt b/source/PyMaterialX/PyMaterialXGenGlsl/CMakeLists.txt index 24266712fd..7152045e62 100644 --- a/source/PyMaterialX/PyMaterialXGenGlsl/CMakeLists.txt +++ b/source/PyMaterialX/PyMaterialXGenGlsl/CMakeLists.txt @@ -1,26 +1,4 @@ -file(GLOB pymaterialxgenglsl_source "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp") -file(GLOB pymaterialxgenglsl_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h") - -pybind11_add_module(PyMaterialXGenGlsl SHARED ${PYBIND11_MODULE_FLAGS} ${pymaterialxgenglsl_source} ${pymaterialxgenglsl_headers}) - -if(APPLE) - set_target_properties(PyMaterialXGenGlsl PROPERTIES CXX_VISIBILITY_PRESET "default") -endif() - -set_target_properties( - PyMaterialXGenGlsl - PROPERTIES - OUTPUT_NAME PyMaterialXGenGlsl - COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" - LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" - INSTALL_RPATH "${MATERIALX_UP_TWO_RPATH}" - DEBUG_POSTFIX "${MATERIALX_PYTHON_DEBUG_POSTFIX}") - -target_link_libraries( - PyMaterialXGenGlsl - PUBLIC PyMaterialXGenShader - MaterialXGenGlsl - PRIVATE ${CMAKE_DL_LIBS}) - -install(TARGETS PyMaterialXGenGlsl - DESTINATION "${MATERIALX_PYTHON_FOLDER_NAME}") +mx_add_python_module(PyMaterialXGenGlsl + LIBRARIES + PyMaterialXGenShader + MaterialXGenGlsl) diff --git a/source/PyMaterialX/PyMaterialXGenMdl/CMakeLists.txt b/source/PyMaterialX/PyMaterialXGenMdl/CMakeLists.txt index 328a2439ed..5ad2d46642 100644 --- a/source/PyMaterialX/PyMaterialXGenMdl/CMakeLists.txt +++ b/source/PyMaterialX/PyMaterialXGenMdl/CMakeLists.txt @@ -1,25 +1,3 @@ -file(GLOB pymaterialxgenmdl_source "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp") -file(GLOB pymaterialxgenmdl_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h") - -pybind11_add_module(PyMaterialXGenMdl SHARED ${PYBIND11_MODULE_FLAGS} ${pymaterialxgenmdl_source} ${pymaterialxgenmdl_headers}) - -if(APPLE) - set_target_properties(PyMaterialXGenMdl PROPERTIES CXX_VISIBILITY_PRESET "default") -endif() - -set_target_properties( - PyMaterialXGenMdl - PROPERTIES - OUTPUT_NAME PyMaterialXGenMdl - COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" - LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" - INSTALL_RPATH "${MATERIALX_UP_TWO_RPATH}" - DEBUG_POSTFIX "${MATERIALX_PYTHON_DEBUG_POSTFIX}") - -target_link_libraries( - PyMaterialXGenMdl - PUBLIC MaterialXGenMdl - PRIVATE ${CMAKE_DL_LIBS}) - -install(TARGETS PyMaterialXGenMdl - DESTINATION "${MATERIALX_PYTHON_FOLDER_NAME}") +mx_add_python_module(PyMaterialXGenMdl + LIBRARIES + MaterialXGenMdl) diff --git a/source/PyMaterialX/PyMaterialXGenMsl/CMakeLists.txt b/source/PyMaterialX/PyMaterialXGenMsl/CMakeLists.txt index 33dec7319a..f78b5c512a 100644 --- a/source/PyMaterialX/PyMaterialXGenMsl/CMakeLists.txt +++ b/source/PyMaterialX/PyMaterialXGenMsl/CMakeLists.txt @@ -1,26 +1,4 @@ -file(GLOB pymaterialxgenmsl_source "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp") -file(GLOB pymaterialxgenmsl_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h") - -pybind11_add_module(PyMaterialXGenMsl SHARED ${PYBIND11_MODULE_FLAGS} ${pymaterialxgenmsl_source} ${pymaterialxgenmsl_headers}) - -if(APPLE) - set_target_properties(PyMaterialXGenMsl PROPERTIES CXX_VISIBILITY_PRESET "default") -endif() - -set_target_properties( - PyMaterialXGenMsl - PROPERTIES - OUTPUT_NAME PyMaterialXGenMsl - COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" - LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" - INSTALL_RPATH "${MATERIALX_UP_TWO_RPATH}" - DEBUG_POSTFIX "${MATERIALX_PYTHON_DEBUG_POSTFIX}") - -target_link_libraries( - PyMaterialXGenMsl - PUBLIC PyMaterialXGenShader - MaterialXGenMsl - PRIVATE ${CMAKE_DL_LIBS}) - -install(TARGETS PyMaterialXGenMsl - DESTINATION "${MATERIALX_PYTHON_FOLDER_NAME}") +mx_add_python_module(PyMaterialXGenMsl + LIBRARIES + PyMaterialXGenShader + MaterialXGenMsl) diff --git a/source/PyMaterialX/PyMaterialXGenOsl/CMakeLists.txt b/source/PyMaterialX/PyMaterialXGenOsl/CMakeLists.txt index 65b0dabe67..527c7cdfbf 100644 --- a/source/PyMaterialX/PyMaterialXGenOsl/CMakeLists.txt +++ b/source/PyMaterialX/PyMaterialXGenOsl/CMakeLists.txt @@ -1,26 +1,4 @@ -file(GLOB pymaterialxgenosl_source "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp") -file(GLOB pymaterialxgenosl_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h") - -pybind11_add_module(PyMaterialXGenOsl SHARED ${PYBIND11_MODULE_FLAGS} ${pymaterialxgenosl_source} ${pymaterialxgenosl_headers}) - -if(APPLE) - set_target_properties(PyMaterialXGenOsl PROPERTIES CXX_VISIBILITY_PRESET "default") -endif() - -set_target_properties( - PyMaterialXGenOsl - PROPERTIES - OUTPUT_NAME PyMaterialXGenOsl - COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" - LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" - INSTALL_RPATH "${MATERIALX_UP_TWO_RPATH}" - DEBUG_POSTFIX "${MATERIALX_PYTHON_DEBUG_POSTFIX}") - -target_link_libraries( - PyMaterialXGenOsl - PUBLIC PyMaterialXGenShader - MaterialXGenOsl - PRIVATE ${CMAKE_DL_LIBS}) - -install(TARGETS PyMaterialXGenOsl - DESTINATION "${MATERIALX_PYTHON_FOLDER_NAME}") +mx_add_python_module(PyMaterialXGenOsl + LIBRARIES + PyMaterialXGenShader + MaterialXGenOsl) diff --git a/source/PyMaterialX/PyMaterialXGenShader/CMakeLists.txt b/source/PyMaterialX/PyMaterialXGenShader/CMakeLists.txt index a3141e8bfd..2a5eb27f92 100644 --- a/source/PyMaterialX/PyMaterialXGenShader/CMakeLists.txt +++ b/source/PyMaterialX/PyMaterialXGenShader/CMakeLists.txt @@ -1,28 +1,6 @@ -file(GLOB pymaterialxgenshader_source "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp") -file(GLOB pymaterialxgenshader_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h") - -pybind11_add_module(PyMaterialXGenShader SHARED ${PYBIND11_MODULE_FLAGS} ${pymaterialxgenshader_source} ${pymaterialxgenshader_headers}) - -if(APPLE) - set_target_properties(PyMaterialXGenShader PROPERTIES CXX_VISIBILITY_PRESET "default") -endif() - -set_target_properties( - PyMaterialXGenShader - PROPERTIES - OUTPUT_NAME PyMaterialXGenShader - COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" - LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" - INSTALL_RPATH "${MATERIALX_UP_TWO_RPATH}" - DEBUG_POSTFIX "${MATERIALX_PYTHON_DEBUG_POSTFIX}") - -target_link_libraries( - PyMaterialXGenShader - PUBLIC PyMaterialXCore - PyMaterialXFormat - MaterialXGenShader - MaterialXGenHw - PRIVATE ${CMAKE_DL_LIBS}) - -install(TARGETS PyMaterialXGenShader - DESTINATION "${MATERIALX_PYTHON_FOLDER_NAME}") +mx_add_python_module(PyMaterialXGenShader + LIBRARIES + PyMaterialXCore + PyMaterialXFormat + MaterialXGenShader + MaterialXGenHw) diff --git a/source/PyMaterialX/PyMaterialXGenSlang/CMakeLists.txt b/source/PyMaterialX/PyMaterialXGenSlang/CMakeLists.txt index 32752dd68f..384f2d8a4d 100644 --- a/source/PyMaterialX/PyMaterialXGenSlang/CMakeLists.txt +++ b/source/PyMaterialX/PyMaterialXGenSlang/CMakeLists.txt @@ -1,26 +1,4 @@ -file(GLOB pymaterialxgenslang_source "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp") -file(GLOB pymaterialxgenslang_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h") - -pybind11_add_module(PyMaterialXGenSlang SHARED ${PYBIND11_MODULE_FLAGS} ${pymaterialxgenslang_source} ${pymaterialxgenslang_headers}) - -if(APPLE) - set_target_properties(PyMaterialXGenSlang PROPERTIES CXX_VISIBILITY_PRESET "default") -endif() - -set_target_properties( - PyMaterialXGenSlang - PROPERTIES - OUTPUT_NAME PyMaterialXGenSlang - COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" - LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" - INSTALL_RPATH "${MATERIALX_UP_TWO_RPATH}" - DEBUG_POSTFIX "${MATERIALX_PYTHON_DEBUG_POSTFIX}") - -target_link_libraries( - PyMaterialXGenSlang - PUBLIC PyMaterialXGenShader - MaterialXGenSlang - PRIVATE ${CMAKE_DL_LIBS}) - -install(TARGETS PyMaterialXGenSlang - DESTINATION "${MATERIALX_PYTHON_FOLDER_NAME}") +mx_add_python_module(PyMaterialXGenSlang + LIBRARIES + PyMaterialXGenShader + MaterialXGenSlang) diff --git a/source/PyMaterialX/PyMaterialXRender/CMakeLists.txt b/source/PyMaterialX/PyMaterialXRender/CMakeLists.txt index 2617a0b392..fdbb59944d 100644 --- a/source/PyMaterialX/PyMaterialXRender/CMakeLists.txt +++ b/source/PyMaterialX/PyMaterialXRender/CMakeLists.txt @@ -1,29 +1,10 @@ -file(GLOB pymaterialxrender_source "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp") -file(GLOB pymaterialxrender_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h") -if(NOT MATERIALX_BUILD_OIIO) - list(REMOVE_ITEM pymaterialxrender_source "${CMAKE_CURRENT_SOURCE_DIR}/PyOiioImageLoader.cpp") +if (NOT MATERIALX_BUILD_OIIO) + set(OIIO_EXCLUDE_FILES PyOiioImageLoader.cpp) endif() -pybind11_add_module(PyMaterialXRender SHARED ${PYBIND11_MODULE_FLAGS} ${pymaterialxrender_source} ${pymaterialxrender_headers}) - -if(APPLE) - set_target_properties(PyMaterialXRender PROPERTIES CXX_VISIBILITY_PRESET "default") -endif() - -set_target_properties( - PyMaterialXRender - PROPERTIES - OUTPUT_NAME PyMaterialXRender - COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" - LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" - INSTALL_RPATH "${MATERIALX_UP_TWO_RPATH}" - DEBUG_POSTFIX "${MATERIALX_PYTHON_DEBUG_POSTFIX}") - -target_link_libraries( - PyMaterialXRender - PUBLIC PyMaterialXGenShader - MaterialXRender - PRIVATE ${CMAKE_DL_LIBS}) - -install(TARGETS PyMaterialXRender - DESTINATION "${MATERIALX_PYTHON_FOLDER_NAME}") +mx_add_python_module(PyMaterialXRender + LIBRARIES + PyMaterialXGenShader + MaterialXRender + EXCLUDE_FILES + ${OIIO_EXCLUDE_FILES}) diff --git a/source/PyMaterialX/PyMaterialXRenderGlsl/CMakeLists.txt b/source/PyMaterialX/PyMaterialXRenderGlsl/CMakeLists.txt index a0b04ddbda..6fe8cc6b84 100644 --- a/source/PyMaterialX/PyMaterialXRenderGlsl/CMakeLists.txt +++ b/source/PyMaterialX/PyMaterialXRenderGlsl/CMakeLists.txt @@ -1,28 +1,6 @@ -file(GLOB pymaterialxrenderglsl_source "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp") -file(GLOB pymaterialxrenderglsl_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h") - -pybind11_add_module(PyMaterialXRenderGlsl SHARED ${PYBIND11_MODULE_FLAGS} ${pymaterialxrenderglsl_source} ${pymaterialxrenderglsl_headers}) - -if(APPLE) - set_target_properties(PyMaterialXRenderGlsl PROPERTIES CXX_VISIBILITY_PRESET "default") -endif() - -set_target_properties( - PyMaterialXRenderGlsl - PROPERTIES - OUTPUT_NAME PyMaterialXRenderGlsl - COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" - LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" - INSTALL_RPATH "${MATERIALX_UP_TWO_RPATH}" - DEBUG_POSTFIX "${MATERIALX_PYTHON_DEBUG_POSTFIX}") - -target_link_libraries( - PyMaterialXRenderGlsl - PUBLIC PyMaterialXRender - MaterialXRenderGlsl - PyMaterialXGenGlsl - MaterialXGenGlsl - PRIVATE ${CMAKE_DL_LIBS}) - -install(TARGETS PyMaterialXRenderGlsl - DESTINATION "${MATERIALX_PYTHON_FOLDER_NAME}") +mx_add_python_module(PyMaterialXRenderGlsl + LIBRARIES + PyMaterialXRender + MaterialXRenderGlsl + PyMaterialXGenGlsl + MaterialXGenGlsl) diff --git a/source/PyMaterialX/PyMaterialXRenderMsl/CMakeLists.txt b/source/PyMaterialX/PyMaterialXRenderMsl/CMakeLists.txt index 04c6d95e3c..7b53f0e798 100644 --- a/source/PyMaterialX/PyMaterialXRenderMsl/CMakeLists.txt +++ b/source/PyMaterialX/PyMaterialXRenderMsl/CMakeLists.txt @@ -1,28 +1,8 @@ -file(GLOB pymaterialxrendermsl_source "${CMAKE_CURRENT_SOURCE_DIR}/*.mm") -file(GLOB pymaterialxrendermsl_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h") - -pybind11_add_module(PyMaterialXRenderMsl SHARED ${PYBIND11_MODULE_FLAGS} ${pymaterialxrendermsl_source} ${pymaterialxrendermsl_headers}) - -if(APPLE) - set_target_properties(PyMaterialXRenderMsl PROPERTIES CXX_VISIBILITY_PRESET "default") -endif() - -set_target_properties( - PyMaterialXRenderMsl - PROPERTIES - OUTPUT_NAME PyMaterialXRenderMsl - COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" - LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" - INSTALL_RPATH "${MATERIALX_UP_TWO_RPATH}" - DEBUG_POSTFIX "${MATERIALX_PYTHON_DEBUG_POSTFIX}") - -target_link_libraries( - PyMaterialXRenderMsl - PUBLIC PyMaterialXRender - MaterialXRenderMsl - PyMaterialXGenMsl - MaterialXGenMsl - PRIVATE ${CMAKE_DL_LIBS}) - -install(TARGETS PyMaterialXRenderMsl - DESTINATION "${MATERIALX_PYTHON_FOLDER_NAME}") +mx_add_python_module(PyMaterialXRenderMsl + SOURCE_EXTENSION + mm + LIBRARIES + PyMaterialXRender + MaterialXRenderMsl + PyMaterialXGenMsl + MaterialXGenMsl) diff --git a/source/PyMaterialX/PyMaterialXRenderOsl/CMakeLists.txt b/source/PyMaterialX/PyMaterialXRenderOsl/CMakeLists.txt index c0b83948a9..7ee85107ee 100644 --- a/source/PyMaterialX/PyMaterialXRenderOsl/CMakeLists.txt +++ b/source/PyMaterialX/PyMaterialXRenderOsl/CMakeLists.txt @@ -1,26 +1,4 @@ -file(GLOB pymaterialxrenderosl_source "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp") -file(GLOB pymaterialxrenderosl_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h") - -pybind11_add_module(PyMaterialXRenderOsl SHARED ${PYBIND11_MODULE_FLAGS} ${pymaterialxrenderosl_source} ${pymaterialxrenderosl_headers}) - -if(APPLE) - set_target_properties(PyMaterialXRenderOsl PROPERTIES CXX_VISIBILITY_PRESET "default") -endif() - -set_target_properties( - PyMaterialXRenderOsl - PROPERTIES - OUTPUT_NAME PyMaterialXRenderOsl - COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" - LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" - INSTALL_RPATH "${MATERIALX_UP_TWO_RPATH}" - DEBUG_POSTFIX "${MATERIALX_PYTHON_DEBUG_POSTFIX}") - -target_link_libraries( - PyMaterialXRenderOsl - PUBLIC PyMaterialXRender - MaterialXRenderOsl - PRIVATE ${CMAKE_DL_LIBS}) - -install(TARGETS PyMaterialXRenderOsl - DESTINATION "${MATERIALX_PYTHON_FOLDER_NAME}") +mx_add_python_module(PyMaterialXRenderOsl + LIBRARIES + PyMaterialXRender + MaterialXRenderOsl)