mirror of
https://github.com/zen-browser/surfer.git
synced 2025-07-10 02:05:31 +02:00
✨ Multiple different build modes
This commit is contained in:
parent
7ce1c368f6
commit
a71f9797b5
4 changed files with 64 additions and 9 deletions
12
src/cmds.ts
12
src/cmds.ts
|
@ -29,6 +29,12 @@ export const commands: Cmd[] = [
|
||||||
],
|
],
|
||||||
requestController: async () => (await import('./commands/build')).build,
|
requestController: async () => (await import('./commands/build')).build,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
cmd: 'config',
|
||||||
|
aliases: ['set', 'get'],
|
||||||
|
description: 'Get and set the dynamic config from this project',
|
||||||
|
requestController: async () => (await import('./commands/set')).set,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
cmd: 'discard <file>',
|
cmd: 'discard <file>',
|
||||||
description: 'Discard a files changes.',
|
description: 'Discard a files changes.',
|
||||||
|
@ -102,12 +108,6 @@ export const commands: Cmd[] = [
|
||||||
description: 'Run the browser.',
|
description: 'Run the browser.',
|
||||||
requestController: async () => (await import('./commands/run')).run,
|
requestController: async () => (await import('./commands/run')).run,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
cmd: 'config',
|
|
||||||
aliases: ['set', 'get'],
|
|
||||||
description: 'Get and set the dynamic config from this project',
|
|
||||||
requestController: async () => (await import('./commands/set')).set,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
cmd: 'setup-project',
|
cmd: 'setup-project',
|
||||||
description: 'Sets up a gluon project for the first time',
|
description: 'Sets up a gluon project for the first time',
|
||||||
|
|
|
@ -78,7 +78,7 @@ const applyConfig = async (os: string) => {
|
||||||
'\n\n' +
|
'\n\n' +
|
||||||
customConfig +
|
customConfig +
|
||||||
'\n' +
|
'\n' +
|
||||||
internalMozconfg(brandingKey)
|
internalMozconfg(brandingKey, dynamicConfig.get('buildMode'))
|
||||||
|
|
||||||
writeFileSync(resolve(ENGINE_DIR, 'mozconfig'), mergedConfig)
|
writeFileSync(resolve(ENGINE_DIR, 'mozconfig'), mergedConfig)
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,54 @@
|
||||||
export const internalMozconfg = (brand: string) => `
|
const otherBuildModes = `# You can change to other build modes by running:
|
||||||
|
# $ gluon set buildMode [dev|debug|release]`
|
||||||
|
|
||||||
|
const platformOptimize =
|
||||||
|
process.platform == 'darwin'
|
||||||
|
? 'ac_add_options --enable-optimize="-O3 -march=nehalem -mtune=haswell -w"'
|
||||||
|
: process.platform == 'linux'
|
||||||
|
? 'ac_add_options --enable-optimize="-O3 -march=x86-64-v2 -mtune=haswell -w"'
|
||||||
|
: process.platform == 'win32'
|
||||||
|
? 'ac_add_options --enable-optimize="-O2 -Qvec -w -clang:-ftree-vectorize -clang:-msse3 -clang:-mssse3 -clang:-msse4.1 -clang:-mtune=haswell"'
|
||||||
|
: `# Unknown platform ${process.platform}`
|
||||||
|
|
||||||
|
export const internalMozconfg = (
|
||||||
|
brand: string,
|
||||||
|
buildMode: 'dev' | 'debug' | 'release' | string
|
||||||
|
) => {
|
||||||
|
let buildOptions = `# Unknown build mode ${buildMode}`
|
||||||
|
|
||||||
|
// Get the specific build options for the current build mode
|
||||||
|
switch (buildMode) {
|
||||||
|
case 'dev':
|
||||||
|
buildOptions = `# Development build settings
|
||||||
|
${otherBuildModes}
|
||||||
|
ac_add_options --disable-debug
|
||||||
|
ac_add_options --disable-optimize`
|
||||||
|
break
|
||||||
|
case 'debug':
|
||||||
|
buildOptions = `# Debug build settings
|
||||||
|
${otherBuildModes}
|
||||||
|
ac_add_options --enable-debug
|
||||||
|
ac_add_options --disable-optimize`
|
||||||
|
break
|
||||||
|
|
||||||
|
case 'release':
|
||||||
|
buildOptions = `# Release build settings
|
||||||
|
ac_add_options --disable-debug
|
||||||
|
ac_add_options --enable-optimize
|
||||||
|
${platformOptimize} # Taken from waterfox`
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
return `
|
||||||
# =====================
|
# =====================
|
||||||
# Internal gluon config
|
# Internal gluon config
|
||||||
# =====================
|
# =====================
|
||||||
|
|
||||||
|
${buildOptions}
|
||||||
|
ac_add_options --disable-geckodriver
|
||||||
|
ac_add_options --disable-profiling
|
||||||
|
ac_add_options --disable-tests
|
||||||
|
|
||||||
# Custom branding
|
# Custom branding
|
||||||
ac_add_options --with-branding=browser/branding/${brand}
|
ac_add_options --with-branding=browser/branding/${brand}
|
||||||
|
|
||||||
|
@ -10,3 +56,4 @@ ac_add_options --with-branding=browser/branding/${brand}
|
||||||
ac_add_options --disable-verify-mar
|
ac_add_options --disable-verify-mar
|
||||||
ac_add_options --enable-update-channel=${brand}
|
ac_add_options --enable-update-channel=${brand}
|
||||||
`
|
`
|
||||||
|
}
|
||||||
|
|
|
@ -1,13 +1,16 @@
|
||||||
// Defines config that should be set dynamically on the users system. This allows
|
// Defines config that should be set dynamically on the users system. This allows
|
||||||
// for interfacing between these values
|
// for interfacing between these values
|
||||||
|
|
||||||
|
import { log } from '../log'
|
||||||
import { readItem, writeItem } from './store'
|
import { readItem, writeItem } from './store'
|
||||||
|
|
||||||
export type ValidDynamicEntries = 'brand'
|
export type ValidDynamicEntries = 'brand'
|
||||||
export const defaultValues: {
|
export const defaultValues: {
|
||||||
brand: string
|
brand: string
|
||||||
|
buildMode: 'dev' | 'debug' | 'release'
|
||||||
} = {
|
} = {
|
||||||
brand: 'unofficial',
|
brand: 'unofficial',
|
||||||
|
buildMode: 'dev',
|
||||||
}
|
}
|
||||||
|
|
||||||
export type DefaultValuesType = typeof defaultValues
|
export type DefaultValuesType = typeof defaultValues
|
||||||
|
@ -23,7 +26,12 @@ type DynamicSetter<K extends keyof DefaultValuesType> = (
|
||||||
|
|
||||||
export const get: DynamicGetter<keyof DefaultValuesType> = (key) =>
|
export const get: DynamicGetter<keyof DefaultValuesType> = (key) =>
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
readItem(`dynamicConfig.${key}`).unwrapOr(defaultValues[key]) as any
|
readItem(`dynamicConfig.${key}`).unwrapOrElse(() => {
|
||||||
|
log.info(
|
||||||
|
`Dynamic config '${key} not set, defaulting to '${defaultValues[key]}'`
|
||||||
|
)
|
||||||
|
return defaultValues[key]
|
||||||
|
}) as any
|
||||||
|
|
||||||
export const set: DynamicSetter<keyof DefaultValuesType> = (key, value) =>
|
export const set: DynamicSetter<keyof DefaultValuesType> = (key, value) =>
|
||||||
writeItem(key, value)
|
writeItem(key, value)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue