diff --git a/packages/cli-config-android/src/config/__tests__/getDependencyConfig.test.ts b/packages/cli-config-android/src/config/__tests__/getDependencyConfig.test.ts index 36587942e..d1a076de1 100644 --- a/packages/cli-config-android/src/config/__tests__/getDependencyConfig.test.ts +++ b/packages/cli-config-android/src/config/__tests__/getDependencyConfig.test.ts @@ -34,12 +34,40 @@ describe('android::getDependencyConfig', () => { noPackage: { android: {}, }, + pureCxx: { + android: {}, + }, }); }); it('returns an object with android project configuration', () => { - expect(getDependencyConfig('/nested', userConfig)).not.toBeNull(); - expect(typeof getDependencyConfig('/nested', userConfig)).toBe('object'); + const config = getDependencyConfig('/nested', userConfig); + + expect(config).not.toBeNull(); + expect(typeof config).toBe('object'); + expect(config).toMatchObject({ + cmakeListsPath: + '/nested/android/build/generated/source/codegen/jni/CMakeLists.txt', + isPureCxxDependency: false, + }); + }); + + it('sets cmakeListsPath to null for pure C++ dependencies', () => { + expect( + getDependencyConfig('/pureCxx', { + cxxModuleCMakeListsModuleName: 'PureCxxModule', + cxxModuleCMakeListsPath: 'src/main/jni/CMakeLists.txt', + cxxModuleHeaderName: 'PureCxxModule.h', + }), + ).toMatchObject({ + cmakeListsPath: null, + cxxModuleCMakeListsModuleName: 'PureCxxModule', + cxxModuleCMakeListsPath: '/pureCxx/android/src/main/jni/CMakeLists.txt', + cxxModuleHeaderName: 'PureCxxModule.h', + isPureCxxDependency: true, + packageImportPath: null, + packageInstance: null, + }); }); it('returns `null` if manifest file has not been found', () => { diff --git a/packages/cli-config-android/src/config/index.ts b/packages/cli-config-android/src/config/index.ts index ba81f5c2a..168fb3890 100644 --- a/packages/cli-config-android/src/config/index.ts +++ b/packages/cli-config-android/src/config/index.ts @@ -165,9 +165,13 @@ export function dependencyConfig( userConfig.libraryName || findLibraryName(root, sourceDir); const componentDescriptors = userConfig.componentDescriptors || findComponentDescriptors(root); + let cmakeListsPath = userConfig.cmakeListsPath ? path.join(sourceDir, userConfig.cmakeListsPath) + : isPureCxxDependency + ? null : path.join(sourceDir, 'build/generated/source/codegen/jni/CMakeLists.txt'); + const cxxModuleCMakeListsModuleName = userConfig.cxxModuleCMakeListsModuleName || null; const cxxModuleHeaderName = userConfig.cxxModuleHeaderName || null; @@ -176,7 +180,10 @@ export function dependencyConfig( : null; if (process.platform === 'win32') { - cmakeListsPath = cmakeListsPath.replace(/\\/g, '/'); + if (cmakeListsPath) { + cmakeListsPath = cmakeListsPath.replace(/\\/g, '/'); + } + if (cxxModuleCMakeListsPath) { cxxModuleCMakeListsPath = cxxModuleCMakeListsPath.replace(/\\/g, '/'); }