diff --git a/cmake/modules/MaterialXVersion.rc.in b/cmake/modules/MaterialXVersion.rc.in new file mode 100644 index 0000000000..989fbb8e55 --- /dev/null +++ b/cmake/modules/MaterialXVersion.rc.in @@ -0,0 +1,34 @@ + +#define MATERIALX_FILEVERSION @MATERIALX_MAJOR_VERSION@,@MATERIALX_MINOR_VERSION@,@MATERIALX_BUILD_VERSION@,0 +#define MATERIALX_FILEVERSION_STR "@MATERIALX_MAJOR_VERSION@.@MATERIALX_MINOR_VERSION@.@MATERIALX_BUILD_VERSION@.0\0" +#define MATERIALX_FILENAME_STR "@MATERIALX_MODULE_NAME@.dll\0" + +1 VERSIONINFO + FILEVERSION MATERIALX_FILEVERSION + PRODUCTVERSION MATERIALX_FILEVERSION + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904E4" + BEGIN + VALUE "FileVersion", MATERIALX_FILEVERSION_STR + VALUE "LegalCopyright", "Apache License 2.0\0" + VALUE "OriginalFilename", MATERIALX_FILENAME_STR + VALUE "ProductName", "MaterialX\0" + VALUE "ProductVersion", MATERIALX_FILEVERSION_STR + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END diff --git a/source/MaterialXCore/CMakeLists.txt b/source/MaterialXCore/CMakeLists.txt index 37edf7929a..675c42c5de 100644 --- a/source/MaterialXCore/CMakeLists.txt +++ b/source/MaterialXCore/CMakeLists.txt @@ -1,25 +1,33 @@ +set(MATERIALX_MODULE_NAME MaterialXCore) + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Generated.h.in ${CMAKE_CURRENT_BINARY_DIR}/Generated.h) file(GLOB materialx_source "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp") file(GLOB materialx_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h" "${CMAKE_CURRENT_BINARY_DIR}/*.h") -add_library(MaterialXCore ${materialx_source} ${materialx_headers}) +add_library(${MATERIALX_MODULE_NAME} ${materialx_source} ${materialx_headers}) add_definitions(-DMATERIALX_CORE_EXPORTS) +# Create version resource +if(MATERIALX_BUILD_SHARED_LIBS AND MSVC) + configure_file(${CMAKE_SOURCE_DIR}/cmake/modules/MaterialXVersion.rc.in ${CMAKE_CURRENT_BINARY_DIR}/version.rc) + target_sources(${MATERIALX_MODULE_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/version.rc) +endif() + set_target_properties( - MaterialXCore PROPERTIES - OUTPUT_NAME MaterialXCore${MATERIALX_LIBNAME_SUFFIX} + ${MATERIALX_MODULE_NAME} PROPERTIES + OUTPUT_NAME ${MATERIALX_MODULE_NAME}${MATERIALX_LIBNAME_SUFFIX} COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" VERSION "${MATERIALX_LIBRARY_VERSION}" SOVERSION "${MATERIALX_MAJOR_VERSION}") target_link_libraries( - MaterialXCore + ${MATERIALX_MODULE_NAME} ${CMAKE_DL_LIBS}) -target_include_directories(MaterialXCore +target_include_directories(${MATERIALX_MODULE_NAME} PUBLIC $ $ @@ -27,14 +35,14 @@ target_include_directories(MaterialXCore PRIVATE ${EXTERNAL_INCLUDE_DIRS}) -install(TARGETS MaterialXCore +install(TARGETS ${MATERIALX_MODULE_NAME} EXPORT MaterialX ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH} LIBRARY DESTINATION ${MATERIALX_INSTALL_LIB_PATH} RUNTIME DESTINATION bin) install(FILES ${materialx_headers} - DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/MaterialXCore/) + DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/${MATERIALX_MODULE_NAME}/) -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/MaterialXCore.pdb" +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${MATERIALX_MODULE_NAME}.pdb" DESTINATION "${MATERIALX_INSTALL_LIB_PATH}/" OPTIONAL) diff --git a/source/MaterialXFormat/CMakeLists.txt b/source/MaterialXFormat/CMakeLists.txt index 940ef9662c..6b6d3ae9c3 100644 --- a/source/MaterialXFormat/CMakeLists.txt +++ b/source/MaterialXFormat/CMakeLists.txt @@ -1,16 +1,24 @@ +set(MATERIALX_MODULE_NAME MaterialXFormat) + file(GLOB_RECURSE materialx_source "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp") file(GLOB_RECURSE materialx_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h*") assign_source_group("Source Files" ${materialx_source}) assign_source_group("Header Files" ${materialx_headers}) -add_library(MaterialXFormat ${materialx_source} ${materialx_headers}) +add_library(${MATERIALX_MODULE_NAME} ${materialx_source} ${materialx_headers}) add_definitions(-DMATERIALX_FORMAT_EXPORTS) +# Create version resource +if(MATERIALX_BUILD_SHARED_LIBS AND MSVC) + configure_file(${CMAKE_SOURCE_DIR}/cmake/modules/MaterialXVersion.rc.in ${CMAKE_CURRENT_BINARY_DIR}/version.rc) + target_sources(${MATERIALX_MODULE_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/version.rc) +endif() + set_target_properties( - MaterialXFormat PROPERTIES - OUTPUT_NAME MaterialXFormat${MATERIALX_LIBNAME_SUFFIX} + ${MATERIALX_MODULE_NAME} PROPERTIES + OUTPUT_NAME ${MATERIALX_MODULE_NAME}${MATERIALX_LIBNAME_SUFFIX} COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" INSTALL_RPATH "${MATERIALX_SAME_DIR_RPATH}" @@ -18,26 +26,26 @@ set_target_properties( SOVERSION "${MATERIALX_MAJOR_VERSION}") target_link_libraries( - MaterialXFormat + ${MATERIALX_MODULE_NAME} MaterialXCore ${CMAKE_DL_LIBS}) -target_include_directories(MaterialXFormat +target_include_directories(${MATERIALX_MODULE_NAME} PUBLIC $ $ PRIVATE ${EXTERNAL_INCLUDE_DIRS}) -install(TARGETS MaterialXFormat +install(TARGETS ${MATERIALX_MODULE_NAME} EXPORT MaterialX ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH} LIBRARY DESTINATION ${MATERIALX_INSTALL_LIB_PATH} RUNTIME DESTINATION bin) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/" - DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/MaterialXFormat/ MESSAGE_NEVER + DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/${MATERIALX_MODULE_NAME}/ MESSAGE_NEVER FILES_MATCHING PATTERN "*.h*") -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/MaterialXFormat.pdb" +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${MATERIALX_MODULE_NAME}.pdb" DESTINATION "${MATERIALX_INSTALL_LIB_PATH}/" OPTIONAL) diff --git a/source/MaterialXGenGlsl/CMakeLists.txt b/source/MaterialXGenGlsl/CMakeLists.txt index 2ddcb5475c..58ff8a45ba 100644 --- a/source/MaterialXGenGlsl/CMakeLists.txt +++ b/source/MaterialXGenGlsl/CMakeLists.txt @@ -1,16 +1,24 @@ +set(MATERIALX_MODULE_NAME MaterialXGenGlsl) + file(GLOB_RECURSE materialx_source "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp") file(GLOB_RECURSE materialx_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h*") assign_source_group("Source Files" ${materialx_source}) assign_source_group("Header Files" ${materialx_headers}) -add_library(MaterialXGenGlsl ${materialx_source} ${materialx_headers}) +add_library(${MATERIALX_MODULE_NAME} ${materialx_source} ${materialx_headers}) add_definitions(-DMATERIALX_GENGLSL_EXPORTS) +# Create version resource +if(MATERIALX_BUILD_SHARED_LIBS AND MSVC) + configure_file(${CMAKE_SOURCE_DIR}/cmake/modules/MaterialXVersion.rc.in ${CMAKE_CURRENT_BINARY_DIR}/version.rc) + target_sources(${MATERIALX_MODULE_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/version.rc) +endif() + set_target_properties( - MaterialXGenGlsl PROPERTIES - OUTPUT_NAME MaterialXGenGlsl${MATERIALX_LIBNAME_SUFFIX} + ${MATERIALX_MODULE_NAME} PROPERTIES + OUTPUT_NAME ${MATERIALX_MODULE_NAME}${MATERIALX_LIBNAME_SUFFIX} COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" INSTALL_RPATH "${MATERIALX_SAME_DIR_RPATH}" @@ -18,27 +26,27 @@ set_target_properties( SOVERSION "${MATERIALX_MAJOR_VERSION}") target_link_libraries( - MaterialXGenGlsl + ${MATERIALX_MODULE_NAME} MaterialXGenShader MaterialXCore ${CMAKE_DL_LIBS}) -target_include_directories(MaterialXGenGlsl +target_include_directories(${MATERIALX_MODULE_NAME} PUBLIC $ $ PRIVATE ${EXTERNAL_INCLUDE_DIRS}) -install(TARGETS MaterialXGenGlsl +install(TARGETS ${MATERIALX_MODULE_NAME} EXPORT MaterialX ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH} LIBRARY DESTINATION ${MATERIALX_INSTALL_LIB_PATH} RUNTIME DESTINATION bin) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/" - DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/MaterialXGenGlsl/ MESSAGE_NEVER + DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/${MATERIALX_MODULE_NAME}/ MESSAGE_NEVER FILES_MATCHING PATTERN "*.h*") -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/MaterialXGenGlsl.pdb" +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${MATERIALX_MODULE_NAME}.pdb" DESTINATION "${MATERIALX_INSTALL_LIB_PATH}/" OPTIONAL) diff --git a/source/MaterialXGenMdl/CMakeLists.txt b/source/MaterialXGenMdl/CMakeLists.txt index b73e674b7f..04dc2e76b4 100644 --- a/source/MaterialXGenMdl/CMakeLists.txt +++ b/source/MaterialXGenMdl/CMakeLists.txt @@ -1,16 +1,24 @@ +set(MATERIALX_MODULE_NAME MaterialXGenMdl) + file(GLOB_RECURSE materialx_source "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp") file(GLOB_RECURSE materialx_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h*") assign_source_group("Source Files" ${materialx_source}) assign_source_group("Header Files" ${materialx_headers}) -add_library(MaterialXGenMdl ${materialx_source} ${materialx_headers}) +add_library(${MATERIALX_MODULE_NAME} ${materialx_source} ${materialx_headers}) add_definitions(-DMATERIALX_GENMDL_EXPORTS) +# Create version resource +if(MATERIALX_BUILD_SHARED_LIBS AND MSVC) + configure_file(${CMAKE_SOURCE_DIR}/cmake/modules/MaterialXVersion.rc.in ${CMAKE_CURRENT_BINARY_DIR}/version.rc) + target_sources(${MATERIALX_MODULE_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/version.rc) +endif() + set_target_properties( - MaterialXGenMdl PROPERTIES - OUTPUT_NAME MaterialXGenMdl${MATERIALX_LIBNAME_SUFFIX} + ${MATERIALX_MODULE_NAME} PROPERTIES + OUTPUT_NAME ${MATERIALX_MODULE_NAME}${MATERIALX_LIBNAME_SUFFIX} COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" INSTALL_RPATH "${MATERIALX_SAME_DIR_RPATH}" @@ -18,30 +26,30 @@ set_target_properties( SOVERSION "${MATERIALX_MAJOR_VERSION}") target_link_libraries( - MaterialXGenMdl + ${MATERIALX_MODULE_NAME} MaterialXGenShader MaterialXCore ${CMAKE_DL_LIBS}) -target_include_directories(MaterialXGenMdl +target_include_directories(${MATERIALX_MODULE_NAME} PUBLIC $ $ PRIVATE ${EXTERNAL_INCLUDE_DIRS}) -install(TARGETS MaterialXGenMdl +install(TARGETS ${MATERIALX_MODULE_NAME} EXPORT MaterialX ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH} LIBRARY DESTINATION ${MATERIALX_INSTALL_LIB_PATH} RUNTIME DESTINATION bin) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/" - DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/MaterialXGenMdl/ MESSAGE_NEVER + DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/${MATERIALX_MODULE_NAME}/ MESSAGE_NEVER FILES_MATCHING PATTERN "*.h*") install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/mdl DESTINATION "${MATERIALX_INSTALL_MDL_MODULE_PATH}") -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/MaterialXGenMdl.pdb" +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${MATERIALX_MODULE_NAME}.pdb" DESTINATION "${MATERIALX_INSTALL_LIB_PATH}/" OPTIONAL) diff --git a/source/MaterialXGenMsl/CMakeLists.txt b/source/MaterialXGenMsl/CMakeLists.txt index 31d2599531..d8ba092ee8 100644 --- a/source/MaterialXGenMsl/CMakeLists.txt +++ b/source/MaterialXGenMsl/CMakeLists.txt @@ -1,16 +1,24 @@ +set(MATERIALX_MODULE_NAME MaterialXGenMsl) + file(GLOB_RECURSE materialx_source "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp") file(GLOB_RECURSE materialx_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h*") assign_source_group("Source Files" ${materialx_source}) assign_source_group("Header Files" ${materialx_headers}) -add_library(MaterialXGenMsl ${materialx_source} ${materialx_headers}) +add_library(${MATERIALX_MODULE_NAME} ${materialx_source} ${materialx_headers}) add_definitions(-DMATERIALX_GENMSL_EXPORTS) +# Create version resource +if(MATERIALX_BUILD_SHARED_LIBS AND MSVC) + configure_file(${CMAKE_SOURCE_DIR}/cmake/modules/MaterialXVersion.rc.in ${CMAKE_CURRENT_BINARY_DIR}/version.rc) + target_sources(${MATERIALX_MODULE_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/version.rc) +endif() + set_target_properties( - MaterialXGenMsl PROPERTIES - OUTPUT_NAME MaterialXGenMsl${MATERIALX_LIBNAME_SUFFIX} + ${MATERIALX_MODULE_NAME} PROPERTIES + OUTPUT_NAME ${MATERIALX_MODULE_NAME}${MATERIALX_LIBNAME_SUFFIX} COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" INSTALL_RPATH "${MATERIALX_SAME_DIR_RPATH}" @@ -18,27 +26,27 @@ set_target_properties( SOVERSION "${MATERIALX_MAJOR_VERSION}") target_link_libraries( - MaterialXGenMsl + ${MATERIALX_MODULE_NAME} MaterialXGenShader MaterialXCore ${CMAKE_DL_LIBS}) -target_include_directories(MaterialXGenMsl +target_include_directories(${MATERIALX_MODULE_NAME} PUBLIC $ $ PRIVATE ${EXTERNAL_INCLUDE_DIRS}) -install(TARGETS MaterialXGenMsl +install(TARGETS ${MATERIALX_MODULE_NAME} EXPORT MaterialX ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH} LIBRARY DESTINATION ${MATERIALX_INSTALL_LIB_PATH} RUNTIME DESTINATION bin) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/" - DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/MaterialXGenMsl/ MESSAGE_NEVER + DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/${MATERIALX_MODULE_NAME}/ MESSAGE_NEVER FILES_MATCHING PATTERN "*.h*") -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/MaterialXGenMsl.pdb" +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${MATERIALX_MODULE_NAME}.pdb" DESTINATION "${MATERIALX_INSTALL_LIB_PATH}/" OPTIONAL) diff --git a/source/MaterialXGenOsl/CMakeLists.txt b/source/MaterialXGenOsl/CMakeLists.txt index 03e30de0c1..24bd0043d9 100644 --- a/source/MaterialXGenOsl/CMakeLists.txt +++ b/source/MaterialXGenOsl/CMakeLists.txt @@ -1,16 +1,24 @@ +set(MATERIALX_MODULE_NAME MaterialXGenOsl) + file(GLOB_RECURSE materialx_source "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp") file(GLOB_RECURSE materialx_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h*") assign_source_group("Source Files" ${materialx_source}) assign_source_group("Header Files" ${materialx_headers}) -add_library(MaterialXGenOsl ${materialx_source} ${materialx_headers}) +add_library(${MATERIALX_MODULE_NAME} ${materialx_source} ${materialx_headers}) add_definitions(-DMATERIALX_GENOSL_EXPORTS) +# Create version resource +if(MATERIALX_BUILD_SHARED_LIBS AND MSVC) + configure_file(${CMAKE_SOURCE_DIR}/cmake/modules/MaterialXVersion.rc.in ${CMAKE_CURRENT_BINARY_DIR}/version.rc) + target_sources(${MATERIALX_MODULE_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/version.rc) +endif() + set_target_properties( - MaterialXGenOsl PROPERTIES - OUTPUT_NAME MaterialXGenOsl${MATERIALX_LIBNAME_SUFFIX} + ${MATERIALX_MODULE_NAME} PROPERTIES + OUTPUT_NAME ${MATERIALX_MODULE_NAME}${MATERIALX_LIBNAME_SUFFIX} COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" INSTALL_RPATH "${MATERIALX_SAME_DIR_RPATH}" @@ -18,28 +26,28 @@ set_target_properties( SOVERSION "${MATERIALX_MAJOR_VERSION}") target_link_libraries( - MaterialXGenOsl + ${MATERIALX_MODULE_NAME} MaterialXGenShader MaterialXCore ${CMAKE_DL_LIBS}) -target_include_directories(MaterialXGenOsl +target_include_directories(${MATERIALX_MODULE_NAME} PUBLIC $ $ PRIVATE ${EXTERNAL_INCLUDE_DIRS}) -install(TARGETS MaterialXGenOsl +install(TARGETS ${MATERIALX_MODULE_NAME} EXPORT MaterialX ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH} LIBRARY DESTINATION ${MATERIALX_INSTALL_LIB_PATH} RUNTIME DESTINATION bin) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/" - DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/MaterialXGenOsl/ MESSAGE_NEVER + DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/${MATERIALX_MODULE_NAME}/ MESSAGE_NEVER FILES_MATCHING PATTERN "*.h*") -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/MaterialXGenOsl.pdb" +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${MATERIALX_MODULE_NAME}.pdb" DESTINATION "${MATERIALX_INSTALL_LIB_PATH}/" OPTIONAL) diff --git a/source/MaterialXGenShader/CMakeLists.txt b/source/MaterialXGenShader/CMakeLists.txt index 231dda6e5c..0a16049f25 100644 --- a/source/MaterialXGenShader/CMakeLists.txt +++ b/source/MaterialXGenShader/CMakeLists.txt @@ -1,16 +1,24 @@ +set(MATERIALX_MODULE_NAME MaterialXGenShader) + file(GLOB_RECURSE materialx_source "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp") file(GLOB_RECURSE materialx_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h*") assign_source_group("Source Files" ${materialx_source}) assign_source_group("Header Files" ${materialx_headers}) -add_library(MaterialXGenShader ${materialx_source} ${materialx_headers}) +add_library(${MATERIALX_MODULE_NAME} ${materialx_source} ${materialx_headers}) add_definitions(-DMATERIALX_GENSHADER_EXPORTS) +# Create version resource +if(MATERIALX_BUILD_SHARED_LIBS AND MSVC) + configure_file(${CMAKE_SOURCE_DIR}/cmake/modules/MaterialXVersion.rc.in ${CMAKE_CURRENT_BINARY_DIR}/version.rc) + target_sources(${MATERIALX_MODULE_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/version.rc) +endif() + set_target_properties( - MaterialXGenShader PROPERTIES - OUTPUT_NAME MaterialXGenShader${MATERIALX_LIBNAME_SUFFIX} + ${MATERIALX_MODULE_NAME} PROPERTIES + OUTPUT_NAME ${MATERIALX_MODULE_NAME}${MATERIALX_LIBNAME_SUFFIX} COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" INSTALL_RPATH "${MATERIALX_SAME_DIR_RPATH}" @@ -18,29 +26,29 @@ set_target_properties( SOVERSION "${MATERIALX_MAJOR_VERSION}") target_link_libraries( - MaterialXGenShader + ${MATERIALX_MODULE_NAME} MaterialXCore MaterialXFormat ${CMAKE_DL_LIBS}) -target_include_directories(MaterialXGenShader +target_include_directories(${MATERIALX_MODULE_NAME} PUBLIC $ $ PRIVATE ${EXTERNAL_INCLUDE_DIRS}) -install(TARGETS MaterialXGenShader +install(TARGETS ${MATERIALX_MODULE_NAME} EXPORT MaterialX ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH} LIBRARY DESTINATION ${MATERIALX_INSTALL_LIB_PATH} RUNTIME DESTINATION bin) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/" - DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/MaterialXGenShader/ MESSAGE_NEVER + DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/${MATERIALX_MODULE_NAME}/ MESSAGE_NEVER FILES_MATCHING PATTERN "*.h*") -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/MaterialXGenShader.pdb" +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${MATERIALX_MODULE_NAME}.pdb" DESTINATION "${MATERIALX_INSTALL_LIB_PATH}/" OPTIONAL) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../../resources" diff --git a/source/MaterialXRender/CMakeLists.txt b/source/MaterialXRender/CMakeLists.txt index d0a50232cd..eb054303c5 100644 --- a/source/MaterialXRender/CMakeLists.txt +++ b/source/MaterialXRender/CMakeLists.txt @@ -1,3 +1,5 @@ +set(MATERIALX_MODULE_NAME MaterialXRender) + include_directories( ${EXTERNAL_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/../) @@ -18,12 +20,18 @@ if(UNIX) add_compile_options(-Wno-unused-function) endif() -add_library(MaterialXRender ${materialx_source} ${materialx_headers} ${materialx_inlined}) +add_library(${MATERIALX_MODULE_NAME} ${materialx_source} ${materialx_headers} ${materialx_inlined}) add_definitions(-DMATERIALX_RENDER_EXPORTS) +# Create version resource +if(MATERIALX_BUILD_SHARED_LIBS AND MSVC) + configure_file(${CMAKE_SOURCE_DIR}/cmake/modules/MaterialXVersion.rc.in ${CMAKE_CURRENT_BINARY_DIR}/version.rc) + target_sources(${MATERIALX_MODULE_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/version.rc) +endif() + target_link_libraries( - MaterialXRender + ${MATERIALX_MODULE_NAME} MaterialXGenShader ${CMAKE_DL_LIBS}) @@ -33,7 +41,7 @@ if(MATERIALX_BUILD_OIIO) find_package(OpenImageIO REQUIRED) if(OPENIMAGEIO_FOUND) include_directories(${OPENIMAGEIO_INCLUDE_DIR}) - target_link_libraries(MaterialXRender ${OPENIMAGEIO_LIBRARIES}) + target_link_libraries(${MATERIALX_MODULE_NAME} ${OPENIMAGEIO_LIBRARIES}) # Also needed by MaterialXTest: set(OPENIMAGEIO_FOUND "${OPENIMAGEIO_FOUND}" PARENT_SCOPE) set(OPENIMAGEIO_INCLUDE_DIR "${OPENIMAGEIO_INCLUDE_DIR}" PARENT_SCOPE) @@ -44,25 +52,25 @@ if(MATERIALX_BUILD_OIIO) endif() set_target_properties( - MaterialXRender PROPERTIES - OUTPUT_NAME MaterialXRender${MATERIALX_LIBNAME_SUFFIX} + ${MATERIALX_MODULE_NAME} PROPERTIES + OUTPUT_NAME ${MATERIALX_MODULE_NAME}${MATERIALX_LIBNAME_SUFFIX} COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" INSTALL_RPATH "${MATERIALX_SAME_DIR_RPATH}" VERSION "${MATERIALX_LIBRARY_VERSION}" SOVERSION "${MATERIALX_MAJOR_VERSION}") -install(TARGETS MaterialXRender +install(TARGETS ${MATERIALX_MODULE_NAME} EXPORT MaterialX ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH} LIBRARY DESTINATION ${MATERIALX_INSTALL_LIB_PATH} RUNTIME DESTINATION bin) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/" - DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/MaterialXRender/ MESSAGE_NEVER + DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/${MATERIALX_MODULE_NAME}/ MESSAGE_NEVER FILES_MATCHING PATTERN "*.h*" PATTERN "*.inl") -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/MaterialXRender.pdb" +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${MATERIALX_MODULE_NAME}.pdb" DESTINATION "${MATERIALX_INSTALL_LIB_PATH}/" OPTIONAL) diff --git a/source/MaterialXRenderGlsl/CMakeLists.txt b/source/MaterialXRenderGlsl/CMakeLists.txt index ddab96c318..971c356bd0 100644 --- a/source/MaterialXRenderGlsl/CMakeLists.txt +++ b/source/MaterialXRenderGlsl/CMakeLists.txt @@ -1,3 +1,5 @@ +set(MATERIALX_MODULE_NAME MaterialXRenderGlsl) + file(GLOB_RECURSE materialx_source "${CMAKE_CURRENT_SOURCE_DIR}/*.c*") file(GLOB_RECURSE materialx_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h*") @@ -34,12 +36,18 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wno-deprecated-declarations) endif() -add_library(MaterialXRenderGlsl ${materialx_source} ${materialx_headers}) +add_library(${MATERIALX_MODULE_NAME} ${materialx_source} ${materialx_headers}) add_definitions(-DMATERIALX_RENDERGLSL_EXPORTS) +# Create version resource +if(MATERIALX_BUILD_SHARED_LIBS AND MSVC) + configure_file(${CMAKE_SOURCE_DIR}/cmake/modules/MaterialXVersion.rc.in ${CMAKE_CURRENT_BINARY_DIR}/version.rc) + target_sources(${MATERIALX_MODULE_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/version.rc) +endif() + if(MATERIALX_BUILD_SHARED_LIBS) - target_compile_definitions(MaterialXRenderGlsl PUBLIC GLAD_GLAPI_EXPORT PRIVATE GLAD_GLAPI_EXPORT_BUILD) + target_compile_definitions(${MATERIALX_MODULE_NAME} PUBLIC GLAD_GLAPI_EXPORT PRIVATE GLAD_GLAPI_EXPORT_BUILD) endif() set(COMMON_LIBRARIES @@ -50,19 +58,19 @@ set(COMMON_LIBRARIES if(WIN32) if(MSVC) target_link_libraries( - MaterialXRenderGlsl + ${MATERIALX_MODULE_NAME} ${COMMON_LIBRARIES} Opengl32) elseif(MINGW) target_link_libraries( - MaterialXRenderGlsl + ${MATERIALX_MODULE_NAME} ${COMMON_LIBRARIES} Opengl32 gdi32) endif() elseif(APPLE) target_link_libraries( - MaterialXRenderGlsl + ${MATERIALX_MODULE_NAME} ${COMMON_LIBRARIES} ${OPENGL_LIBRARIES} "-framework Foundation" @@ -70,7 +78,7 @@ elseif(APPLE) "-framework Metal") elseif(UNIX) target_link_libraries( - MaterialXRenderGlsl + ${MATERIALX_MODULE_NAME} ${COMMON_LIBRARIES} ${OPENGL_LIBRARIES} ${X11_LIBRARIES} @@ -78,30 +86,30 @@ elseif(UNIX) endif() set_target_properties( - MaterialXRenderGlsl PROPERTIES - OUTPUT_NAME MaterialXRenderGlsl${MATERIALX_LIBNAME_SUFFIX} + ${MATERIALX_MODULE_NAME} PROPERTIES + OUTPUT_NAME ${MATERIALX_MODULE_NAME}${MATERIALX_LIBNAME_SUFFIX} COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" INSTALL_RPATH "${MATERIALX_SAME_DIR_RPATH}" VERSION "${MATERIALX_LIBRARY_VERSION}" SOVERSION "${MATERIALX_MAJOR_VERSION}") -target_include_directories(MaterialXRenderGlsl +target_include_directories(${MATERIALX_MODULE_NAME} PUBLIC $ $ PRIVATE ${EXTERNAL_INCLUDE_DIRS}) -install(TARGETS MaterialXRenderGlsl +install(TARGETS ${MATERIALX_MODULE_NAME} EXPORT MaterialX ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH} LIBRARY DESTINATION ${MATERIALX_INSTALL_LIB_PATH} RUNTIME DESTINATION bin) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/" - DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/MaterialXRenderGlsl/ MESSAGE_NEVER + DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/${MATERIALX_MODULE_NAME}/ MESSAGE_NEVER FILES_MATCHING PATTERN "*.h*") -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/MaterialXRenderGlsl.pdb" +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${MATERIALX_MODULE_NAME}.pdb" DESTINATION "${MATERIALX_INSTALL_LIB_PATH}/" OPTIONAL) diff --git a/source/MaterialXRenderHw/CMakeLists.txt b/source/MaterialXRenderHw/CMakeLists.txt index 85ef13c55c..07210b12fa 100644 --- a/source/MaterialXRenderHw/CMakeLists.txt +++ b/source/MaterialXRenderHw/CMakeLists.txt @@ -1,3 +1,5 @@ +set(MATERIALX_MODULE_NAME MaterialXRenderHw) + file(GLOB materialx_source "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp") file(GLOB materialx_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h*") @@ -20,18 +22,24 @@ endif() assign_source_group("Source Files" ${materialx_source}) assign_source_group("Header Files" ${materialx_headers}) -add_library(MaterialXRenderHw ${materialx_source} ${materialx_headers}) +add_library(${MATERIALX_MODULE_NAME} ${materialx_source} ${materialx_headers}) add_definitions(-DMATERIALX_RENDERHW_EXPORTS) +# Create version resource +if(MATERIALX_BUILD_SHARED_LIBS AND MSVC) + configure_file(${CMAKE_SOURCE_DIR}/cmake/modules/MaterialXVersion.rc.in ${CMAKE_CURRENT_BINARY_DIR}/version.rc) + target_sources(${MATERIALX_MODULE_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/version.rc) +endif() + if(MSVC) target_link_libraries( - MaterialXRenderHw + ${MATERIALX_MODULE_NAME} MaterialXRender ${CMAKE_DL_LIBS}) elseif(APPLE) target_link_libraries( - MaterialXRenderHw + ${MATERIALX_MODULE_NAME} MaterialXRender ${CMAKE_DL_LIBS} "-framework Foundation" @@ -39,7 +47,7 @@ elseif(APPLE) "-framework Metal") elseif(UNIX) target_link_libraries( - MaterialXRenderHw + ${MATERIALX_MODULE_NAME} MaterialXRender ${CMAKE_DL_LIBS} ${X11_LIBRARIES} @@ -47,30 +55,30 @@ elseif(UNIX) endif() set_target_properties( - MaterialXRenderHw PROPERTIES - OUTPUT_NAME MaterialXRenderHw${MATERIALX_LIBNAME_SUFFIX} + ${MATERIALX_MODULE_NAME} PROPERTIES + OUTPUT_NAME ${MATERIALX_MODULE_NAME}${MATERIALX_LIBNAME_SUFFIX} COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" INSTALL_RPATH "${MATERIALX_SAME_DIR_RPATH}" VERSION "${MATERIALX_LIBRARY_VERSION}" SOVERSION "${MATERIALX_MAJOR_VERSION}") -target_include_directories(MaterialXRenderHw +target_include_directories(${MATERIALX_MODULE_NAME} PUBLIC $ $ PRIVATE ${EXTERNAL_INCLUDE_DIRS}) -install(TARGETS MaterialXRenderHw +install(TARGETS ${MATERIALX_MODULE_NAME} EXPORT MaterialX ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH} LIBRARY DESTINATION ${MATERIALX_INSTALL_LIB_PATH} RUNTIME DESTINATION bin) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/" - DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/MaterialXRenderHw/ MESSAGE_NEVER + DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/${MATERIALX_MODULE_NAME}/ MESSAGE_NEVER FILES_MATCHING PATTERN "*.h*") -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/MaterialXRenderHw.pdb" +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${MATERIALX_MODULE_NAME}.pdb" DESTINATION "${MATERIALX_INSTALL_LIB_PATH}/" OPTIONAL) diff --git a/source/MaterialXRenderMsl/CMakeLists.txt b/source/MaterialXRenderMsl/CMakeLists.txt index 5ad50ea2cc..173a9e9bae 100644 --- a/source/MaterialXRenderMsl/CMakeLists.txt +++ b/source/MaterialXRenderMsl/CMakeLists.txt @@ -1,3 +1,5 @@ +set(MATERIALX_MODULE_NAME MaterialXRenderMsl) + file(GLOB_RECURSE materialx_source "${CMAKE_CURRENT_SOURCE_DIR}/*.m*") file(GLOB_RECURSE materialx_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h*") @@ -34,7 +36,7 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wno-deprecated-declarations) endif() -add_library(MaterialXRenderMsl ${materialx_source} ${materialx_headers}) +add_library(${MATERIALX_MODULE_NAME} ${materialx_source} ${materialx_headers}) add_definitions(-DMATERIALX_RENDERMSL_EXPORTS) @@ -45,12 +47,12 @@ set(COMMON_LIBRARIES if(MSVC) target_link_libraries( - MaterialXRenderMsl + ${MATERIALX_MODULE_NAME} ${COMMON_LIBRARIES} Opengl32) elseif(APPLE) target_link_libraries( - MaterialXRenderMsl + ${MATERIALX_MODULE_NAME} ${COMMON_LIBRARIES} ${OPENGL_LIBRARIES} "-framework Foundation" @@ -58,7 +60,7 @@ elseif(APPLE) "-framework Metal") elseif(UNIX) target_link_libraries( - MaterialXRenderMsl + ${MATERIALX_MODULE_NAME} ${COMMON_LIBRARIES} ${OPENGL_LIBRARIES} ${X11_LIBRARIES} @@ -66,29 +68,29 @@ elseif(UNIX) endif() set_target_properties( - MaterialXRenderMsl PROPERTIES - OUTPUT_NAME MaterialXRenderMsl${MATERIALX_LIBNAME_SUFFIX} + ${MATERIALX_MODULE_NAME} PROPERTIES + OUTPUT_NAME ${MATERIALX_MODULE_NAME}${MATERIALX_LIBNAME_SUFFIX} COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" VERSION "${MATERIALX_LIBRARY_VERSION}" SOVERSION "${MATERIALX_MAJOR_VERSION}") -target_include_directories(MaterialXRenderMsl +target_include_directories(${MATERIALX_MODULE_NAME} PUBLIC $ $ PRIVATE ${EXTERNAL_INCLUDE_DIRS}) -install(TARGETS MaterialXRenderMsl +install(TARGETS ${MATERIALX_MODULE_NAME} EXPORT MaterialX ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH} LIBRARY DESTINATION ${MATERIALX_INSTALL_LIB_PATH} RUNTIME DESTINATION bin) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/" - DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/MaterialXRenderMsl/ MESSAGE_NEVER + DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/${MATERIALX_MODULE_NAME}/ MESSAGE_NEVER FILES_MATCHING PATTERN "*.h*") -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/MaterialXRenderMsl.pdb" +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${MATERIALX_MODULE_NAME}.pdb" DESTINATION "${MATERIALX_INSTALL_LIB_PATH}/" OPTIONAL) diff --git a/source/MaterialXRenderOsl/CMakeLists.txt b/source/MaterialXRenderOsl/CMakeLists.txt index a4ffa81235..d4e5dbf151 100644 --- a/source/MaterialXRenderOsl/CMakeLists.txt +++ b/source/MaterialXRenderOsl/CMakeLists.txt @@ -1,16 +1,24 @@ +set(MATERIALX_MODULE_NAME MaterialXRenderOsl) + file(GLOB_RECURSE materialx_source "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp") file(GLOB_RECURSE materialx_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h*") assign_source_group("Source Files" ${materialx_source}) assign_source_group("Header Files" ${materialx_headers}) -add_library(MaterialXRenderOsl ${materialx_source} ${materialx_headers}) +add_library(${MATERIALX_MODULE_NAME} ${materialx_source} ${materialx_headers}) add_definitions(-DMATERIALX_RENDEROSL_EXPORTS) +# Create version resource +if(MATERIALX_BUILD_SHARED_LIBS AND MSVC) + configure_file(${CMAKE_SOURCE_DIR}/cmake/modules/MaterialXVersion.rc.in ${CMAKE_CURRENT_BINARY_DIR}/version.rc) + target_sources(${MATERIALX_MODULE_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/version.rc) +endif() + set_target_properties( - MaterialXRenderOsl PROPERTIES - OUTPUT_NAME MaterialXRenderOsl${MATERIALX_LIBNAME_SUFFIX} + ${MATERIALX_MODULE_NAME} PROPERTIES + OUTPUT_NAME ${MATERIALX_MODULE_NAME}${MATERIALX_LIBNAME_SUFFIX} COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}" LINK_FLAGS "${EXTERNAL_LINK_FLAGS}" INSTALL_RPATH "${MATERIALX_SAME_DIR_RPATH}" @@ -18,26 +26,26 @@ set_target_properties( SOVERSION "${MATERIALX_MAJOR_VERSION}") target_link_libraries( - MaterialXRenderOsl + ${MATERIALX_MODULE_NAME} MaterialXRender ${CMAKE_DL_LIBS}) -target_include_directories(MaterialXRenderOsl +target_include_directories(${MATERIALX_MODULE_NAME} PUBLIC $ $ PRIVATE ${EXTERNAL_INCLUDE_DIRS}) -install(TARGETS MaterialXRenderOsl +install(TARGETS ${MATERIALX_MODULE_NAME} EXPORT MaterialX ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH} LIBRARY DESTINATION ${MATERIALX_INSTALL_LIB_PATH} RUNTIME DESTINATION bin) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/" - DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/MaterialXRenderOsl/ MESSAGE_NEVER + DESTINATION ${MATERIALX_INSTALL_INCLUDE_PATH}/${MATERIALX_MODULE_NAME}/ MESSAGE_NEVER FILES_MATCHING PATTERN "*.h*") -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/MaterialXRenderOsl.pdb" +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${MATERIALX_MODULE_NAME}.pdb" DESTINATION "${MATERIALX_INSTALL_LIB_PATH}/" OPTIONAL)