Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial support for shared libraries #487

Merged
merged 1 commit into from
Sep 22, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ matrix:
- os: linux
dist: bionic
compiler: gcc
env: MATRIX_EVAL="CC=gcc-6 && CXX=g++-6 && PY=2"
env: MATRIX_EVAL="CC=gcc-6 && CXX=g++-6 && SHARED=ON && PY=2"
addons:
apt:
packages: [*packages_base, g++-6]
Expand All @@ -54,15 +54,17 @@ matrix:
packages: [*packages_base, clang-9]

before_install:
- export SHARED=OFF
- export PY=3
- eval "${MATRIX_EVAL}"

script:
- mkdir build
- cd build
- cmake -DMATERIALX_BUILD_PYTHON=ON -DMATERIALX_BUILD_VIEWER=ON -DMATERIALX_TEST_RENDER=OFF -DMATERIALX_PYTHON_VERSION=$PY -DMATERIALX_INSTALL_PYTHON=OFF -DMATERIALX_WARNINGS_AS_ERRORS=ON ..
- cmake -DMATERIALX_BUILD_PYTHON=ON -DMATERIALX_BUILD_VIEWER=ON -DMATERIALX_TEST_RENDER=OFF -DMATERIALX_BUILD_SHARED_LIBS=$SHARED -DMATERIALX_PYTHON_VERSION=$PY -DMATERIALX_INSTALL_PYTHON=OFF -DMATERIALX_WARNINGS_AS_ERRORS=ON ..
- cmake --build . --target install -- -j2
- ctest -VV --output-on-failure
- export PYTHONPATH=$PYTHONPATH:$PWD/installed/python
- export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/installed/lib
- cmake -E chdir ../python/MaterialXTest python$PY main.py
- cmake -E chdir ../python/MaterialXTest python$PY genshader.py
13 changes: 13 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ option(MATERIALX_BUILD_RENDER "Build the MaterialX Render modules." ON)
option(MATERIALX_BUILD_OIIO "Build OpenImageIO support for MaterialXRender." OFF)
option(MATERIALX_BUILD_TESTS "Build unit tests." ON)

option(MATERIALX_BUILD_SHARED_LIBS "Build MaterialX libraries as shared rather than static." OFF)
option(MATERIALX_PYTHON_LTO "Enable link-time optimizations for MaterialX Python." ON)
option(MATERIALX_INSTALL_PYTHON "Install the MaterialX Python package as a third-party library when the install target is built." ON)
option(MATERIALX_TEST_RENDER "Run rendering tests for MaterialX Render module. GPU required for graphics validation." ON)
Expand Down Expand Up @@ -53,6 +54,7 @@ mark_as_advanced(MATERIALX_BUILD_GEN_OSL)
mark_as_advanced(MATERIALX_BUILD_RENDER)
mark_as_advanced(MATERIALX_BUILD_OIIO)
mark_as_advanced(MATERIALX_BUILD_TESTS)
mark_as_advanced(MATERIALX_BUILD_SHARED_LIBS)
mark_as_advanced(MATERIALX_PYTHON_LTO)
mark_as_advanced(MATERIALX_INSTALL_PYTHON)
mark_as_advanced(MATERIALX_TEST_RENDER)
Expand Down Expand Up @@ -118,6 +120,17 @@ function(assign_source_group prefix)
endforeach()
endfunction(assign_source_group)

# Adjust settings for shared libraries if requested
if(MATERIALX_BUILD_SHARED_LIBS)
if(MSVC)
message(FATAL_ERROR "Only static libraries are currently supported on Windows.")
endif()
add_definitions(-DMATERIALX_BUILD_SHARED_LIBS)
set(BUILD_SHARED_LIBS "ON")
else()
set(BUILD_SHARED_LIBS "OFF")
endif()

# Add core subdirectories
add_subdirectory(source/MaterialXCore)
add_subdirectory(source/MaterialXFormat)
Expand Down
8 changes: 4 additions & 4 deletions source/MaterialXCore/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
file(GLOB materialx_source "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp")
file(GLOB materialx_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h*")

add_library(MaterialXCore STATIC ${materialx_source} ${materialx_headers})
add_library(MaterialXCore ${materialx_source} ${materialx_headers})

add_definitions(-DMATERIALX_MAJOR_VERSION=${MATERIALX_MAJOR_VERSION})
add_definitions(-DMATERIALX_MINOR_VERSION=${MATERIALX_MINOR_VERSION})
Expand All @@ -25,12 +25,12 @@ target_include_directories(MaterialXCore
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../>
$<INSTALL_INTERFACE:${MATERIALX_INSTALL_INCLUDE_PATH}>
PRIVATE
${EXTERNAL_INCLUDE_DIRS}
)
${EXTERNAL_INCLUDE_DIRS})

