Bug 469654 - Windows x64 build support. r=ted

This commit is contained in:
Makoto Kato 2009-10-06 17:28:05 +09:00
parent 670dd80cf4
commit 3a0c0c3f5d
7 changed files with 96 additions and 30 deletions

View file

@ -40,11 +40,7 @@
#endif
[xpcom]
#ifdef XP_WIN32
@BINPATH@/js3250.dll
#else
@BINPATH@/@DLL_PREFIX@mozjs@DLL_SUFFIX@
#endif
@BINPATH@/@DLL_PREFIX@plc4@DLL_SUFFIX@
@BINPATH@/@DLL_PREFIX@plds4@DLL_SUFFIX@
@BINPATH@/@DLL_PREFIX@xpcom@DLL_SUFFIX@

View file

@ -812,5 +812,8 @@ chrome.manifest
install.rdf
@DLL_PREFIX@jsj@DLL_SUFFIX@
#ifdef XP_WIN
js3250.dll
#endif
#ifdef XP_WIN
components/brwsrcmp.dll
#endif

View file

@ -42,6 +42,8 @@ dnl Mac OS X 10.4 support
dnl Giorgio Maone <g.maone@informaction.com>
dnl MSVC l10n compatible version check
dnl Ben Turner <mozilla@songbirdnest.com>
dnl Windows x64 support
dnl Makoto Kato <m_kato@ga2.so-net.ne.jp>
dnl
dnl Alternatively, the contents of this file may be used under the terms of
dnl either the GNU General Public License Version 2 or later (the "GPL"), or
@ -192,7 +194,16 @@ case "$target" in
if test -z "$CPP"; then CPP="cl -E -nologo"; fi
if test -z "$CXXCPP"; then CXXCPP="cl -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
if test -z "$LD"; then LD=link; fi
if test -z "$AS"; then AS=ml; fi
if test -z "$AS"; then
case "${target_cpu}" in
i*86)
AS=ml;
;;
x86_64)
AS=ml64;
;;
esac
fi
if test -z "$MIDL"; then MIDL=midl; fi
;;
*-darwin*)
@ -639,6 +650,9 @@ case "$target" in
AC_MSG_RESULT([none needed])
fi
;;
x86_64-*)
MIDL_FLAGS="${MIDL_FLAGS} -env x64"
;;
*)
AC_MSG_RESULT([none needed])
;;
@ -1590,7 +1604,7 @@ AC_LANG_SAVE
AC_LANG_C
AC_MSG_CHECKING(for 64-bit OS)
AC_TRY_COMPILE([$configure_static_assert_macros],
[CONFIGURE_STATIC_ASSERT(sizeof(long) == 8)],
[CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)],
result="yes", result="no")
AC_MSG_RESULT("$result")
if test "$result" = "yes"; then
@ -1657,6 +1671,12 @@ case "$host" in
fi
;;
esac
case "${host_cpu}" in
x86_64)
HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
;;
esac
;;
*-darwin*)
@ -2041,7 +2061,7 @@ case "$target" in
MOZ_DEBUG_FLAGS='-Zi'
MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
MOZ_FIX_LINK_PATHS=
MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
OBJ_SUFFIX=obj
RANLIB='echo not_ranlib'
STRIP='echo not_strip'
@ -2105,7 +2125,7 @@ case "$target" in
RCFLAGS='-O coff --use-temp-file'
# mingw doesn't require kernel32, user32, and advapi32 explicitly
LIBS="$LIBS -lgdi32 -lwinmm -lwsock32"
MOZ_JS_LIBS='-L$(LIBXUL_DIST)/lib -ljs$(MOZ_BITS)$(VERSION_NUMBER)'
MOZ_JS_LIBS='-L$(LIBXUL_DIST)/lib -lmozjs'
MOZ_FIX_LINK_PATHS=
DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core'
XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom'
@ -2116,6 +2136,9 @@ case "$target" in
HOST_CC='$(CC)'
HOST_CXX='$(CXX)'
HOST_LD='$(LD)'
if test "$AS_BIN"; then
AS="$(basename "$AS_BIN")"
fi
AR='lib -NOLOGO -OUT:"$@"'
AR_FLAGS=
RANLIB='echo not_ranlib'
@ -2125,6 +2148,7 @@ case "$target" in
UNZIP=unzip
DOXYGEN=:
GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
ASM_SUFFIX=asm
OBJ_SUFFIX=obj
LIB_SUFFIX=lib
DLL_PREFIX=
@ -2145,14 +2169,14 @@ case "$target" in
MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
WARNINGS_AS_ERRORS='-WX'
MOZ_OPTIMIZE_FLAGS='-O1'
MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
MOZ_FIX_LINK_PATHS=
DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
if test $_MSC_VER -ge 1400; then
LDFLAGS="$LDFLAGS -NXCOMPAT -SAFESEH"
LDFLAGS="$LDFLAGS -NXCOMPAT"
dnl For profile-guided optimization
PROFILE_GEN_CFLAGS="-GL"
PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
@ -2312,7 +2336,7 @@ case "$target" in
;;
*)
AC_CHECK_HEADERS(mmintrin.h oleacc.idl)
AC_CHECK_HEADERS(oleacc.idl)
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
@ -2323,6 +2347,14 @@ case "$target" in
case "$target" in
i*86-*)
if test "$HAVE_64BIT_OS"; then
AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
fi
if test $_MSC_VER -ge 1400; then
LDFLAGS="$LDFLAGS -SAFESEH"
fi
AC_CHECK_HEADERS(mmintrin.h)
AC_DEFINE(_X86_)
;;
alpha-*)
@ -2331,10 +2363,17 @@ case "$target" in
mips-*)
AC_DEFINE(_MIPS_)
;;
x86_64-*)
AC_DEFINE(_AMD64_)
;;
*)
AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
;;
esac
if test "$HAVE_64BIT_OS"; then
AC_DEFINE(_WIN64)
fi
;;
*-netbsd*)
@ -6469,13 +6508,22 @@ if test "$MOZ_MEMORY"; then
WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src"
fi
fi
dnl cpu check
case "${target_cpu}" in
i*86)
_WIN32_CRT_CPU=intel
;;
*)
AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
;;
esac
if test ! -d "$WIN32_CRT_SRC_DIR"; then
AC_MSG_ERROR([Invalid Win32 CRT source directory: ${WIN32_CRT_SRC_DIR}])
fi
WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd -W`
_objdir_win=`pwd -W`
WIN32_CUSTOM_CRT_DIR="$_objdir_win/memory/jemalloc/crtsrc/build/intel"
WIN32_CUSTOM_CRT_DIR="$_objdir_win/memory/jemalloc/crtsrc/build/$_WIN32_CRT_CPU"
MOZ_MEMORY_LDFLAGS="-MANIFEST:NO -LIBPATH:\"$WIN32_CUSTOM_CRT_DIR\" -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt19 -DEFAULTLIB:mozcpp19"
dnl Also pass this to NSPR/NSS
DLLFLAGS="$DLLFLAGS $MOZ_MEMORY_LDFLAGS"

View file

@ -102,10 +102,6 @@ endif
endif
ifeq (,$(filter-out WINNT WINCE,$(OS_ARCH)))
LIBRARY_NAME = js$(MOZ_BITS)$(VERSION_NUMBER)
endif
# JavaScript must be built shared, even for static builds, as it is used by
# other modules which are always built shared. Failure to do so results in
# the js code getting copied into xpinstall and jsd as well as mozilla-bin,

View file

@ -180,7 +180,16 @@ case "$target" in
if test -z "$CPP"; then CPP="cl -E -nologo"; fi
if test -z "$CXXCPP"; then CXXCPP="cl -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
if test -z "$LD"; then LD=link; fi
if test -z "$AS"; then AS=ml; fi
if test -z "$AS"; then
case "${target_cpu}" in
i*86)
AS=ml;
;;
x86_64)
AS=ml64;
;;
esac
fi
if test -z "$MIDL"; then MIDL=midl; fi
;;
*-darwin*)
@ -1409,7 +1418,7 @@ AC_LANG_SAVE
AC_LANG_C
AC_MSG_CHECKING(for 64-bit OS)
AC_TRY_COMPILE([$configure_static_assert_macros],
[CONFIGURE_STATIC_ASSERT(sizeof(long) == 8)],
[CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)],
result="yes", result="no")
AC_MSG_RESULT("$result")
if test "$result" = "yes"; then
@ -1832,7 +1841,7 @@ case "$target" in
MOZ_DEBUG_FLAGS='-Zi'
MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
MOZ_FIX_LINK_PATHS=
MOZ_JS_LIBS='$(libdir)/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
MOZ_JS_LIBS='$(libdir)/mozjs.lib'
OBJ_SUFFIX=obj
RANLIB='echo not_ranlib'
STRIP='echo not_strip'
@ -1923,7 +1932,7 @@ case "$target" in
RCFLAGS='-O coff --use-temp-file'
# mingw doesn't require kernel32, user32, and advapi32 explicitly
LIBS="$LIBS -lgdi32 -lwinmm -lwsock32"
MOZ_JS_LIBS='-L$(libdir) -ljs$(MOZ_BITS)$(VERSION_NUMBER)'
MOZ_JS_LIBS='-L$(libdir) -lmozjs'
MOZ_FIX_LINK_PATHS=
DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core'
XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom'
@ -1963,14 +1972,14 @@ case "$target" in
MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
WARNINGS_AS_ERRORS='-WX'
MOZ_OPTIMIZE_FLAGS='-O1'
MOZ_JS_LIBS='$(libdir)/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
MOZ_JS_LIBS='$(libdir)/mozjs.lib'
MOZ_FIX_LINK_PATHS=
DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
if test $_MSC_VER -ge 1400; then
LDFLAGS="$LDFLAGS -NXCOMPAT -SAFESEH"
LDFLAGS="$LDFLAGS -NXCOMPAT"
dnl For profile-guided optimization
PROFILE_GEN_CFLAGS="-GL"
PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
@ -2050,7 +2059,7 @@ case "$target" in
;;
*)
AC_CHECK_HEADERS(mmintrin.h oleacc.idl)
AC_CHECK_HEADERS(oleacc.idl)
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
@ -2061,6 +2070,14 @@ case "$target" in
case "$target" in
i*86-*)
if test "$HAVE_64BIT_OS"; then
AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
fi
if test $_MSC_VER -ge 1400; then
LDFLAGS="$LDFLAGS -SAFESEH"
fi
AC_CHECK_HEADERS(mmintrin.h)
AC_DEFINE(_X86_)
;;
alpha-*)
@ -2069,10 +2086,17 @@ case "$target" in
mips-*)
AC_DEFINE(_MIPS_)
;;
x86_64-*)
AC_DEFINE(_AMD64_)
;;
*)
AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
;;
esac
if test "$HAVE_64BIT_OS"; then
AC_DEFINE(_WIN64)
fi
;;
*-netbsd*)

View file

@ -51,7 +51,11 @@ MOZ_PKG_PLATFORM := $(TARGET_OS)-$(TARGET_CPU)
# TARGET_OS/TARGET_CPU may be unintuitive, so we hardcode some special formats
ifeq ($(OS_ARCH),WINNT)
MOZ_PKG_PLATFORM := win$(MOZ_BITS)
ifeq ($(TARGET_CPU),x86_64)
MOZ_PKG_PLATFORM := win64-$(TARGET_CPU)
else
MOZ_PKG_PLATFORM := win32
endif
endif
ifeq ($(OS_ARCH),Darwin)
MOZ_PKG_PLATFORM := mac

View file

@ -89,14 +89,9 @@ DEPENDENT_LIBS_LIST += \
$(LIB_PREFIX)nss3$(DLL_SUFFIX) \
$(LIB_PREFIX)ssl3$(DLL_SUFFIX) \
$(LIB_PREFIX)smime3$(DLL_SUFFIX) \
$(LIB_PREFIX)mozjs$(DLL_SUFFIX) \
$(NULL)
ifeq (,$(filter-out WINNT WINCE,$(OS_ARCH)))
DEPENDENT_LIBS_LIST += js$(MOZ_BITS)$(VERSION_NUMBER)$(DLL_SUFFIX)
else
DEPENDENT_LIBS_LIST += $(LIB_PREFIX)mozjs$(DLL_SUFFIX)
endif
ifeq (bundle,$(MOZ_FS_LAYOUT))
EXTRA_DSO_LDOPTS += $(DIST)/bin/XUL
DEPENDENT_LIBS_LIST += XUL