| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- # Helper functions to include libigl modules
- function(_igl_include_full prefix name force)
- string(TOUPPER "${prefix}" prefix_uc)
- string(TOUPPER "${name}" name_uc)
- if(prefix_uc)
- string(PREPEND prefix_uc _)
- endif()
- string(TOLOWER "${prefix_uc}" prefix_lc)
- if(TARGET igl${prefix_lc}::${name})
- # Target already exists, skip
- return()
- endif()
- if(${force} AND NOT ${name} STREQUAL "core")
- message(STATUS "Forcing include of libigl module: ${name}")
- endif()
- # Dependencies are linked as INTERFACE targets unless libigl is compiled as a static library
- if(LIBIGL_USE_STATIC_LIBRARY)
- set(IGL_SCOPE PUBLIC)
- else()
- set(IGL_SCOPE INTERFACE)
- endif()
- # Retrieve module path use by libigl (necessary when calling igl_include() from a subproject)
- get_property(igl_module_path GLOBAL PROPERTY __igl_module_path)
- set(CMAKE_MODULE_PATH ${igl_module_path})
- # Include igl target definition
- if(LIBIGL${prefix_uc}_${name_uc} OR ${force})
- include(${libigl_SOURCE_DIR}/cmake/igl/modules/${prefix}/${name}.cmake)
- endif()
- endfunction()
- # Include module only if CMake option is provided
- function(igl_include_optional name)
- if(ARGC GREATER_EQUAL 2)
- # Two args given: prefix + name
- _igl_include_full(${name} ${ARGV1} FALSE)
- else()
- # Only one arg given: prefix (which contains module name)
- _igl_include_full("" ${name} FALSE)
- endif()
- endfunction()
- # Include module only unconditionally (e.g. if module is a dependency of another module)
- function(igl_include name)
- if(ARGC GREATER_EQUAL 2)
- # Two args given: prefix + name
- _igl_include_full(${name} ${ARGV1} TRUE)
- else()
- # Only one arg given: prefix (which contains module name)
- _igl_include_full("" ${name} TRUE)
- endif()
- endfunction()
|