diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 6c2b8d1ebc..987aaa4839 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -32,6 +32,13 @@ jobs:
python: 3.11
build_javascript: ON
+ - name: Linux_GCC_12_Python311_Static_Monolithic
+ os: ubuntu-22.04
+ compiler: gcc
+ compiler_version: "12"
+ python: 3.11
+ cmake_config: -DMATERIALX_BUILD_SHARED_LIBS=ON -DMATERIALX_BUILD_MONOLITHIC=ON
+
- name: Linux_GCC_14_Python312
os: ubuntu-24.04
compiler: gcc
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 54dff0df0e..7ef0ebd77a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -300,8 +300,7 @@ function(mx_add_library MATERIALX_MODULE_NAME)
SOURCE_FILES
HEADER_FILES
INLINED_FILES
- LIBRARIES
- PRIVATE_LIBRARIES)
+ MTLX_MODULES)
cmake_parse_arguments(args
"${options}"
"${oneValueArgs}"
@@ -331,13 +330,9 @@ function(mx_add_library MATERIALX_MODULE_NAME)
target_link_libraries(${TARGET_NAME}
PUBLIC
- ${args_LIBRARIES}
+ ${args_MTLX_MODULES}
${CMAKE_DL_LIBS})
- target_link_libraries(${TARGET_NAME}
- PRIVATE
- ${args_PRIVATE_LIBRARIES})
-
target_include_directories(${TARGET_NAME}
PUBLIC
$
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index 0f52bdb4a9..01ac2c9cbe 100644
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -14,8 +14,7 @@ if (MATERIALX_BUILD_MONOLITHIC)
target_sources(${MATERIALX_MODULE_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
endif()
- set_target_properties(
- ${MATERIALX_MODULE_NAME} PROPERTIES
+ set_target_properties(${MATERIALX_MODULE_NAME} PROPERTIES
OUTPUT_NAME ${MATERIALX_MODULE_NAME}${MATERIALX_LIBNAME_SUFFIX}
COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS}"
LINK_FLAGS "${EXTERNAL_LINK_FLAGS}"
@@ -23,8 +22,8 @@ if (MATERIALX_BUILD_MONOLITHIC)
VERSION "${MATERIALX_LIBRARY_VERSION}"
SOVERSION "${MATERIALX_MAJOR_VERSION}")
- target_link_libraries(
- ${MATERIALX_MODULE_NAME}
+ target_link_libraries(${MATERIALX_MODULE_NAME}
+ PUBLIC
${CMAKE_DL_LIBS})
target_include_directories(${MATERIALX_MODULE_NAME}
diff --git a/source/MaterialXFormat/CMakeLists.txt b/source/MaterialXFormat/CMakeLists.txt
index d75bbc537c..767c08068f 100644
--- a/source/MaterialXFormat/CMakeLists.txt
+++ b/source/MaterialXFormat/CMakeLists.txt
@@ -9,12 +9,14 @@ mx_add_library(MaterialXFormat
${materialx_source}
HEADER_FILES
${materialx_headers}
- LIBRARIES
+ MTLX_MODULES
MaterialXCore
- PRIVATE_LIBRARIES
- "$"
EXPORT_DEFINE
MATERIALX_FORMAT_EXPORTS)
# we need to use BUILD_INTERFACE here to hide the use of pugixml from the cmake export when we're building
# MaterialX as a static library - feels like maybe a cmake bug?
+
+target_link_libraries(${TARGET_NAME}
+ PRIVATE
+ "$")
\ No newline at end of file
diff --git a/source/MaterialXGenGlsl/CMakeLists.txt b/source/MaterialXGenGlsl/CMakeLists.txt
index bd03965b62..37e3a44252 100644
--- a/source/MaterialXGenGlsl/CMakeLists.txt
+++ b/source/MaterialXGenGlsl/CMakeLists.txt
@@ -6,7 +6,7 @@ mx_add_library(MaterialXGenGlsl
${materialx_source}
HEADER_FILES
${materialx_headers}
- LIBRARIES
+ MTLX_MODULES
MaterialXGenShader
MaterialXCore
EXPORT_DEFINE
diff --git a/source/MaterialXGenMdl/CMakeLists.txt b/source/MaterialXGenMdl/CMakeLists.txt
index b53b2c1954..ef51a08376 100644
--- a/source/MaterialXGenMdl/CMakeLists.txt
+++ b/source/MaterialXGenMdl/CMakeLists.txt
@@ -6,7 +6,7 @@ mx_add_library(MaterialXGenMdl
${materialx_source}
HEADER_FILES
${materialx_headers}
- LIBRARIES
+ MTLX_MODULES
MaterialXGenShader
MaterialXCore
EXPORT_DEFINE
diff --git a/source/MaterialXGenMsl/CMakeLists.txt b/source/MaterialXGenMsl/CMakeLists.txt
index 9dbfd666f7..317b7fa58e 100644
--- a/source/MaterialXGenMsl/CMakeLists.txt
+++ b/source/MaterialXGenMsl/CMakeLists.txt
@@ -6,7 +6,7 @@ mx_add_library(MaterialXGenMsl
${materialx_source}
HEADER_FILES
${materialx_headers}
- LIBRARIES
+ MTLX_MODULES
MaterialXGenShader
MaterialXCore
EXPORT_DEFINE
diff --git a/source/MaterialXGenOsl/CMakeLists.txt b/source/MaterialXGenOsl/CMakeLists.txt
index 398f390c64..c5b6079382 100644
--- a/source/MaterialXGenOsl/CMakeLists.txt
+++ b/source/MaterialXGenOsl/CMakeLists.txt
@@ -6,7 +6,7 @@ mx_add_library(MaterialXGenOsl
${materialx_source}
HEADER_FILES
${materialx_headers}
- LIBRARIES
+ MTLX_MODULES
MaterialXGenShader
MaterialXCore
EXPORT_DEFINE
diff --git a/source/MaterialXGenShader/CMakeLists.txt b/source/MaterialXGenShader/CMakeLists.txt
index ebdf814234..78b5138486 100644
--- a/source/MaterialXGenShader/CMakeLists.txt
+++ b/source/MaterialXGenShader/CMakeLists.txt
@@ -6,7 +6,7 @@ mx_add_library(MaterialXGenShader
${materialx_source}
HEADER_FILES
${materialx_headers}
- LIBRARIES
+ MTLX_MODULES
MaterialXFormat
MaterialXCore
EXPORT_DEFINE
diff --git a/source/MaterialXRender/CMakeLists.txt b/source/MaterialXRender/CMakeLists.txt
index 130cbd190c..9cb1bcaa04 100644
--- a/source/MaterialXRender/CMakeLists.txt
+++ b/source/MaterialXRender/CMakeLists.txt
@@ -13,7 +13,7 @@ mx_add_library(MaterialXRender
${materialx_inlined}
HEADER_FILES
${materialx_headers}
- LIBRARIES
+ MTLX_MODULES
MaterialXGenShader
EXPORT_DEFINE
MATERIALX_RENDER_EXPORTS)
diff --git a/source/MaterialXRenderGlsl/CMakeLists.txt b/source/MaterialXRenderGlsl/CMakeLists.txt
index eb4548ed43..32e68a5f36 100644
--- a/source/MaterialXRenderGlsl/CMakeLists.txt
+++ b/source/MaterialXRenderGlsl/CMakeLists.txt
@@ -28,7 +28,7 @@ mx_add_library(MaterialXRenderGlsl
${materialx_source}
HEADER_FILES
${materialx_headers}
- LIBRARIES
+ MTLX_MODULES
MaterialXRenderHw
MaterialXGenGlsl
EXPORT_DEFINE
diff --git a/source/MaterialXRenderHw/CMakeLists.txt b/source/MaterialXRenderHw/CMakeLists.txt
index 375ac7cead..a8a806d1b6 100644
--- a/source/MaterialXRenderHw/CMakeLists.txt
+++ b/source/MaterialXRenderHw/CMakeLists.txt
@@ -20,7 +20,7 @@ mx_add_library(MaterialXRenderHw
${materialx_source}
HEADER_FILES
${materialx_headers}
- LIBRARIES
+ MTLX_MODULES
MaterialXRender
EXPORT_DEFINE
MATERIALX_RENDERHW_EXPORTS
diff --git a/source/MaterialXRenderMsl/CMakeLists.txt b/source/MaterialXRenderMsl/CMakeLists.txt
index 81f4731bb9..296c454e2b 100644
--- a/source/MaterialXRenderMsl/CMakeLists.txt
+++ b/source/MaterialXRenderMsl/CMakeLists.txt
@@ -26,7 +26,7 @@ mx_add_library(MaterialXRenderMsl
${materialx_source}
HEADER_FILES
${materialx_headers}
- LIBRARIES
+ MTLX_MODULES
MaterialXRenderHw
MaterialXGenMsl
EXPORT_DEFINE
diff --git a/source/MaterialXRenderOsl/CMakeLists.txt b/source/MaterialXRenderOsl/CMakeLists.txt
index 033558fcaa..3b02984ab1 100644
--- a/source/MaterialXRenderOsl/CMakeLists.txt
+++ b/source/MaterialXRenderOsl/CMakeLists.txt
@@ -6,7 +6,7 @@ mx_add_library(MaterialXRenderOsl
${materialx_source}
HEADER_FILES
${materialx_headers}
- LIBRARIES
+ MTLX_MODULES
MaterialXRender
EXPORT_DEFINE
MATERIALX_RENDEROSL_EXPORTS)