Skip to content

Commit 6617896

Browse files
CMake Fetchcontent instead of submodules (#613)
* CMake Fetchcontent instead of submodules * include(FetchContent) * up BN * fix order of inclusion * urllib decl * use BN with fetchcontent * fetch content instead of add_subdirectory * forgot to remove 1 line in pr.yml * 2 steps fetching * simplify path for windows * BN version * 2times populated * source paths for header copy. Android one is wrong. * windows library paths * fix windows build paths * windows path * windows paths * Update fetch commit
1 parent 073ed48 commit 6617896

File tree

12 files changed

+40
-95
lines changed

12 files changed

+40
-95
lines changed

.github/workflows/bn_master_commit.yml

-9
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,6 @@ jobs:
3535
- name: NPM Install (Binary Package)
3636
run: npm install
3737
working-directory: ./Package
38-
- name: Git (Update to BabylonNative ${{ github.event.client_payload.sha }})
39-
run: npx gulp initializeSubmodulesMostRecentBabylonNative --sha ${{ github.event.client_payload.sha }}
40-
working-directory: ./Package
4138
- name: Gulp (Android)
4239
run: npx gulp buildAndroid
4340
working-directory: ./Package
@@ -65,9 +62,6 @@ jobs:
6562
- name: NPM Install (Binary Package)
6663
run: npm install
6764
working-directory: ./Package
68-
- name: Git (Update to BabylonNative ${{ github.event.client_payload.sha }})
69-
run: npx gulp initializeSubmodulesMostRecentBabylonNative --sha ${{ github.event.client_payload.sha }}
70-
working-directory: ./Package
7165
- name: Gulp (iOS)
7266
run: npx gulp buildIOS
7367
working-directory: ./Package
@@ -103,9 +97,6 @@ jobs:
10397
- name: NPM Install (Binary Package)
10498
run: npm install
10599
working-directory: ./Package
106-
- name: Git (Update to BabylonNative ${{ github.event.client_payload.sha }})
107-
run: npx gulp initializeSubmodulesMostRecentBabylonNative --sha ${{ github.event.client_payload.sha }} --windows
108-
working-directory: ./Package
109100
- name: Gulp Setup Project ${{ matrix.platform }} (Windows)
110101
run: npx gulp makeUWPProject${{ matrix.platform }}
111102
working-directory: ./Package

.github/workflows/pr.yml

-3
Original file line numberDiff line numberDiff line change
@@ -127,9 +127,6 @@ jobs:
127127
- name: NPM Install (Binary Package)
128128
run: npm install
129129
working-directory: ./Package
130-
- name: Git (Windows)
131-
run: npx gulp initializeSubmodulesWindowsAgent
132-
working-directory: ./Package
133130
- name: Gulp Setup Project ${{ matrix.platform }} (Windows)
134131
run: npx gulp makeUWPProject${{ matrix.platform }}
135132
working-directory: ./Package

.github/workflows/windows.yml

-3
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,6 @@ jobs:
3737
- name: NPM Install (Binary Package)
3838
run: npm install
3939
working-directory: ./Package
40-
- name: Git (Windows)
41-
run: npx gulp initializeSubmodulesWindowsAgent --reactNative ${{ inputs.react-native-version }} --releaseVersion ${{ inputs.release-version }}
42-
working-directory: ./Package
4340
- name: Gulp (Windows)
4441
run: npx gulp buildUWPPublish --reactNative ${{ inputs.react-native-version }} --releaseVersion ${{ inputs.release-version }}
4542
working-directory: ./Package

.gitmodules

-3
This file was deleted.

Apps/Playground/scripts/tools.js

-3
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@ function postInstall() {
1818
console.log(chalk.black.bgCyan('Installing Babylon React Native npm packages...'));
1919
shelljs.exec('npm install --legacy-peer-deps', {cwd: '../../../Modules/@babylonjs/react-native'});
2020

21-
console.log(chalk.black.bgCyan('Updating submodules...'));
22-
shelljs.exec('git submodule update --init --recursive', {cwd: '../../../'});
23-
2421
if (os.platform() === 'darwin') {
2522
iosCMake();
2623

Modules/@babylonjs/react-native-iosandroid/android/CMakeLists.txt

+1-2
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@ target_include_directories(jsi INTERFACE ${REACTNATIVE_DIR_CMAKE}/ReactCommon/js
3636
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/src/")
3737

3838
set(BABYLON_NATIVE_BUILD_APPS OFF CACHE BOOL "")
39-
set(BABYLON_NATIVE_DIR "${CMAKE_CURRENT_LIST_DIR}/../submodules/BabylonNative")
40-
add_subdirectory(${BABYLON_NATIVE_DIR} ${BABYLON_NATIVE_DIR}/build/Android_${CMAKE_ANDROID_ARCH_ABI}/)
39+
add_subdirectory(${babylonnative_SOURCE_DIR} ${babylonnative_SOURCE_DIR}/build/Android_${CMAKE_ANDROID_ARCH_ABI}/)
4140

4241
set(BABYLON_REACT_NATIVE_SHARED_DIR "${CMAKE_CURRENT_LIST_DIR}/../../react-native/shared")
4342
add_subdirectory(${BABYLON_REACT_NATIVE_SHARED_DIR} ${CMAKE_CURRENT_BINARY_DIR}/shared)

Modules/@babylonjs/react-native-iosandroid/ios/CMakeLists.txt

+1-2
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,7 @@ target_include_directories(reactnative INTERFACE ${REACTNATIVE_DIR}/ReactCommon/
4242
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/")
4343

4444
set(BABYLON_NATIVE_BUILD_APPS OFF CACHE BOOL "")
45-
set(BABYLON_NATIVE_DIR "${CMAKE_CURRENT_LIST_DIR}/../submodules/BabylonNative")
46-
add_subdirectory(${BABYLON_NATIVE_DIR} ${BABYLON_NATIVE_DIR}/build/ios)
45+
add_subdirectory(${babylonnative_SOURCE_DIR} ${babylonnative_SOURCE_DIR}/build/ios)
4746

4847
set(BABYLON_REACT_NATIVE_SHARED_DIR "${CMAKE_CURRENT_LIST_DIR}/../../react-native/shared")
4948
add_subdirectory(${BABYLON_REACT_NATIVE_SHARED_DIR} ${CMAKE_CURRENT_BINARY_DIR}/shared)
This file was deleted.

Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/BabylonReactNative.vcxproj

+18-19
Original file line numberDiff line numberDiff line change
@@ -127,32 +127,31 @@
127127
<!-- Library directories when building in repo -->
128128
<!-- Note: you can add BabylonNative component build folders here as needed -->
129129
<AdditionalLibraryDirectories Condition="'$(BabylonNativeBuildDir)' != ''">
130-
$(BabylonNativeBuildDir)BabylonNative\Core\JsRuntime\$(Configuration);
131-
$(BabylonNativeBuildDir)BabylonNative\Core\Graphics\$(Configuration);
132-
$(BabylonNativeBuildDir)BabylonNative\Dependencies\bgfx.cmake\$(Configuration);
133-
$(BabylonNativeBuildDir)BabylonNative\Dependencies\glslang\glslang\$(Configuration);
134-
$(BabylonNativeBuildDir)BabylonNative\Dependencies\glslang\glslang\OSDependent\Windows\$(Configuration);
135-
$(BabylonNativeBuildDir)BabylonNative\Dependencies\glslang\OGLCompilersDLL\$(Configuration);
136-
$(BabylonNativeBuildDir)BabylonNative\Dependencies\glslang\SPIRV\$(Configuration);
137-
$(BabylonNativeBuildDir)BabylonNative\Dependencies\SPIRV-Cross\$(Configuration);
138-
$(BabylonNativeBuildDir)BabylonNative\Dependencies\xr\$(Configuration);
139-
$(BabylonNativeBuildDir)BabylonNative\Dependencies\xr\Dependencies\OpenXR-SDK\src\loader\$(Configuration);
140-
$(BabylonNativeBuildDir)BabylonNative\Plugins\NativeCamera\$(Configuration);
141-
$(BabylonNativeBuildDir)BabylonNative\Plugins\NativeCapture\$(Configuration);
142-
$(BabylonNativeBuildDir)BabylonNative\Plugins\NativeEngine\$(Configuration);
143-
$(BabylonNativeBuildDir)BabylonNative\Plugins\NativeInput\$(Configuration);
144-
$(BabylonNativeBuildDir)BabylonNative\Plugins\NativeOptimizations\$(Configuration);
145-
$(BabylonNativeBuildDir)BabylonNative\Plugins\NativeTracing\$(Configuration);
146-
$(BabylonNativeBuildDir)BabylonNative\Plugins\NativeXr\$(Configuration);
147-
$(BabylonNativeBuildDir)BabylonNative\Polyfills\Window\$(Configuration);
148-
$(BabylonNativeBuildDir)BabylonNative\Polyfills\Canvas\$(Configuration);
130+
$(BabylonNativeBuildDir)babylonnative\Core\Graphics\$(Configuration);
131+
$(BabylonNativeBuildDir)babylonnative\Dependencies\xr\$(Configuration);
132+
$(BabylonNativeBuildDir)babylonnative\Plugins\NativeCamera\$(Configuration);
133+
$(BabylonNativeBuildDir)babylonnative\Plugins\NativeCapture\$(Configuration);
134+
$(BabylonNativeBuildDir)babylonnative\Plugins\NativeEngine\$(Configuration);
135+
$(BabylonNativeBuildDir)babylonnative\Plugins\NativeInput\$(Configuration);
136+
$(BabylonNativeBuildDir)babylonnative\Plugins\NativeOptimizations\$(Configuration);
137+
$(BabylonNativeBuildDir)babylonnative\Plugins\NativeTracing\$(Configuration);
138+
$(BabylonNativeBuildDir)babylonnative\Plugins\NativeXr\$(Configuration);
139+
$(BabylonNativeBuildDir)babylonnative\Polyfills\Window\$(Configuration);
140+
$(BabylonNativeBuildDir)babylonnative\Polyfills\Canvas\$(Configuration);
149141
$(BabylonNativeBuildDir)jsi\$(Configuration);
150142
$(BabylonNativeBuildDir)$(Configuration);
151143
$(BabylonNativeBuildDir)_deps\arcana-build\$(Configuration);
152144
$(BabylonNativeBuildDir)_deps\jsruntimehost-build\Core\JsRuntime\$(Configuration);
153145
$(BabylonNativeBuildDir)_deps\jsruntimehost-build\Core\Node-API-JSI\$(Configuration);
154146
$(BabylonNativeBuildDir)_deps\jsruntimehost-build\Polyfills\XMLHttpRequest\$(Configuration);
155147
$(BabylonNativeBuildDir)_deps\urllib-build\$(Configuration);
148+
$(BabylonNativeBuildDir)_deps\bgfx-build\$(Configuration);
149+
$(BabylonNativeBuildDir)_deps\glslang-build\glslang\$(Configuration);
150+
$(BabylonNativeBuildDir)_deps\glslang-build\glslang\OSDependent\Windows\$(Configuration);
151+
$(BabylonNativeBuildDir)_deps\glslang-build\OGLCompilersDLL\$(Configuration);
152+
$(BabylonNativeBuildDir)_deps\glslang-build\SPIRV\$(Configuration);
153+
$(BabylonNativeBuildDir)_deps\spirv-cross-build\$(Configuration);
154+
$(BabylonNativeBuildDir)_deps\openxr-sdk-build\src\loader\$(Configuration);
156155
%(AdditionalLibraryDirectories);
157156
</AdditionalLibraryDirectories>
158157
<!-- Library directories when building from npm package -->

Modules/@babylonjs/react-native-windows/windows/CMakeLists.txt

+2-3
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,13 @@ include(${BABYLON_REACT_NATIVE_DIR}/shared/CMakeLists.txt)
1414
# Note: We should avoid installing node_modules in the Module\@babylonjs\react-native folder.
1515
# Installing react-native dependencies for both the Playground app and the @babylonjs\react-native package will generate a bad bundle/runtime errors.
1616
set(NAPI_JAVASCRIPT_ENGINE "JSI" CACHE STRING "")
17-
set(REACTNATIVE_DIR_CMAKE "${CMAKE_CURRENT_LIST_DIR}/../../../../Apps/Playground/Playground/node_modules/react-native")
17+
get_filename_component(REACTNATIVE_DIR_CMAKE "${CMAKE_CURRENT_LIST_DIR}/../../../../Apps/Playground/Playground/node_modules/react-native" ABSOLUTE)
1818
add_subdirectory("${REACTNATIVE_DIR_CMAKE}/ReactCommon/jsi/jsi" ${CMAKE_CURRENT_BINARY_DIR}/jsi)
1919
target_include_directories(jsi INTERFACE ${REACTNATIVE_DIR_CMAKE}/ReactCommon/jsi)
2020

2121
set(BABYLON_NATIVE_BUILD_APPS OFF CACHE BOOL "")
2222
set(BABYLON_NATIVE_USE_SWAPCHAINPANEL ON CACHE BOOL "")
23-
set(BABYLON_NATIVE_DIR "${BABYLON_REACT_NATIVE_IOSANDROID}/submodules/BabylonNative")
24-
add_subdirectory(${BABYLON_NATIVE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/BabylonNative EXCLUDE_FROM_ALL)
23+
add_subdirectory(${babylonnative_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/BabylonNative EXCLUDE_FROM_ALL)
2524
# Disable Unity build for UrlLib because of conflict in header between windows.h and winrt
2625
set_property(TARGET UrlLib PROPERTY UNITY_BUILD false)
2726

Modules/@babylonjs/react-native/shared/CMakeLists.txt

+10
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
include(FetchContent)
2+
3+
FetchContent_Declare(babylonnative
4+
GIT_REPOSITORY https://github.com/BabylonJS/BabylonNative.git
5+
GIT_TAG abd41d50d4ce156af452dcdfacf45210989280a1)
6+
17
set(SHARED_INCLUDES
28
"${CMAKE_CURRENT_LIST_DIR}")
39

@@ -10,3 +16,7 @@ if (${BASEKIT_BUILD})
1016
set(BABYLON_NATIVE_PLUGIN_NATIVEXR OFF CACHE BOOL "")
1117
set(BABYLON_NATIVE_PLUGIN_NATIVECAMERA OFF CACHE BOOL "")
1218
endif()
19+
FetchContent_GetProperties(babylonnative)
20+
if(NOT babylonnative_POPULATED)
21+
FetchContent_Populate(babylonnative)
22+
endif()

Package/gulpfile.js

+8-47
Original file line numberDiff line numberDiff line change
@@ -93,42 +93,6 @@ const buildAndroid = async () => {
9393
exec(`./gradlew babylonjs_react-native:assembleRelease --stacktrace --info ${basekitBuildProp}`, '../Apps/Playground/Playground/android');
9494
};
9595

96-
const initializeSubmodulesWindowsAgent = async () => {
97-
// windows build agents don't support the path lengths required for initializing arcore dependencies,
98-
// so we manually initialize the submodules we need here.
99-
exec('git -c submodule."Dependencies/xr/Dependencies/arcore-android-sdk".update=none submodule update --init --recursive "./../Modules/@babylonjs/react-native-iosandroid/submodules/BabylonNative');
100-
}
101-
102-
const initializeSubmodulesMostRecentBabylonNative = async () => {
103-
let shaFound = false;
104-
const shaOptionIndex = process.argv.indexOf('--sha');
105-
if (shaOptionIndex >= 0) {
106-
const shaIndex = shaOptionIndex + 1;
107-
if (process.argv.length > shaIndex) {
108-
shaFound = true;
109-
const sha = process.argv[shaIndex];
110-
console.log("Using provided commit: " + sha);
111-
exec('git submodule init ./../Modules/@babylonjs/react-native-iosandroid/submodules/BabylonNative');
112-
exec('git fetch origin ' + sha, './../Modules/@babylonjs/react-native-iosandroid/submodules/BabylonNative');
113-
exec('git checkout ' + sha, './../Modules/@babylonjs/react-native-iosandroid/submodules/BabylonNative');
114-
}
115-
}
116-
117-
if (!shaFound) {
118-
exec('git submodule init ./../Modules/@babylonjs/react-native/submodules/BabylonNative');
119-
exec('git fetch origin master', './../Modules/@babylonjs/react-native/submodules/BabylonNative');
120-
exec('git checkout origin/master', './../Modules/@babylonjs/react-native/submodules/BabylonNative');
121-
}
122-
123-
if (process.argv.indexOf('--windows') >= 0) {
124-
exec('git -c submodule."Dependencies/xr/Dependencies/arcore-android-sdk".update=none submodule update --init --recursive *', './../Modules/@babylonjs/react-native/submodules/BabylonNative');
125-
} else {
126-
exec('git submodule update --init --recursive', './../Modules/@babylonjs/react-native/submodules/BabylonNative');
127-
}
128-
129-
exec('git status');
130-
}
131-
13296
const makeUWPProjectPlatform = async (name, arch) => {
13397
shelljs.mkdir('-p', `./../Modules/@babylonjs/react-native/Build/uwp_${name}`);
13498
exec(`cmake -G "Visual Studio 16 2019" -D CMAKE_SYSTEM_NAME=WindowsStore -D CMAKE_SYSTEM_VERSION=10.0 -DCMAKE_UNITY_BUILD=true ${cmakeBasekitBuildDefinition} -A ${arch} ./../../../react-native-windows/windows`, `./../Modules/@babylonjs/react-native/Build/uwp_${name}`);
@@ -268,7 +232,7 @@ const copyIOSFiles = async () => {
268232
});
269233

270234
await new Promise(resolve => {
271-
gulp.src('../Apps/Playground/Playground/node_modules/@babylonjs/react-native-iosandroid/submodules/BabylonNative/Dependencies/xr/Source/ARKit/Include/*')
235+
gulp.src('../Package/iOS/Build/_deps/babylonnative-src/Dependencies/xr/Source/ARKit/Include/*')
272236
.pipe(gulp.dest(`${assemblediOSAndroidDir}/ios/include`))
273237
.on('end', resolve);
274238
});
@@ -290,7 +254,7 @@ const copyAndroidFiles = async () => {
290254
});
291255

292256
await new Promise(resolve => {
293-
gulp.src('../Apps/Playground/Playground/node_modules/@babylonjs/react-native-iosandroid/submodules/BabylonNative/Dependencies/xr/Source/ARCore/Include/*')
257+
gulp.src('../Package/iOS/Build/_deps/babylonnative-src/Dependencies/xr/Source/ARCore/Include/*')
294258
.pipe(gulp.dest(`${assemblediOSAndroidDir}/android/include`))
295259
.on('end', resolve);
296260
});
@@ -399,23 +363,23 @@ const copyVCXProjUWPFiles = () => {
399363
}
400364

401365
const copyOpenXRInfoFiles = () => {
402-
return gulp.src('../Modules/@babylonjs/react-native-iosandroid/submodules/BabylonNative/Dependencies/xr/Dependencies/OpenXR-MixedReality/LICENSE')
403-
.pipe(gulp.src('../Modules/@babylonjs/react-native-iosandroid/submodules/BabylonNative/Dependencies/xr/Dependencies/OpenXR-MixedReality/README.md'))
366+
return gulp.src('../Modules/@babylonjs/react-native/Build/uwp_x64/_deps/openxr-mixedreality-src/LICENSE')
367+
.pipe(gulp.src('../Modules/@babylonjs/react-native/Build/uwp_x64/_deps/openxr-mixedreality-src/README.md'))
404368
.pipe(gulp.dest(`${assembledWindowsDir}/windows/OpenXR-MixedReality`));
405369
}
406370

407371
const copyOpenXRPreviewHeaders = () => {
408-
return gulp.src('../Modules/@babylonjs/react-native-iosandroid/submodules/BabylonNative/Dependencies/xr/Dependencies/OpenXR-MixedReality/openxr_preview/include/openxr/*')
372+
return gulp.src('../Modules/@babylonjs/react-native/Build/uwp_x64/_deps/openxr-mixedreality-src/openxr_preview/include/openxr/*')
409373
.pipe(gulp.dest(`${assembledWindowsDir}/windows/OpenXR-MixedReality/include/openxr`));
410374
}
411375

412376
const copyOpenXRUtilityHeaders = () => {
413-
return gulp.src('../Modules/@babylonjs/react-native-iosandroid/submodules/BabylonNative/Dependencies/xr/Dependencies/OpenXR-MixedReality/shared/XrUtility/*')
377+
return gulp.src('../Modules/@babylonjs/react-native/Build/uwp_x64/_deps/openxr-mixedreality-src/shared/XrUtility/*')
414378
.pipe(gulp.dest(`${assembledWindowsDir}/windows/OpenXR-MixedReality/include/XrUtility`));
415379
}
416380

417381
const copyOpenXRHelperHeaders = () => {
418-
return gulp.src('../Modules/@babylonjs/react-native-iosandroid/submodules/BabylonNative/Dependencies/xr/Source/OpenXR/Include/*')
382+
return gulp.src('../Modules/@babylonjs/react-native/Build/uwp_x64/_deps/babylonnative-src/Dependencies/xr/Source/OpenXR/Include/*')
419383
.pipe(gulp.src('../Modules/@babylonjs/react-native-windows/windows/include/*'))
420384
.pipe(gulp.dest(`${assembledWindowsDir}/windows/include`));
421385
}
@@ -707,12 +671,11 @@ exports.buildAndroid = buildAndroid;
707671
exports.packAndroid = packAndroid;
708672

709673
const copyPackageFilesUWP = gulp.series(copyUWPFiles);
710-
const buildUWPPublish = gulp.series(buildUWP, copyPackageFilesUWP, switchToBaseKit, patchPackageVersion, buildUWP, copyPackageFilesUWP);
674+
const buildUWPPublish = gulp.series(patchPackageVersion, buildUWP, copyPackageFilesUWP, switchToBaseKit, patchPackageVersion, buildUWP, copyPackageFilesUWP);
711675
const packUWP = gulp.series(clean, buildUWP, copyPackageFilesUWP, createPackage, createPackageUWP);
712676
const packUWPNoBuild = gulp.series(clean, copyPackageFilesUWP, createPackage, createPackageUWP);
713677

714678
exports.buildTS = buildTS;
715-
exports.initializeSubmodulesWindowsAgent = gulp.series(patchPackageVersion, initializeSubmodulesWindowsAgent);
716679
exports.makeUWPProjectx86 = makeUWPProjectx86;
717680
exports.makeUWPProjectx64 = makeUWPProjectx64;
718681
exports.makeUWPProjectARM = makeUWPProjectARM;
@@ -747,6 +710,4 @@ exports.copyUWPFiles = copyUWPFiles;
747710
exports.packUWP = packUWP;
748711
exports.packUWPNoBuild = packUWPNoBuild;
749712

750-
exports.initializeSubmodulesMostRecentBabylonNative = initializeSubmodulesMostRecentBabylonNative;
751-
752713
exports.default = build;

0 commit comments

Comments
 (0)