@@ -4,7 +4,7 @@ set(MATERIALX_MINOR_VERSION 39)
44set (MATERIALX_BUILD_VERSION 4)
55set (MATERIALX_LIBRARY_VERSION ${MATERIALX_MAJOR_VERSION} .${MATERIALX_MINOR_VERSION} .${MATERIALX_BUILD_VERSION} )
66
7- # Cmake setup
7+ # CMake setup
88cmake_minimum_required (VERSION 3.26 )
99set (CMAKE_CXX_STANDARD 17)
1010set (CMAKE_POSITION_INDEPENDENT_CODE TRUE )
@@ -107,8 +107,8 @@ if (MATERIALX_BUILD_JS)
107107 set (MATERIALX_BUILD_TESTS OFF )
108108endif ()
109109
110+ # All hardware shading languages currently depend on the GLSL shader generator.
110111if (MATERIALX_BUILD_GEN_MSL)
111- # All hardware shading languages currently depend on the GLSL shader generator.
112112 set (MATERIALX_BUILD_GEN_GLSL ON )
113113endif ()
114114
@@ -156,7 +156,7 @@ message(STATUS "Setting namespace to '${MATERIALX_NAMESPACE}'")
156156# Library name custom suffix
157157# This helps an application that needs to ship a dynamic library MaterialX ensure
158158# that it has a unique name that won't conflict with one elsewhere on the system.
159- set (MATERIALX_LIBNAME_SUFFIX "" CACHE STRING "Specify a suffix to all libraries that are built" )
159+ set (MATERIALX_LIBNAME_SUFFIX "" CACHE STRING "Specify a suffix to all libraries that are built" )
160160
161161mark_as_advanced (MATERIALX_BUILD_DOCS )
162162mark_as_advanced (MATERIALX_BUILD_GEN_GLSL )
@@ -211,21 +211,18 @@ if (MATERIALX_BUILD_USE_CCACHE)
211211 endif ()
212212endif ()
213213
214- # Attempt to configure OSL testing if it can be found by cmake .
215- # This will not override any explicitly provided oslc and testrender
214+ # Allow the OSL CMake package to provide binary locations for render tests .
215+ # This will not override explicitly provided oslc, testrender, and include paths.
216216if (MATERIALX_BUILD_RENDER AND MATERIALX_BUILD_GEN_OSL AND MATERIALX_BUILD_TESTS)
217- # We currently only need the actual OSL binaries if we're running tests with Render and GenOSL enabled.
218217 find_package (OSL QUIET )
219218 if (OSL_FOUND)
220219 if (NOT MATERIALX_OSL_BINARY_OSLC)
221220 set (MATERIALX_OSL_BINARY_OSLC $<TARGET_FILE :OSL ::oslc >)
222221 endif ()
223222 if (NOT MATERIALX_OSL_BINARY_TESTRENDER)
224- # currently OSL does not export a cmake target for testrender, but once that's added this can be simplified .
223+ # OSL does not yet export a CMake target for testrender.
225224 set (MATERIALX_OSL_BINARY_TESTRENDER $<TARGET_FILE_DIR :OSL ::oslc >/testrender)
226225 endif ()
227- # NOTE : we do not derive a value for MATERIALX_OSL_INCLUDE_PATH here, as a a cmake installed OSL package
228- # should have the shader includes in the expected location.
229226 endif ()
230227endif ()
231228
@@ -327,20 +324,20 @@ function(mx_add_library MATERIALX_MODULE_NAME)
327324 set(options ADD_OBJECTIVE_C_CODE)
328325 set(oneValueArgs EXPORT_DEFINE)
329326 set(multiValueArgs
330- SOURCE_FILES
331- HEADER_FILES
332- INLINED_FILES
333- MTLX_MODULES)
327+ SOURCE_FILES
328+ HEADER_FILES
329+ INLINED_FILES
330+ MTLX_MODULES)
334331 cmake_parse_arguments(args
335- " ${options} "
336- " ${oneValueArgs} "
337- " ${multiValueArgs} "
338- ${ARGN} )
332+ " ${options} "
333+ " ${oneValueArgs} "
334+ " ${multiValueArgs} "
335+ ${ARGN} )
339336
340337 if (APPLE AND args_ADD_OBJECTIVE_C_CODE)
341338 file(GLOB_RECURSE materialx_source_oc " ${CMAKE_CURRENT_SOURCE_DIR} /*.m* ")
342339 set_source_files_properties(${materialx_source_oc} PROPERTIES
343- COMPILE_FLAGS " -x objective-c++ ")
340+ COMPILE_FLAGS " -x objective-c++ ")
344341 set(args_SOURCE_FILES ${args_SOURCE_FILES} ${materialx_source_oc} )
345342 endif()
346343
@@ -360,30 +357,29 @@ function(mx_add_library MATERIALX_MODULE_NAME)
360357
361358 target_link_libraries(${TARGET_NAME}
362359 PUBLIC
363- ${args_MTLX_MODULES}
364- ${CMAKE_DL_LIBS} )
360+ ${args_MTLX_MODULES}
361+ ${CMAKE_DL_LIBS} )
365362
366363 target_include_directories(${TARGET_NAME}
367- PUBLIC
368- $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR} /../>
369- $<INSTALL_INTERFACE :${MATERIALX_INSTALL_INCLUDE_PATH} >
370- PRIVATE
371- ${EXTERNAL_INCLUDE_DIRS} )
364+ PUBLIC
365+ $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR} /../>
366+ $<INSTALL_INTERFACE :${MATERIALX_INSTALL_INCLUDE_PATH} >
367+ PRIVATE
368+ ${EXTERNAL_INCLUDE_DIRS} )
372369
373370 set_target_properties(
374- ${TARGET_NAME} PROPERTIES
375- OUTPUT_NAME ${MATERIALX_MODULE_NAME}${MATERIALX_LIBNAME_SUFFIX}
376- COMPILE_FLAGS " ${EXTERNAL_COMPILE_FLAGS} "
377- LINK_FLAGS " ${EXTERNAL_LINK_FLAGS} "
378- INSTALL_RPATH " ${MATERIALX_SAME_DIR_RPATH} "
379- VERSION " ${MATERIALX_LIBRARY_VERSION} "
380- SOVERSION " ${MATERIALX_MAJOR_VERSION} ")
371+ ${TARGET_NAME} PROPERTIES
372+ OUTPUT_NAME ${MATERIALX_MODULE_NAME}${MATERIALX_LIBNAME_SUFFIX}
373+ COMPILE_FLAGS " ${EXTERNAL_COMPILE_FLAGS} "
374+ LINK_FLAGS " ${EXTERNAL_LINK_FLAGS} "
375+ INSTALL_RPATH " ${MATERIALX_SAME_DIR_RPATH} "
376+ VERSION " ${MATERIALX_LIBRARY_VERSION} "
377+ SOVERSION " ${MATERIALX_MAJOR_VERSION} ")
381378 else()
382379 set(TARGET_NAME ${MATERIALX_MONOLITHIC_TARGET} )
383-
384380 add_library(${MATERIALX_MODULE_NAME} ALIAS ${MATERIALX_MONOLITHIC_TARGET} )
385381
386- # Store the aliased MaterialX modules name to create cmake export aliases later.
382+ # Store the aliased MaterialX modules name to create CMake export aliases later.
387383 set_property(GLOBAL APPEND PROPERTY MATERIALX_MODULES ${MATERIALX_MODULE_NAME} )
388384 endif()
389385
@@ -406,7 +402,7 @@ function(mx_add_library MATERIALX_MODULE_NAME)
406402 ${args_INLINED_FILES} )
407403
408404 target_include_directories(${TARGET_NAME} PUBLIC
409- $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR} /../>)
405+ $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR} /../>)
410406
411407 target_compile_definitions(${TARGET_NAME} PRIVATE " -D${args_EXPORT_DEFINE} ")
412408
@@ -424,11 +420,11 @@ function(mx_add_library MATERIALX_MODULE_NAME)
424420 DESTINATION " ${MATERIALX_INSTALL_LIB_PATH} / " OPTIONAL)
425421 endif()
426422
427- # pass TARGET_NAME back to call site - so caller can modify the build target
423+ # Pass TARGET_NAME back to call site, so the caller can modify the build target.
428424 set(TARGET_NAME ${TARGET_NAME} PARENT_SCOPE)
429425endfunction()
430426
431- # Propagate shared library setting to NanoGUI:
427+ # Propagate shared library setting to NanoGUI
432428if(MATERIALX_BUILD_SHARED_LIBS)
433429 set(BUILD_SHARED_LIBS " ON ")
434430else()
@@ -517,7 +513,7 @@ if(MATERIALX_BUILD_JS)
517513 add_subdirectory(source/JsMaterialX)
518514endif()
519515
520- if (MATERIALX_BUILD_MONOLITHIC)
516+ if(MATERIALX_BUILD_MONOLITHIC)
521517 # MaterialX monolithic build target needs to be installed after any other included
522518 # modules to ensure the correct files are in mxHeaders
523519 if(NOT SKBUILD)
@@ -552,6 +548,7 @@ if (MATERIALX_BUILD_MONOLITHIC)
552548 endif()
553549endif()
554550
551+ # Set Visual Studio startup projects
555552if(MATERIALX_BUILD_VIEWER)
556553 set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT MaterialXView)
557554elseif(MATERIALX_BUILD_GRAPH_EDITOR)
@@ -562,16 +559,15 @@ endif()
562559
563560# Install root-level documents
564561if(NOT SKBUILD)
565- install(FILES LICENSE CHANGELOG.md README.md THIRD-PARTY.md
566- DESTINATION .)
562+ install(FILES LICENSE CHANGELOG.md README.md THIRD-PARTY.md DESTINATION .)
567563
568564 set(MATERIALX_GEN_CONFIG_PATH " ${MATERIALX_INSTALL_LIB_PATH} /cmake/${CMAKE_PROJECT_NAME} ")
569565
570566 include(CMakePackageConfigHelpers)
571567
572568 if (MATERIALX_BUILD_MONOLITHIC)
573- # export aliases for the MaterialX modules built in this monolithic build to be
574- # less disruptive to downstream probjects .
569+ # Export aliases for the MaterialX modules built in this monolithic build
570+ # to be less disruptive to downstream projects .
575571 get_property(MATERIALX_MODULES GLOBAL PROPERTY MATERIALX_MODULES)
576572 set(EXPORT_ALIASES " # Aliased targets for the the monolithic build\n")
577573 foreach (MODULE ${MATERIALX_MODULES} )
@@ -584,19 +580,17 @@ if(NOT SKBUILD)
584580 endif ()
585581
586582 configure_package_config_file (cmake/modules/MaterialXConfig.cmake.in
587- ${PROJECT_BINARY_DIR} /cmake/${CMAKE_PROJECT_NAME}Config.cmake
588- INSTALL_DESTINATION "${MATERIALX_GEN_CONFIG_PATH} "
589- PATH_VARS CMAKE_INSTALL_PREFIX CMAKE_PROJECT_NAME )
583+ ${PROJECT_BINARY_DIR} /cmake/${CMAKE_PROJECT_NAME}Config.cmake
584+ INSTALL_DESTINATION "${MATERIALX_GEN_CONFIG_PATH} "
585+ PATH_VARS CMAKE_INSTALL_PREFIX CMAKE_PROJECT_NAME )
590586 write_basic_package_version_file (${PROJECT_BINARY_DIR} /cmake/${CMAKE_PROJECT_NAME}ConfigVersion.cmake
591- VERSION ${MATERIALX_LIBRARY_VERSION}
592- COMPATIBILITY AnyNewerVersion )
593-
594- # Install the auto-generated CMake configuration files:
587+ VERSION ${MATERIALX_LIBRARY_VERSION}
588+ COMPATIBILITY AnyNewerVersion )
595589
590+ # Install auto-generated CMake configuration files
596591 install (EXPORT MaterialX
597592 DESTINATION "${MATERIALX_GEN_CONFIG_PATH} "
598593 FILE ${CMAKE_PROJECT_NAME} Targets .cmake)
599-
600594 install (FILES "${PROJECT_BINARY_DIR} /cmake/${CMAKE_PROJECT_NAME} ConfigVersion.cmake"
601595 "${PROJECT_BINARY_DIR} /cmake/${CMAKE_PROJECT_NAME} Config.cmake"
602596 DESTINATION "${MATERIALX_GEN_CONFIG_PATH} " )
0 commit comments