Closed
      
        Bug 912371
      
      
        Opened 12 years ago
          Closed 11 years ago
      
        
    
  
ICU cross compiling support
Categories
(Firefox Build System :: General, defect)
        Firefox Build System
          
        
        
      
        
    
        General
          
        
        
      
        
    Tracking
(Not tracked)
        RESOLVED
        FIXED
        
    
  
        
            mozilla28
        
    
  
People
(Reporter: m_kato, Assigned: m_kato)
References
Details
Attachments
(3 files, 1 obsolete file)
| 8.87 KB,
          patch         | glandium
:
              
              feedback+ | Details | Diff | Splinter Review | 
| 11.95 KB,
          patch         | glandium
:
              
              review+ | Details | Diff | Splinter Review | 
| 11.63 KB,
          patch         | glandium
:
              
              review+ | Details | Diff | Splinter Review | 
Although Android (and B2G) needs more hacks, we should add general cross compile code for ICU.
| Assignee | ||
| Comment 1•12 years ago
           | ||
Comment on attachment 799331 [details] [diff] [review]
Add cross support
Review of attachment 799331 [details] [diff] [review]:
-----------------------------------------------------------------
::: js/src/configure.in
@@ +4298,2 @@
>              ;;
> +        *bsd*)
DragonFly doesn't have *bsd* in config.guess string from which
HOST_OS_ARCH is derived in native builds on unlisted platforms.
| Assignee | ||
| Comment 3•12 years ago
           | ||
        Attachment #799331 -
        Attachment is obsolete: true
| Assignee | ||
| Comment 4•12 years ago
           | ||
Comment on attachment 806543 [details] [diff] [review]
Add cross build support for ICU
Since ICU tree is out of spidermonkey tree, we cannot use AC_OUTPUT_SUBDIRS for configure of ICU.  Because objdir root of SpiderMonkey only build is just $objdir instead of $objdir/js/src.  If using AC_OUTPUT_SUBDIRS(../../intl/icu/source), objdir of ICU becomes $objdir/../../intl/icu/source.
Also, should I use configure for host tools instead of runConfigureICU?
        Attachment #806543 -
        Flags: review?(mh+mozilla)
| Comment 5•12 years ago
           | ||
Comment on attachment 806543 [details] [diff] [review]
Add cross build support for ICU
Review of attachment 806543 [details] [diff] [review]:
-----------------------------------------------------------------
::: js/src/Makefile.in
@@ +257,5 @@
>  # - Force ICU to use the standard suffix for object files because expandlibs
>  #   will discard all files with a non-standard suffix (bug 857450).
>  # - Options for genrb: -k strict parsing; -R omit collation tailoring rules.
>  buildicu:
> +ifneq (,$(CROSS_COMPILE))
ifdef CROSS_COMPILE
@@ +258,5 @@
>  #   will discard all files with a non-standard suffix (bug 857450).
>  # - Options for genrb: -k strict parsing; -R omit collation tailoring rules.
>  buildicu:
> +ifneq (,$(CROSS_COMPILE))
> +	$(GMAKE) $(ICU_GMAKE_OPTIONS) -C intl/icu/host STATIC_O=$(OBJ_SUFFIX) GENRBOPTS='-k -R'
Is it possible to make it build the strict subset that is required for the target build?
@@ +265,4 @@
>  	$(ICU_LIB_RENAME)
>  
>  distclean clean::
> +ifneq (,$(CROSS_COMPILE))
ifdef
::: js/src/configure.in
@@ +4252,5 @@
>          case "$OS_TARGET" in
>              WINNT)
>                  ICU_LIB_NAMES="icuin icuuc icudt"
>                  ;;
> +            *)
Better to keep an explicit list.
@@ +4350,5 @@
> +        ICU_CXXFLGAS="$ICU_CXXFLAGS $MOZ_DEBUG_FLAGS"
> +        ICU_LDFLAGS="$MOZ_DEBUG_LDFLAGS"
> +        if test -z "$MOZ_DEBUG"; then
> +            # To generate debug symbols, it require MOZ_DEBUG_FLAGS.  But not debug build.
> +            ICU_CFLGAS="$ICU_CFLAGS -UDEBUG -DNDEBUG"
typo
@@ +4351,5 @@
> +        ICU_LDFLAGS="$MOZ_DEBUG_LDFLAGS"
> +        if test -z "$MOZ_DEBUG"; then
> +            # To generate debug symbols, it require MOZ_DEBUG_FLAGS.  But not debug build.
> +            ICU_CFLGAS="$ICU_CFLAGS -UDEBUG -DNDEBUG"
> +            ICU_CXXFLGAS="$ICU_CXXFLAGS -UDEBUG -DNDEBUG"
typo
        Attachment #806543 -
        Flags: review?(mh+mozilla) → feedback+
| Assignee | ||
| Comment 6•11 years ago
           | ||
| Assignee | ||
| Updated•11 years ago
           | 
        Attachment #829143 -
        Flags: review?(mh+mozilla)
| Comment 7•11 years ago
           | ||