install(TARGETS MaterialXCore
EXPORT MaterialX
ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH})
ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH}
LIBRARY DESTINATION ${MATERIALX_INSTALL_LIB_PATH})

install(FILES ${materialx_headers}
DESTINATION ${CMAKE_INSTALL_PREFIX}/${MATERIALX_INSTALL_INCLUDE_PATH}/MaterialXCore/)
Expand Down
8 changes: 4 additions & 4 deletions source/MaterialXFormat/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ 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 STATIC ${materialx_source} ${materialx_headers})
add_library(MaterialXFormat ${materialx_source} ${materialx_headers})

set_target_properties(
MaterialXFormat PROPERTIES
Expand All @@ -25,12 +25,12 @@ target_include_directories(MaterialXFormat
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../>
$<INSTALL_INTERFACE:${MATERIALX_INSTALL_INCLUDE_PATH}>
PRIVATE
${EXTERNAL_INCLUDE_DIRS}
)
${EXTERNAL_INCLUDE_DIRS})

install(TARGETS MaterialXFormat
EXPORT MaterialX
ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH})
ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH}
LIBRARY DESTINATION ${MATERIALX_INSTALL_LIB_PATH})

install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/"
DESTINATION ${CMAKE_INSTALL_PREFIX}/${MATERIALX_INSTALL_INCLUDE_PATH}/MaterialXFormat/ MESSAGE_NEVER
Expand Down
8 changes: 4 additions & 4 deletions source/MaterialXGenGlsl/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ 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 STATIC ${materialx_source} ${materialx_headers})
add_library(MaterialXGenGlsl ${materialx_source} ${materialx_headers})

set_target_properties(
MaterialXGenGlsl PROPERTIES
Expand All @@ -26,12 +26,12 @@ target_include_directories(MaterialXGenGlsl
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../>
$<INSTALL_INTERFACE:${MATERIALX_INSTALL_INCLUDE_PATH}>
PRIVATE
${EXTERNAL_INCLUDE_DIRS}
)
${EXTERNAL_INCLUDE_DIRS})

install(TARGETS MaterialXGenGlsl
EXPORT MaterialX
ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH})
ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH}
LIBRARY DESTINATION ${MATERIALX_INSTALL_LIB_PATH})

install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/"
DESTINATION ${CMAKE_INSTALL_PREFIX}/${MATERIALX_INSTALL_INCLUDE_PATH}/MaterialXGenGlsl/ MESSAGE_NEVER
Expand Down
8 changes: 4 additions & 4 deletions source/MaterialXGenOsl/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ 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 STATIC ${materialx_source} ${materialx_headers})
add_library(MaterialXGenOsl ${materialx_source} ${materialx_headers})

set_target_properties(
MaterialXGenOsl PROPERTIES
Expand All @@ -26,12 +26,12 @@ target_include_directories(MaterialXGenOsl
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../>
$<INSTALL_INTERFACE:${MATERIALX_INSTALL_INCLUDE_PATH}>
PRIVATE
${EXTERNAL_INCLUDE_DIRS}
)
${EXTERNAL_INCLUDE_DIRS})

install(TARGETS MaterialXGenOsl
EXPORT MaterialX
ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH})
ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH}
LIBRARY DESTINATION ${MATERIALX_INSTALL_LIB_PATH})

install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/"
DESTINATION ${CMAKE_INSTALL_PREFIX}/${MATERIALX_INSTALL_INCLUDE_PATH}/MaterialXGenOsl/ MESSAGE_NEVER
Expand Down
8 changes: 4 additions & 4 deletions source/MaterialXGenShader/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ 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 STATIC ${materialx_source} ${materialx_headers})
add_library(MaterialXGenShader ${materialx_source} ${materialx_headers})

set_target_properties(
MaterialXGenShader PROPERTIES
Expand All @@ -26,12 +26,12 @@ target_include_directories(MaterialXGenShader
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../>
$<INSTALL_INTERFACE:${MATERIALX_INSTALL_INCLUDE_PATH}>
PRIVATE
${EXTERNAL_INCLUDE_DIRS}
)
${EXTERNAL_INCLUDE_DIRS})

install(TARGETS MaterialXGenShader
EXPORT MaterialX
ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH})
ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH}
LIBRARY DESTINATION ${MATERIALX_INSTALL_LIB_PATH})

