Skip to content

Commit

Permalink
✨ Support i686 architecture
Browse files Browse the repository at this point in the history
  • Loading branch information
Trevor Thalacker committed Apr 3, 2021
1 parent 70a1d6d commit 454390e
Show file tree
Hide file tree
Showing 6 changed files with 94 additions and 6 deletions.
45 changes: 39 additions & 6 deletions build/commands/build.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { readFileSync, writeFileSync } from "fs";
import { resolve } from "path";
import { bin_name, log } from "..";
import {
BUILD_TARGETS,
ARCHITECTURE, BUILD_TARGETS,
CONFIGS_DIR,
SRC_DIR
} from "../constants";
Expand All @@ -15,16 +15,19 @@ const platform: any = {
linux: "linux"
};

const applyConfig = (os: string) => {
const applyConfig = (os: string, arch: string) => {
log.info("Applying mozconfig...");

const commonConfig = readFileSync(
resolve(CONFIGS_DIR, "common", "mozconfig"),
"utf-8"
);

const osConfig = readFileSync(
resolve(CONFIGS_DIR, os, "mozconfig"),
resolve(CONFIGS_DIR, os, arch === 'i686' ? "mozconfig-i686" : 'mozconfig'),
"utf-8"
);

const mergedConfig = `# This file is automatically generated. You should only modify this if you know what you are doing!\n\n${commonConfig}\n\n${osConfig}`;

writeFileSync(
Expand Down Expand Up @@ -137,20 +140,37 @@ const success = (date: number) => {
);
};

export const build = async (os: string) => {
interface Options {
arch: string
}

export const build = async (os: string, options: Options) => {
let d = Date.now();

if (os) {
// Docker build

let arch = '64bit'

if (!BUILD_TARGETS.includes(os))
return log.error(
`We do not support "${os}" builds right now.\nWe only currently support ${JSON.stringify(
BUILD_TARGETS
)}.`
);

applyConfig(os);
if (options.arch) {
if (!ARCHITECTURE.includes(options.arch))
return log.error(
`We do not support "${options.arch}" build right now.\nWe only currently support ${JSON.stringify(
ARCHITECTURE
)}.`
)
else
arch = options.arch
}

applyConfig(os, options.arch);

setTimeout(async () => {
await dockerBuild(os).then((_) => success(d));
Expand All @@ -162,7 +182,20 @@ export const build = async (os: string) => {
platform[process.platform as any];

if (BUILD_TARGETS.includes(prettyHost)) {
applyConfig(prettyHost);
let arch = '64bit'

if (options.arch) {
if (!ARCHITECTURE.includes(options.arch))
return log.error(
`We do not support "${options.arch}" build right now.\nWe only currently support ${JSON.stringify(
ARCHITECTURE
)}.`
)
else
arch = options.arch
}

applyConfig(prettyHost, options.arch);

setTimeout(async () => {
await genericBuild(prettyHost).then((_) =>
Expand Down
5 changes: 5 additions & 0 deletions build/constants/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@ export const BUILD_TARGETS = [
"macos"
];

export const ARCHITECTURE = [
'i686',
'x86_64'
]

export const PATCH_ARGS = [
"--ignore-space-change",
"--ignore-whitespace",
Expand Down
1 change: 1 addition & 0 deletions build/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ program

program
.command("build [os]")
.option('--a, --arch <architecture>', 'Specify architecture for build')
.description(
"Build Dot Browser. Specify the OS param for cross-platform builds."
)
Expand Down
16 changes: 16 additions & 0 deletions configs/linux/mozconfig-i686
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Optimise builds
ac_add_options --enable-application=browser
ac_add_options --enable-hardening
ac_add_options --enable-rust-simd
ac_add_options --enable-release
ac_add_options --enable-optimize
ac_add_options --with-ccache=sccache
ac_add_options --disable-debug
ac_add_options --enable-updater

# Disable telemetry and tracking
mk_add_options MOZ_TELEMETRY_REPORTING=
mk_add_options MOZ_DATA_REPORTING=

# Support 32-bit builds
ac_add_options --target=i686
17 changes: 17 additions & 0 deletions configs/macos/mozconfig-i686
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Optimise builds
ac_add_options --enable-application=browser
ac_add_options --enable-hardening
ac_add_options --enable-rust-simd
ac_add_options --enable-release
ac_add_options --enable-optimize
ac_add_options --with-ccache=sccache
ac_add_options --disable-debug
ac_add_options --enable-updater
mk_add_options MOZ_MAKE_FLAGS="-j4"

# Disable telemetry and tracking
mk_add_options MOZ_TELEMETRY_REPORTING=
mk_add_options MOZ_DATA_REPORTING=

# Support 32-bit builds
ac_add_options --target=i686
16 changes: 16 additions & 0 deletions configs/windows/mozconfig-i686
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Optimise builds
ac_add_options --enable-application=browser
ac_add_options --enable-hardening
ac_add_options --enable-rust-simd
ac_add_options --enable-release
ac_add_options --enable-optimize
ac_add_options --with-ccache=sccache
ac_add_options --disable-debug
ac_add_options --enable-updater

# Disable telemetry and tracking
mk_add_options MOZ_TELEMETRY_REPORTING=
mk_add_options MOZ_DATA_REPORTING=

# Support 32-bit builds
ac_add_options --target=i686

0 comments on commit 454390e

Please sign in to comment.