Skip to content

Commit c5ade72

Browse files
Improve CMake formatting (#2347)
This changelist improves formatting and comments in the root CMake configuration, providing a more consistent template for future updates.
1 parent 329db67 commit c5ade72

1 file changed

Lines changed: 44 additions & 50 deletions

File tree

CMakeLists.txt

Lines changed: 44 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ set(MATERIALX_MINOR_VERSION 39)
44
set(MATERIALX_BUILD_VERSION 4)
55
set(MATERIALX_LIBRARY_VERSION ${MATERIALX_MAJOR_VERSION}.${MATERIALX_MINOR_VERSION}.${MATERIALX_BUILD_VERSION})
66

7-
# Cmake setup
7+
# CMake setup
88
cmake_minimum_required(VERSION 3.26)
99
set(CMAKE_CXX_STANDARD 17)
1010
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
@@ -107,8 +107,8 @@ if (MATERIALX_BUILD_JS)
107107
set(MATERIALX_BUILD_TESTS OFF)
108108
endif()
109109

110+
# All hardware shading languages currently depend on the GLSL shader generator.
110111
if(MATERIALX_BUILD_GEN_MSL)
111-
# All hardware shading languages currently depend on the GLSL shader generator.
112112
set(MATERIALX_BUILD_GEN_GLSL ON)
113113
endif()
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

161161
mark_as_advanced(MATERIALX_BUILD_DOCS)
162162
mark_as_advanced(MATERIALX_BUILD_GEN_GLSL)
@@ -211,21 +211,18 @@ if (MATERIALX_BUILD_USE_CCACHE)
211211
endif()
212212
endif()
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.
216216
if(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()
230227
endif()
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)
429425
endfunction()
430426
431-
# Propagate shared library setting to NanoGUI:
427+
# Propagate shared library setting to NanoGUI
432428
if(MATERIALX_BUILD_SHARED_LIBS)
433429
set(BUILD_SHARED_LIBS "ON")
434430
else()
@@ -517,7 +513,7 @@ if(MATERIALX_BUILD_JS)
517513
add_subdirectory(source/JsMaterialX)
518514
endif()
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()
553549
endif()
554550
551+
# Set Visual Studio startup projects
555552
if(MATERIALX_BUILD_VIEWER)
556553
set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT MaterialXView)
557554
elseif(MATERIALX_BUILD_GRAPH_EDITOR)
@@ -562,16 +559,15 @@ endif()
562559
563560
# Install root-level documents
564561
if(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

Comments
 (0)