install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/"
DESTINATION ${CMAKE_INSTALL_PREFIX}/${MATERIALX_INSTALL_INCLUDE_PATH}/MaterialXGenShader/ MESSAGE_NEVER
Expand Down
6 changes: 3 additions & 3 deletions source/MaterialXRender/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ if(UNIX)
add_compile_options(-Wno-unused-function)
endif()

add_library(MaterialXRender STATIC ${materialx_source} ${materialx_headers})
add_library(MaterialXRender ${materialx_source} ${materialx_headers})

target_link_libraries(
MaterialXRender
Expand All @@ -42,10 +42,10 @@ set_target_properties(
SOVERSION "${MATERIALX_MAJOR_VERSION}"
DEBUG_POSTFIX "${MATERIALX_DEBUG_POSTFIX}")


install(TARGETS MaterialXRender
EXPORT MaterialX
ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH})
ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH}
LIBRARY DESTINATION ${MATERIALX_INSTALL_LIB_PATH})

install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/"
DESTINATION ${CMAKE_INSTALL_PREFIX}/${MATERIALX_INSTALL_INCLUDE_PATH}/MaterialXRender/ MESSAGE_NEVER
Expand Down
8 changes: 4 additions & 4 deletions source/MaterialXRenderGlsl/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ elseif(UNIX)
include_directories(${X11_INCLUDE_DIR})
endif()

add_library(MaterialXRenderGlsl STATIC ${materialx_source} ${materialx_headers})
add_library(MaterialXRenderGlsl ${materialx_source} ${materialx_headers})

if(MSVC)
target_link_libraries(
Expand Down Expand Up @@ -66,12 +66,12 @@ target_include_directories(MaterialXRenderGlsl
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../>
$<INSTALL_INTERFACE:${MATERIALX_INSTALL_INCLUDE_PATH}>
PRIVATE
${EXTERNAL_INCLUDE_DIRS}
)
${EXTERNAL_INCLUDE_DIRS})

install(TARGETS MaterialXRenderGlsl
EXPORT MaterialX
ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH})
ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH}
LIBRARY DESTINATION ${MATERIALX_INSTALL_LIB_PATH})

install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/"
DESTINATION ${CMAKE_INSTALL_PREFIX}/${MATERIALX_INSTALL_INCLUDE_PATH}/MaterialXRenderGlsl/ MESSAGE_NEVER
Expand Down
8 changes: 4 additions & 4 deletions source/MaterialXRenderHw/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ endif()
assign_source_group("Source Files" ${materialx_source})
assign_source_group("Header Files" ${materialx_headers})

add_library(MaterialXRenderHw STATIC ${materialx_source} ${materialx_headers})
add_library(MaterialXRenderHw ${materialx_source} ${materialx_headers})

if(MSVC)
target_link_libraries(
Expand Down Expand Up @@ -50,12 +50,12 @@ target_include_directories(MaterialXRenderHw
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../>
$<INSTALL_INTERFACE:${MATERIALX_INSTALL_INCLUDE_PATH}>
PRIVATE
${EXTERNAL_INCLUDE_DIRS}
)
${EXTERNAL_INCLUDE_DIRS})

install(TARGETS MaterialXRenderHw
EXPORT MaterialX
ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH})
ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH}
LIBRARY DESTINATION ${MATERIALX_INSTALL_LIB_PATH})

install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/"
DESTINATION ${CMAKE_INSTALL_PREFIX}/${MATERIALX_INSTALL_INCLUDE_PATH}/MaterialXRenderHw/ MESSAGE_NEVER
Expand Down
8 changes: 4 additions & 4 deletions source/MaterialXRenderOsl/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ 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 STATIC ${materialx_source} ${materialx_headers})
add_library(MaterialXRenderOsl ${materialx_source} ${materialx_headers})

set_target_properties(
MaterialXRenderOsl PROPERTIES
Expand All @@ -25,12 +25,12 @@ target_include_directories(MaterialXRenderOsl
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../>
$<INSTALL_INTERFACE:${MATERIALX_INSTALL_INCLUDE_PATH}>
PRIVATE
${EXTERNAL_INCLUDE_DIRS}
)
${EXTERNAL_INCLUDE_DIRS})

install(TARGETS MaterialXRenderOsl
EXPORT MaterialX
ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH})
ARCHIVE DESTINATION ${MATERIALX_INSTALL_LIB_PATH}
LIBRARY DESTINATION ${MATERIALX_INSTALL_LIB_PATH})

install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/"
DESTINATION ${CMAKE_INSTALL_PREFIX}/${MATERIALX_INSTALL_INCLUDE_PATH}/MaterialXRenderOsl/ MESSAGE_NEVER
Expand Down