1*f194f574SWojciech Kozyraimport escapeRegExp from 'lodash/escapeRegExp'; 2*f194f574SWojciech Kozyra 3*f194f574SWojciech Kozyraimport { StringTransform, transformString } from '../../Transforms'; 4*f194f574SWojciech Kozyra 5*f194f574SWojciech Kozyratype DebugableStringTransform = StringTransform & { 6*f194f574SWojciech Kozyra debug?: boolean; 7*f194f574SWojciech Kozyra}; 8*f194f574SWojciech Kozyra 9*f194f574SWojciech Kozyraexport function baseCmakeTransforms( 10*f194f574SWojciech Kozyra abiVersion: string, 11*f194f574SWojciech Kozyra libNames: string[] 12*f194f574SWojciech Kozyra): DebugableStringTransform[] { 13*f194f574SWojciech Kozyra const renameFirstArg = (text: string) => 14*f194f574SWojciech Kozyra transformString( 15*f194f574SWojciech Kozyra text, 16*f194f574SWojciech Kozyra libNames.map((lib) => ({ 17*f194f574SWojciech Kozyra find: new RegExp(`^(\\\s*)${escapeRegExp(lib)}($|\\\s)`), 18*f194f574SWojciech Kozyra replaceWith: `$1${lib}_${abiVersion}$2`, 19*f194f574SWojciech Kozyra })) 20*f194f574SWojciech Kozyra ); 21*f194f574SWojciech Kozyra const renameLibs = (text: string) => 22*f194f574SWojciech Kozyra transformString( 23*f194f574SWojciech Kozyra text, 24*f194f574SWojciech Kozyra libNames.map((lib) => ({ 25*f194f574SWojciech Kozyra find: new RegExp(`(^|\\\s)${escapeRegExp(lib)}($|\\\s)`, 'g'), 26*f194f574SWojciech Kozyra replaceWith: `$1${lib}_${abiVersion}$2`, 27*f194f574SWojciech Kozyra })) 28*f194f574SWojciech Kozyra ); 29*f194f574SWojciech Kozyra return [ 30*f194f574SWojciech Kozyra { 31*f194f574SWojciech Kozyra find: /(target_link_libraries\()([\s\S]*?)(\))/g, 32*f194f574SWojciech Kozyra replaceWith: (_, p1, p2, p3) => [p1, renameLibs(p2), p3].join(''), 33*f194f574SWojciech Kozyra }, 34*f194f574SWojciech Kozyra { 35*f194f574SWojciech Kozyra find: /(add_library\()([\s\S]*?)(\))/g, 36*f194f574SWojciech Kozyra replaceWith: (_, p1, p2, p3) => [p1, renameFirstArg(p2), p3].join(''), 37*f194f574SWojciech Kozyra }, 38*f194f574SWojciech Kozyra { 39*f194f574SWojciech Kozyra find: /(target_include_directories\()([\s\S]*?)(\))/g, 40*f194f574SWojciech Kozyra replaceWith: (_, p1, p2, p3) => [p1, renameFirstArg(p2), p3].join(''), 41*f194f574SWojciech Kozyra }, 42*f194f574SWojciech Kozyra { 43*f194f574SWojciech Kozyra find: /(target_compile_options\()([\s\S]*?)(\))/g, 44*f194f574SWojciech Kozyra replaceWith: (_, p1, p2, p3) => [p1, renameFirstArg(p2), p3].join(''), 45*f194f574SWojciech Kozyra }, 46*f194f574SWojciech Kozyra { 47*f194f574SWojciech Kozyra find: /(set_target_properties\()([\s\S]*?)(\))/g, 48*f194f574SWojciech Kozyra replaceWith: (_, p1, p2, p3) => [p1, renameFirstArg(p2), p3].join(''), 49*f194f574SWojciech Kozyra }, 50*f194f574SWojciech Kozyra ]; 51*f194f574SWojciech Kozyra} 52