Comment on attachment 829143 [details] [diff] [review]
patch v2
Review of attachment 829143 [details] [diff] [review]:
-----------------------------------------------------------------
::: js/src/Makefile.in
@@ +254,5 @@
>  # - Options for genrb: -k strict parsing; -R omit collation tailoring rules.
>  buildicu:
>  # ICU's build system is full of races, so force non-parallel build.
> +ifdef CROSS_COMPILE
> +	+$(ICU_MAKE) -j1 -C intl/icu/host STATIC_O=$(OBJ_SUFFIX) GENRBOPTS='-k -R'
I'm pretty sure we can find better options for this, to limit what it builds.
@@ +263,5 @@
>  distclean clean::
> +ifdef CROSS_COMPILE
> +	$(call SUBMAKE,$@,intl/icu/host)
> +endif
> +	$(call SUBMAKE,$@,intl/icu/source)
s/source/target/, maybe.
::: js/src/build/autoconf/codeset.m4
@@ +1,1 @@
> +# codeset.m4 serial AM1 (gettext-0.10.40)
This ought to be a hg cp.
::: js/src/configure.in
@@ +4253,5 @@
> +        # ICU requires RTTI
> +        if test "$GNU_CC"; then
> +            HOST_ICU_CXXFLAGS=`echo $HOST_ICU_CXXFLAGS | sed 's|-fno-rtti|-frtti|g'`
> +        else
> +            if test "$_MSC_VER"; then
elif
@@ +4263,5 @@
> +        if test -n "$MOZ_DEBUG"; then
> +            HOST_ICU_BUILD_OPTS="$HOST_ICU_BUILD_OPTS --enable-debug"
> +        fi
> +
> +        abs_srcdir=`(cd $srcdir; pwd)`
why do you need abs_srcdir?
@@ +4278,5 @@
> +        dnl Shell quoting is fun.
> +                ${ICU_SRCDIR+"$ICU_SRCDIR"} \
> +                --enable-static --disable-shared \
> +                --enable-extras=no --enable-icuio=no --enable-layout=no \
> +                --enable-tests=no --enable-samples=no || exit 1
--disable-* instead of --enable-*=no?
@@ +4331,5 @@
> +            ICU_CXXFLAGS=`echo $ICU_CXXFLAGS | sed 's|-GR-|-GR|g'`
> +        fi
> +    fi
> +
> +    # We cannout use AC_OUTPUT_SUBDIRS since ICU tree is out of spidermonkey.
cannot
@@ +4335,5 @@
> +    # We cannout use AC_OUTPUT_SUBDIRS since ICU tree is out of spidermonkey.
> +    # When using AC_OUTPUT_SUBDIRS, objdir of ICU is out of objdir
> +    # due to relative path.
> +    # If building ICU moves into root of mozilla tree, we can use
> +    # AC_OUTPUT_SUBDIR instead of.
instead.
        Attachment #829143 -
        Flags: review?(mh+mozilla) → review+
| Assignee | ||
| Comment 8•11 years ago
           | ||
https://hg.mozilla.org/integration/mozilla-inbound/rev/4110a8986a2a
> I'm pretty sure we can find better options for this, to limit what it builds.
I added -C option (-C or --noBinaryCollation  do not generate binary collation image)
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla28
| Assignee | ||
| Comment 10•11 years ago
           | ||
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
| Assignee | ||
| Comment 11•11 years ago
           | ||
not test yet on mac x86
| Assignee | ||
| Comment 12•11 years ago
           | ||
Comment on attachment 8335145 [details] [diff] [review]
v3
- Need -Od for disable optimize at force when using --disable-optimize.
- Also RTL_FLAGS isn't include CFLAGS, I have to add it to CFLAGS for msvs build
- since CROSS_COMPILE may not set, set --build=$target for non-cross compile.
        Attachment #8335145 -
        Flags: review?(mh+mozilla)
| Assignee | ||
| Comment 13•11 years ago
           | ||
test is passed on spidermonkey only build on i686 linux on x86-64 linux and --disable-optimize on win32.
|   | ||
| Comment 14•11 years ago
           | ||
> backed out
> https://hg.mozilla.org/integration/mozilla-inbound/rev/9f64519c330f
This backout made m-c:
http://hg.mozilla.org/mozilla-central/rev/9f64519c330f
| Updated•11 years ago
           | 
Target Milestone: mozilla28 → ---
| Comment 15•11 years ago
           | ||
Comment on attachment 8335145 [details] [diff] [review]
v3
Review of attachment 8335145 [details] [diff] [review]:
-----------------------------------------------------------------
Kind of awful, but meh.
        Attachment #8335145 -
        Flags: review?(mh+mozilla) → review+
| Assignee | ||
| Comment 16•11 years ago
           | ||
|   | ||
| Comment 17•11 years ago
           | ||
Status: REOPENED → RESOLVED
Closed: 11 years ago → 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla28
| Updated•7 years ago
           | 
Product: Core → Firefox Build System
          You need to log in
          before you can comment on or make changes to this bug.
        
Description
•