obs-StreamFX/ci/builder.js

110 lines
3.1 KiB
JavaScript

"use strict";
const process = require('process');
const runner = require('./runner.js');
// Steps
let configure_runners = [];
let build_runners = [];
let package_runners = [];
{
let cmake_configure_extra = [
`-DCMAKE_SYSTEM_VERSION=${process.env.CMAKE_SYSTEM_VERSION}`,
'-DCMAKE_INSTALL_PREFIX="build/distrib/"',
'-DCMAKE_PACKAGE_PREFIX="build/"',
`-DCMAKE_PACKAGE_NAME="${process.env.PACKAGE_PREFIX}"`,
];
let cmake_build_extra = [
];
// Configuration depends on platform
if (process.platform == "win32" || process.platform == "win64") {
configure_runners.push(new runner('32-bit', 'cmake', [
'-H.',
'-Bbuild/32',
`-G"Visual Studio 15 2017"`,
].concat(cmake_configure_extra)));
configure_runners.push(new runner('64-bit', 'cmake', [
'-H.',
'-Bbuild/64',
`-G"Visual Studio 15 2017 Win64"`,
'-T"host=x64"',
].concat(cmake_configure_extra)));
// Extra build steps for AppVeyor on Windows for Logging purposes.
if(process.env.APPVEYOR) {
cmake_build_extra.concat(['--', '/logger:"C:\\Program Files\\AppVeyor\\BuildAgent\\Appveyor.MSBuildLogger.dll"']);
}
} else if (process.platform == "linux") {
configure_runners.push(new runner('32-bit', 'cmake', [
'-H.',
'-Bbuild32',
`-G"Unix Makefiles"`,
`-DCOPIED_DEPENDENCIES=false`,
].concat(cmake_configure_extra),
{ ...process.env, ...{
CFLAGS: `${process.env.COMPILER_FLAGS_32}`,
CXXFLAGS: `${process.env.COMPILER_FLAGS_32}`,
}}));
configure_runners.push(new runner('64-bit', 'cmake', [
'-H.',
'-Bbuild64',
`-G"Unix Makefiles"`,
`-DCOPIED_DEPENDENCIES=false`,
].concat(cmake_configure_extra),
{ ...process.env, ...{
CFLAGS: `${process.env.COMPILER_FLAGS_64}`,
CXXFLAGS: `${process.env.COMPILER_FLAGS_64}`,
}}));
}
build_runners.push(new runner('32-bit', 'cmake', [
'--build', 'build/32',
'--config', 'RelWithDebInfo',
'--target', 'INSTALL'
].concat(cmake_build_extra)));
build_runners.push(new runner('64-bit', 'cmake', [
'--build', 'build/64',
'--config', 'RelWithDebInfo',
'--target', 'INSTALL'
].concat(cmake_build_extra)));
package_runners.push(new runner('32-bit', 'cmake', [
'--build', 'build/32',
'--target', 'PACKAGE_7Z',
'--config', 'RelWithDebInfo'
].concat(cmake_build_extra)));
package_runners.push(new runner('64-bit', 'cmake', [
'--build', 'build/64',
'--target', 'PACKAGE_ZIP',
'--config', 'RelWithDebInfo'
].concat(cmake_build_extra)));
}
// Run Configure steps.
let configure_promises = [];
for (let config of configure_runners) {
configure_promises.push(config.run());
}
Promise.all(configure_promises).then(function(result) {
let build_promises = [];
for (let build of build_runners) {
build_promises.push(build.run());
}
Promise.all(build_promises).then(function(result) {
let package_promises = [];
for (let pack of package_runners) {
package_promises.push(pack.run());
}
Promise.all(package_promises).then(function(result) {
process.exit(result);
}).catch(function(result) {
process.exit(result);
});
}).catch(function(result) {
process.exit(result);
});
}).catch(function(result) {
process.exit(result);
});