Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Matthew Finkel
tor-browser-build
Commits
023ce30e
Verified
Commit
023ce30e
authored
Aug 26, 2019
by
Georg Koppen
Committed by
boklm
Aug 28, 2019
Browse files
Bug 28238: Adapt firefox project for Windows builds
parent
84d95d6d
Changes
4
Hide whitespace changes
Inline
Side-by-side
projects/firefox/build
View file @
023ce30e
#!/bin/bash
[
%
c
(
"var/setarch"
)
-%
]
[
%
c
(
"var/set_default_env"
)
-%
]
[
%
IF
c
(
"var/windows"
)
-%
]
[
%
pc
(
'gcc'
,
'var/setup'
,
{
compiler_tarfile
=>
c
(
'input_files_by_name/gcc'
)
})
%
]
# We need a link to our GCC, otherwise the system cc gets used which points to
# /usr/bin/gcc.
ln
-
s
gcc
/
var
/
tmp
/
dist
/
gcc
/
bin
/
cc
[
%
END
-%
]
[
%
pc
(
c
(
'var/compiler'
),
'var/setup'
,
{
compiler_tarfile
=>
c
(
'input_files_by_name/'
_
c
(
'var/compiler'
))
})
%
]
distdir
=/
var
/
tmp
/
dist
/
[
%
project
%
]
mkdir
-
p
/
var
/
tmp
/
build
mkdir
-
p
[
%
dest_dir
_
'/'
_
c
(
'filename'
)
%
]
[
%
IF
c
(
"var/windows"
)
-%
]
mingwdir
=/
var
/
tmp
/
dist
/
mingw
-
w64
mkdir
-
p
$
mingwdir
/
helpers
cat
>
$
mingwdir
/
helpers
/
[
%
c
(
"arch"
)
%
]
-
w64
-
mingw32
-
g
++
<<
'EOF'
#!/bin/sh
/
var
/
tmp
/
dist
/
mingw
-
w64
/
bin
/
[
%
c
(
"arch"
)
%
]
-
w64
-
mingw32
-
g
++
[
%
c
(
"var/LDFLAGS"
)
%
]
[
%
c
(
"var/CFLAGS"
)
%
]
"$@"
EOF
cat
>
$
mingwdir
/
helpers
/
[
%
c
(
"arch"
)
%
]
-
w64
-
mingw32
-
gcc
<<
'EOF'
#!/bin/sh
/
var
/
tmp
/
dist
/
mingw
-
w64
/
bin
/
[
%
c
(
"arch"
)
%
]
-
w64
-
mingw32
-
gcc
[
%
c
(
"var/LDFLAGS"
)
%
]
[
%
c
(
"var/CFLAGS"
)
%
]
"$@"
EOF
cat
>
$
mingwdir
/
helpers
/
[
%
c
(
"arch"
)
%
]
-
w64
-
mingw32
-
ld
<<
'EOF'
#!/bin/sh
/
var
/
tmp
/
dist
/
mingw
-
w64
/
bin
/
[
%
c
(
"arch"
)
%
]
-
w64
-
mingw32
-
ld
[
%
c
(
"var/LDFLAGS"
)
%
]
"$@"
EOF
chmod
+
x
$
mingwdir
/
helpers
/*
export
PATH
=
"$mingwdir/helpers:$PATH"
[
%
END
-%
]
[
%
IF
c
(
"var/windows"
)
%
]
# Unpack fxc2.
mkdir
-
p
/
var
/
tmp
/
dist
# Setting up fxc2
tar
-
C
/
var
/
tmp
/
dist
-
xf
[
%
c
(
'input_files_by_name/fxc2'
)
%
]
fxcdir
=/
var
/
tmp
/
dist
/
fxc2
/
bin
export
PATH
=
"$fxcdir:$PATH"
export
PATH
=
"/var/tmp/dist/fxc2/bin:$PATH"
# fxc2 requires Wine.
[
%
IF
c
(
"var/windows-x86_64"
)
%
]
export
WINEARCH
=
win64
...
...
@@ -51,7 +20,6 @@ EOF
wine
wineboot
-
i
[
%
END
-%
]
mkdir
-
p
/
var
/
tmp
/
dist
tar
-
C
/
var
/
tmp
/
dist
-
xf
[
%
c
(
'input_files_by_name/rust'
)
%
]
tar
-
C
/
var
/
tmp
/
dist
-
xf
[
%
c
(
'input_files_by_name/cbindgen'
)
%
]
tar
-
C
/
var
/
tmp
/
dist
-
xf
[
%
c
(
'input_files_by_name/nasm'
)
%
]
...
...
@@ -113,30 +81,11 @@ then
fi
[
%
IF
c
(
"var/windows"
)
%
]
# FIXME
# Ideally, using LDFLAGS (and e.g. DLLFLAGS for NSS) would be enough to get
# all Firefox libraries linked against msvcr100. Alas, this does not hold for
# NSPR. Without patching it we get a "missing entry points for _strcmpi in
# msvcr100.dll". Now, this should be fixed in rev>=6179 as the def file there
# contains a proper patch according to the mingw-w64 developers.
# However, even with this patch the _strcmpi issue is still popping up,
# probably due to a bug in our current linking setup. The small patch below
# is therefore just a workaround which should get fixed but is at least
# justified as the signature of _strcmpi and _stricmp is the same, see:
# http://msdn.microsoft.com/en-us/library/k59z8dwe.aspx.
sed
's/strcmpi/stricmp/'
-
i
nsprpub
/
pr
/
src
/
linking
/
prlink
.
c
export
HOST_LDFLAGS
=
" "
export
LDFLAGS
=
"-specs=/var/tmp/dist/mingw-w64/msvcr100.spec"
# Our flags don't get passed to NSS. We need to do that manually using an
# obscure one.
export
DLLFLAGS
=
"-specs=/var/tmp/dist/mingw-w64/msvcr100.spec"
# Make sure widl is not inserting random timestamps, see #21837.
export
WIDL_TIME_OVERRIDE
=
"0"
[
%
END
%
]
[
%
IF
c
(
"var/windows"
)
%
]
patch
-
p1
<
$
rootdir
/
nsis
-
uninstall
.
patch
# Make sure we link without inserting timestamps in general.
export
LDFLAGS
=
"-Wl,--no-insert-timestamp"
[
%
END
-%
]
# Backporting a sec-high bugfix to ESR 60, but making sure it is only applied to
...
...
@@ -203,14 +152,9 @@ rm -f js/src/configure
chmod
755
$
distdir
/
Browser
/
firefox
[
%
END
%
]
[
%
IF
c
(
"var/windows-x86_64"
)
-%
]
mv
$
rootdir
/
msvcr100
-
x86_64
.
dll
$
rootdir
/
msvcr100
.
dll
[
%
END
-%
]
[
%
IF
c
(
"var/windows"
)
%
]
cp
-
a
obj
-*/
dist
/
firefox
/*
$
distdir
/
Browser
/
cp
-
a
$
rootdir
/
msvcr100
.
dll
$
distdir
/
Browser
cp
-
a
$
gcclibs
/
libssp
-
0.
dll
$
distdir
/
Browser
cp
-
a
$
fxcdir
/
d3dcompiler_47
.
dll
$
distdir
/
Browser
cp
-
a
/
var
/
tmp
/
dist
/
fxc2
/
bin
/
d3dcompiler_47
.
dll
$
distdir
/
Browser
[
%
END
%
]
# Make MAR-based update tools available for use during the bundle phase.
...
...
@@ -243,16 +187,15 @@ cp -p obj-*/dist/host/bin/mbsdiff $MARTOOLS/
done
[
%
END
%
]
[
%
IF
c
(
"var/windows"
)
%
]
cp
-
p
obj
-*/
modules
/
libmar
/
tool
/
signmar
.
exe
$
MARTOOLS
/
cp
-
p
obj
-*/
security
/
nss
/
cmd
/
certutil
/
certutil_certutil
/
certutil
.
exe
$
MARTOOLS
/
cp
-
p
obj
-*/
security
/
nss
/
cmd
/
modutil
/
modutil_modutil
/
modutil
.
exe
$
MARTOOLS
/
cp
-
p
obj
-*/
security
/
nss
/
cmd
/
pk12util
/
pk12util_pk12util
/
pk12util
.
exe
$
MARTOOLS
/
cp
-
p
obj
-*/
security
/
nss
/
cmd
/
shlibsign
/
shlibsign_shlibsig
n
/
shlibsign
.
exe
$
MARTOOLS
/
cp
-
p
obj
-*/
dist
/
bin
/
signmar
.
exe
$
MARTOOLS
/
cp
-
p
obj
-*/
dist
/
bin
/
certutil
.
exe
$
MARTOOLS
/
cp
-
p
obj
-*/
dist
/
bin
/
modutil
.
exe
$
MARTOOLS
/
cp
-
p
obj
-*/
dist
/
bin
/
pk12util
.
exe
$
MARTOOLS
/
cp
-
p
obj
-*/
dist
/
bi
n
/
shlibsign
.
exe
$
MARTOOLS
/
NSS_LIBS
=
"freebl3.dll mozglue.dll nss3.dll nssckbi.dll nssdbm3.dll softokn3.dll"
for
LIB
in
$
NSS_LIBS
;
do
cp
-
p
obj
-*/
dist
/
bin
/
$
LIB
$
MARTOOLS
/
done
cp
-
a
$
rootdir
/
msvcr100
.
dll
$
MARTOOLS
/
[
%
END
%
]
cd
$
distdir
...
...
projects/firefox/config
View file @
023ce30e
...
...
@@ -110,6 +110,13 @@ targets:
var
:
arch_deps
:
-
wine
pre_pkginst
:
|
echo 'deb http://ftp.debian.org/debian stretch-backports main' >> /etc/apt/sources.list
post_pkginst
:
|
# We need to have at least 3.0.3 which Mozilla is using in the
# mingw-w64/clang build process
apt-get -y -t stretch-backports install wine
compiler
:
mingw-w64-clang
windows-i686
:
var
:
...
...
@@ -131,15 +138,6 @@ input_files:
enable
:
'
[%
c("var/linux")
%]'
-
filename
:
fix-info-plist.py
enable
:
'
[%
c("var/osx")
%]'
-
URL
:
https://people.torproject.org/~gk/mirrors/sources/msvcr100.dll
sha256sum
:
8793353461826fbd48f25ea8b835be204b758ce7510db2af631b28850355bd18
enable
:
'
[%
c("var/windows-i686")
%]'
-
URL
:
https://people.torproject.org/~boklm/mirrors/sources/msvcr100-x86_64.dll
sha256sum
:
ae3cb6c6afba9a4aa5c85f66023c35338ca579b30326dd02918f9d55259503d5
enable
:
'
[%
c("var/windows-x86_64")
%]'
-
project
:
gcc
name
:
gcc
enable
:
'
[%
c("var/windows")
%]'
-
filename
:
nsis-uninstall.patch
enable
:
'
[%
c("var/windows")
%]'
-
project
:
rust
...
...
projects/firefox/mozconfig-windows-i686
View file @
023ce30e
CROSS_COMPILE=1
HOST_CC="clang"
HOST_CXX="clang++"
CC="i686-w64-mingw32-clang"
CXX="i686-w64-mingw32-clang++"
CXXFLAGS="-fms-extensions"
AR=llvm-ar
RANLIB=llvm-ranlib
clang_path=/var/tmp/dist/mingw-w64-clang
# For Stylo
BINDGEN_CFLAGS="-I$clang_path/i686-w64-mingw32/include/c++/v1 -I$clang_path/i686-w64-mingw32/include"
ac_add_options --enable-application=browser
ac_add_options --target=i686-w64-mingw32
ac_add_options --with-toolchain-prefix=i686-w64-mingw32-
...
...
@@ -11,6 +24,9 @@ export MOZILLA_OFFICIAL=1
mk_add_options BUILD_OFFICIAL=1
ac_add_options --disable-debug
# Until we build on a 64bit host we need to hack around linker errors due to
# memory constraints
ac_add_options --disable-debug-symbols
ac_add_options --enable-optimize
ac_add_options --enable-strip
ac_add_options --enable-official-branding
...
...
@@ -18,12 +34,14 @@ ac_add_options --enable-official-branding
ac_add_options --enable-tor-browser-update
ac_add_options --enable-signmar
ac_add_options --enable-verify-mar
ac_add_options --disable-bits-download
# Let's make sure no preference is enabling either Adobe's or Google's CDM.
ac_add_options --disable-eme
ac_add_options --disable-crashreporter
ac_add_options --disable-maintenance-service
ac_add_options --disable-webrtc
ac_add_options --enable-proxy-bypass-protection
ac_add_options --disable-webrtc # Bug 1393901
ac_add_options --disable-tests
ac_add_options --disable-
sty
lo # Bug
zilla 1390583
ac_add_options --disable-
jemalloc # Bugzilla 1466192
ac_add_options --disable-
jemal
lo
c
# Bug
154751
ac_add_options --disable-
geckodriver # Bug 1489320
projects/firefox/mozconfig-windows-x86_64
View file @
023ce30e
CROSS_COMPILE=1
HOST_CC="clang"
HOST_CXX="clang++"
CC="x86_64-w64-mingw32-clang"
CXX="x86_64-w64-mingw32-clang++"
CXXFLAGS="-fms-extensions"
AR=llvm-ar
RANLIB=llvm-ranlib
clang_path=/var/tmp/dist/mingw-w64-clang
# For Stylo
BINDGEN_CFLAGS="-I$clang_path/x86_64-w64-mingw32/include/c++/v1 -I$clang_path/x86_64-w64-mingw32/include"
ac_add_options --enable-application=browser
ac_add_options --target=x86_64-w64-mingw32
ac_add_options --with-toolchain-prefix=x86_64-w64-mingw32-
...
...
@@ -18,12 +31,14 @@ ac_add_options --enable-official-branding
ac_add_options --enable-tor-browser-update
ac_add_options --enable-signmar
ac_add_options --enable-verify-mar
ac_add_options --disable-bits-download
# Let's make sure no preference is enabling either Adobe's or Google's CDM.
ac_add_options --disable-eme
ac_add_options --disable-crashreporter
ac_add_options --disable-maintenance-service
ac_add_options --disable-webrtc
ac_add_options --enable-proxy-bypass-protection
ac_add_options --disable-webrtc # Bug 1393901
ac_add_options --disable-tests
ac_add_options --disable-
sty
lo # Bug
zilla 1390583
ac_add_options --disable-
jemalloc # Bugzilla 1466192
ac_add_options --disable-
jemal
lo
c
# Bug
1547519
ac_add_options --disable-
geckodriver # Bug 1489320
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment