Verified Commit bfcd0373 authored by Richard Pospesel's avatar Richard Pospesel Committed by ma1
Browse files

TB 41089: Add tor-browser build scripts + Makefile to tor-browser

parent aeaea603
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -351,3 +351,6 @@ mobile/android/annotations/bin/

# Ignore generated log files under media/libvpx
media/libvpx/config/**/config.log

# Ignore binary base of Tor Browser
.binaries
+1 −0
Original line number Diff line number Diff line
android-env.sh
+59 −0
Original line number Diff line number Diff line
.DEFAULT_GOAL := all

# one of armv7 aarch64 x86 x86_64
ARCH := aarch64
ANDROID_ARCH := $(ARCH)
ifeq ($(ANDROID_ARCH),aarch64)
  ANDROID_ARCH := arm64-v8a
endif
ifeq ($(ANDROID_ARCH),armv7)
  ANDROID_ARCH := armeabi-v7a
endif

OS="${shell uname}"

# https://stackoverflow.com/questions/18136918/how-to-get-current-relative-directory-of-your-makefile
mkfile_path := "$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))"

DEV_ROOT = "$(mkfile_path)/../.."

clobber: env
	./clobber.sh $(DEV_ROOT) $(ARCH)

config: env
	./config.sh $(DEV_ROOT) $(ARCH)

geckoview: env
	./build-geckoview.sh $(DEV_ROOT) $(ARCH)

# These targets do not depend on GeckoView so that you can build only Fenix if
# you are not changing GV code.
fenix-release: env
	./build-fenix.sh $(DEV_ROOT) $(ARCH) Release
fenix-beta: env
	./build-fenix.sh $(DEV_ROOT) $(ARCH) Beta
fenix-nightly: env
	./build-fenix.sh $(DEV_ROOT) $(ARCH) Nightly
fenix-debug: env
	./build-fenix.sh $(DEV_ROOT) $(ARCH) Debug

env:
	test -e android-env.sh || { echo "copy android-env-...-template.sh to android-env.sh and edit appropriatly"; exit 1; }

install-release:
	adb install "$(DEV_ROOT)/mobile/android/fenix/app/build/outputs/apk/fenix/release/app-fenix-$(ANDROID_ARCH)-release-signed.apk"
install-beta:
	adb install "$(DEV_ROOT)/mobile/android/fenix/app/build/outputs/apk/fenix/beta/app-fenix-$(ANDROID_ARCH)-beta-signed.apk"
install-nightly:
	adb install "$(DEV_ROOT)/mobile/android/fenix/app/build/outputs/apk/fenix/nightly/app-fenix-$(ANDROID_ARCH)-nightly-signed.apk"

all: env geckoview fenix-nightly install-nightly
all-release: env geckoview fenix-release install-release
all-beta: env geckoview fenix-beta install-beta

jslint:
	./jslint.sh $(DEV_ROOT) $(JS)

clean:
	rm -rf $(BUILD_OUTPUT)
+6 −0
Original line number Diff line number Diff line
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export ANDROID_HOME=$HOME/.mozbuild/android-sdk-linux/ # or $HOME/Android/Sdk/ # Or .../android-toolchain/android-sdk-linux if you extract android-toolchain from tor-browser-build
export ANDROID_NDK_HOME=$ANDROID_HOME/ndk/r26c/ # for 128esr
export GRADLE_HOME=/FULL/PATH/TO/tor-browser-build/out/gradle/gradle-8.8 # Or the version that we currently use
export LOCAL_DEV_BUILD=1
export PATH=/FULL/PATH/TO/tor-browser-build/out/clang/clang-16.x.y-arm/bin/:$PATH # prepend our newly built and assembled clang to the path so it gets used to build geckoview
+8 −0
Original line number Diff line number Diff line
export JAVA_HOME=/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home/ # for arm64. Or JAVA_HOME=/usr/local/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home/ for x86_64.
export ANDROID_HOME=$HOME/Library/Android/sdk # or $HOME/.mozbuild/android-sdk-macosx/
export ANDROID_NDK_HOME=$ANDROID_HOME/ndk/26.2.11394342 # will need to download the relevant NDK via android studio (e.g. 26.2.11394342)
GRADLE_DIR=/opt/homebrew/Cellar/gradle # for arm64, or /usr/local/Cellar/gradle for x86_64. Download via homebrew.
GRADLE_VERSION=`ls -1 "$GRADLE_DIR" | sort -hr | head -n 1` # Finds the latest gradle version in the specified GRADLE_DIR
export GRADLE_HOME=$GRADLE_DIR/$GRADLE_VERSION
export LOCAL_DEV_BUILD=1
export PATH=$ANDROID_HOME/ndk/26.2.11394342/toolchains/llvm/prebuilt/darwin-x86_64/bin/:$PATH # prepend android studios latest ndk to the path so it's clang gets used to build geckoview. Note that it doesn't need to be the same version as above
Loading