Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.

Compiling Firefox 3.6.12 with icc

lopesc
Beginner
456 Views
Hi there.

For the past two days I have been trying to build myself Firefox using the intel compiler. I have the latest c++ composer non-commercial edition. I have tried following this guide: http://software.intel.com/en-us/articles/build-firefox-35-with-intel-c-compiler/ with no luck. The build stops with this error:

[bash]icpc: command line warning #10006: ignoring unknown option '-fno-handle-exceptions'
icpc: command line warning #10006: ignoring unknown option '-Wsynth'
icpc: command line warning #10006: ignoring unknown option '-Wno-ctor-dtor-privacy'
icpc: command line warning #10006: ignoring unknown option '-Wcast-align'
icpc: command line warning #10006: ignoring unknown option '-Wno-long-long'
../../ipc/chromium/src/base/string_util.h(55): error: more than one instance of function "base::vsnprintf" matches the argument list:
            function "vsnprintf(char *, size_t={unsigned long}, const char *, __va_list_tag *)"
            function "base::vsnprintf(char *, size_t={unsigned long}, const char *, __va_list_tag *)"
            argument types are: (char *, size_t, const char *, va_list)
    int result = vsnprintf(buffer, size, format, arguments);
                 ^

../../ipc/chromium/src/base/string_util.h(63): error: more than one instance of function "base::vswprintf" matches the argument list:
            function "vswprintf(wchar_t *, size_t={unsigned long}, const wchar_t *, __va_list_tag *)"
            function "base::vswprintf(wchar_t *, size_t={unsigned long}, const wchar_t *, __va_list_tag *)"
            argument types are: (wchar_t *, size_t, const wchar_t *, va_list)
    int result = vswprintf(buffer1, size1, format1, arguments1);
                 ^

compilation aborted for ./src/base/command_line.cc (code 2)
make[4]: *** [command_line.o] Error 2
make[4]: Leaving directory `/home/cris/mozilla-1.9.2/ipc/chromium'
make[3]: *** [libs_tier_xpcom] Error 2
make[3]: Leaving directory `/home/cris/mozilla-1.9.2'
make[2]: *** [tier_xpcom] Error 2
make[2]: Leaving directory `/home/cris/mozilla-1.9.2'
make[1]: *** [default] Error 2
make[1]: Leaving directory `/home/cris/mozilla-1.9.2'
make: *** [build] Error 2
[/bash]


Is there a problem with the new compiler that causes this? Can anybody build it?

Here is my .mozconfig file:

[plain]. $topsrcdir/browser/config/.mozconfig:

ac_add_options --enable-application=browser
mk_add_options MOZ_CO_PROJECT=browser

mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@
# MOZCONFIG environment variable
export MOZCONFIG=~/mozilla-1.9.2/browser/config/.mozconfig
export MOZILLA_OFFICIAL=1
export BUILD_OFFICIAL=1
mk_add_options MOZILLA_OFFICIAL=1
mk_add_options BUILD_OFFICIAL=1
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@
ac_add_options --enable-official-branding:
export CHOST="x86_64-pc-linux-gnu"

# change the compiler, libraries 
CC=/opt/intel/bin/icc
export CC
CXX=/opt/intel/bin/icpc
export CXX
AR=/opt/intel/bin/xiar
export AR
LD=/opt/intel/bin/xild
export LD


#Build Options

ac_add_options --enable-optimize="-O3 -fomit-frame-pointer -fp-model fast=2 -ipo1 -xSSE4.2"
ac_add_options --enable-default-toolkit=cairo-gtk2
ac_add_options --enable-system-cairo:
ac_add_options --enable-xft:
ac_add_options --enable-extensions=default
ac_add_options --enable-strip:
ac_add_options --enable-install-strip:
ac_add_options --enable-pango:
ac_add_options --enable-svg:
ac_add_options --enable-canvas:
ac_add_options --disable-necko-wifi:
ac_add_options --disable-tests:
ac_add_options --disable-accessibility:
ac_add_options --disable-installer:
ac_add_options --disable-crashreporter:
ac_add_options --disable-parental-controls:
ac_add_options --disable-printing:
ac_add_options --with-pthreads:
ac_add_options enable-cpp-rtti:
ac_add_options --disable-pedantic:[/plain]



Any help appreciated.
0 Kudos
7 Replies
styc
Beginner
456 Views
Change the calls to read "int result = base::vsnprintf(/*...*/)" and "int result = base::vswprintf(/*...*/)" should work. Not sure why reference to the namespace is necessary. It seems that the two candidates reported by the compiler are merely different names of the same function.
0 Kudos
lopesc
Beginner
456 Views
I will try that tomorrow (it's currently 1.50 am where I am). Any ideas why that should work? I would really like to know from a learning standpoint.
0 Kudos
Brandon_H_Intel
Employee
456 Views
This looks like an issue with the compiler. Our front end team is looking into it now, and I'll update the thread as the investigation proceeds. It looks like this only reproduces with the compiler on Intel 64 architecture, not on 32-bit, interestingly. The workaround provided previously in the thread should work, although I haven't confirmed myself.
0 Kudos
lopesc
Beginner
456 Views
Cheers. I am using 64 bit Ubuntu 10.10 with the latest Intel C++ compiler.
0 Kudos
lopesc
Beginner
456 Views
*bump*
0 Kudos
Brandon_H_Intel
Employee
456 Views
This compiler error has been resolved in the version 12.1 of the compiler that's available as part of the Intel C++ Composer XE 2011 update 6 or above. Let me know if you still have problems. Thanks.
0 Kudos
lopesc
Beginner
456 Views
Cool beans. I will try again soon and let you know how it goes.
0 Kudos
Reply