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