44# NB: This function has a number of Imath-specific names/variables
55# in it, so be careful copying...
66function (OPENEXR_DEFINE_LIBRARY libname)
7- set (options )
7+ set (options EMBEDDED )
88 set (oneValueArgs PRIV_EXPORT CURDIR CURBINDIR)
99 set (multiValueArgs SOURCES HEADERS DEPENDENCIES PRIVATE_DEPS)
1010 cmake_parse_arguments (OPENEXR_CURLIB "${options} " "${oneValueArgs} " "${multiValueArgs} " ${ARGN} )
@@ -13,7 +13,12 @@ function(OPENEXR_DEFINE_LIBRARY libname)
1313 set (_openexr_extra_flags "$<$<COMPILE_LANGUAGE:CXX>:/EHsc>" "$<$<COMPILE_LANGUAGE:CXX>:/MP>" )
1414 endif ()
1515 set (objlib ${libname} )
16- add_library (${objlib}
16+ if (OPENEXR_CURLIB_EMBEDDED)
17+ set (libopts STATIC )
18+ else ()
19+ set (libopts)
20+ endif ()
21+ add_library (${objlib} ${libopts}
1722 ${OPENEXR_CURLIB_HEADERS}
1823 ${OPENEXR_CURLIB_SOURCES} )
1924
@@ -24,7 +29,9 @@ function(OPENEXR_DEFINE_LIBRARY libname)
2429 PRIVATE cxx_std_${OPENEXR_CXX_STANDARD}
2530 INTERFACE cxx_std_17 )
2631
27- if (OPENEXR_CURLIB_PRIV_EXPORT AND BUILD_SHARED_LIBS )
32+ if (OPENEXR_CURLIB_EMBEDDED)
33+ set (libopts)
34+ elseif (OPENEXR_CURLIB_PRIV_EXPORT AND BUILD_SHARED_LIBS )
2835 target_compile_definitions (${objlib} PRIVATE ${OPENEXR_CURLIB_PRIV_EXPORT} )
2936 if (WIN32 )
3037 target_compile_definitions (${objlib} PUBLIC OPENEXR_DLL)
@@ -46,7 +53,7 @@ function(OPENEXR_DEFINE_LIBRARY libname)
4653 CXX_EXTENSIONS OFF
4754 POSITION_INDEPENDENT_CODE ON
4855 )
49- if (NOT OPENEXR_USE_DEFAULT_VISIBILITY)
56+ if (OPENEXR_CURLIB_EMBEDDED OR NOT OPENEXR_USE_DEFAULT_VISIBILITY)
5057 set_target_properties (${objlib} PROPERTIES
5158 C_VISIBILITY_PRESET hidden
5259 CXX_VISIBILITY_PRESET hidden
@@ -60,7 +67,7 @@ function(OPENEXR_DEFINE_LIBRARY libname)
6067 endif ()
6168 set_property (TARGET ${objlib} PROPERTY PUBLIC_HEADER ${OPENEXR_CURLIB_HEADERS} )
6269
63- if (BUILD_SHARED_LIBS )
70+ if (BUILD_SHARED_LIBS AND NOT OPENEXR_CURLIB_EMBEDDED )
6471 set_target_properties (${libname} PROPERTIES
6572 SOVERSION ${OPENEXR_LIB_SOVERSION}
6673 VERSION ${OPENEXR_LIB_VERSION}
@@ -70,7 +77,6 @@ function(OPENEXR_DEFINE_LIBRARY libname)
7077 OUTPUT_NAME "${libname}${OPENEXR_LIB_SUFFIX} "
7178 RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR} /bin"
7279 )
73- add_library (${PROJECT_NAME} ::${libname} ALIAS ${libname} )
7480
7581 if (OPENEXR_INSTALL)
7682 install (TARGETS ${libname}
@@ -83,7 +89,9 @@ function(OPENEXR_DEFINE_LIBRARY libname)
8389 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /${OPENEXR_OUTPUT_SUBDIR}
8490 )
8591 endif ()
86- if (BUILD_SHARED_LIBS AND (NOT "${OPENEXR_LIB_SUFFIX} " STREQUAL "" ) AND NOT WIN32 )
92+ if (OPENEXR_CURLIB_EMBEDDED)
93+ set (libopts)
94+ elseif (BUILD_SHARED_LIBS AND (NOT "${OPENEXR_LIB_SUFFIX} " STREQUAL "" ) AND NOT WIN32 )
8795 string (TOUPPER "${CMAKE_BUILD_TYPE} " uppercase_CMAKE_BUILD_TYPE)
8896 set (verlibname ${CMAKE_SHARED_LIBRARY_PREFIX}${libname}${OPENEXR_LIB_SUFFIX} ${CMAKE_${uppercase_CMAKE_BUILD_TYPE} _POSTFIX}${CMAKE_SHARED_LIBRARY_SUFFIX} )
8997 set (baselibname ${CMAKE_SHARED_LIBRARY_PREFIX}${libname} ${CMAKE_${uppercase_CMAKE_BUILD_TYPE} _POSTFIX}${CMAKE_SHARED_LIBRARY_SUFFIX} )
@@ -93,4 +101,6 @@ function(OPENEXR_DEFINE_LIBRARY libname)
93101 set (verlibname)
94102 set (baselibname)
95103 endif ()
104+
105+ add_library (${PROJECT_NAME} ::${libname} ALIAS ${libname} )
96106endfunction ()
0 commit comments