Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def generate_cmake_toolchain(self, toolchain=None, cxx=None, cxxflags=None, ldflags=None, std=None, defines=None):
set_ = cmake_set
if_ = cmake_if
append_ = cmake_append
yield set_('CGET_PREFIX', self.prefix)
yield set_('CMAKE_PREFIX_PATH', self.prefix)
yield ['include_directories(SYSTEM ${CMAKE_PREFIX_PATH}/include)']
if toolchain: yield ['include({})'.format(util.quote(os.path.abspath(toolchain)))]
yield if_('CMAKE_CROSSCOMPILING',
append_('CMAKE_FIND_ROOT_PATH', self.prefix)
)
yield if_('CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT',
set_('CMAKE_INSTALL_PREFIX', self.prefix)
)
if cxx: yield set_('CMAKE_CXX_COMPILER', cxx)
if std:
yield if_('NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC"',
set_('CMAKE_CXX_STD_FLAG', "-std={}".format(std))
)
if cxxflags or std:
yield set_('CMAKE_CXX_FLAGS', "$ENV{{CXXFLAGS}} ${{CMAKE_CXX_FLAGS_INIT}} ${{CMAKE_CXX_STD_FLAG}} {}".format(cxxflags or ''), cache='STRING')
if ldflags:
for link_type in ['STATIC', 'SHARED', 'MODULE', 'EXE']:
yield set_('CMAKE_{}_LINKER_FLAGS'.format(link_type), "$ENV{{LDFLAGS}} {0}".format(ldflags), cache='STRING')
def cmake_set(var, val, quote=True, cache=None, description=None):
x = val
if quote: x = util.quote(val)
if cache is None or cache.lower() == 'none':
yield "set({0} {1})".format(var, x)
else:
yield 'set({0} {1} CACHE {2} "{3}")'.format(var, x, cache, description or '')
def cmake_append(var, *vals, **kwargs):
quote = True
if 'quote' in kwargs: quote = kwargs['quote']
x = ' '.join(vals)
if quote: x = ' '.join([util.quote(val) for val in vals])
yield 'list(APPEND {0} {1})'.format(var, x)