Add support for MSYS/MSVC build environment

Description

Mozilla uses its own build system on Windows, based on the MSYS environment (which is related to MingW) and the MSVC compilers:
https://wiki.mozilla.org/MozillaBuild

I've created a patch that allows ICU 50.1 to be built with this build system. To simplify maintenance, I'd like to work with the ICU team to integrate the changes into ICU.

The current patch:
https://bug724533.bugzilla.mozilla.org/attachment.cgi?id=712051

The main part is a new file mh-msys-msvc, which is based on mh-cygwin-msvc. It may actually be possible to have a single file covering both environments if options can be consistently indicated with "-" rather than "/" - the other changes are very localized.

Other changes are largely to select the new file and, again, to use "-" rather than "/" for options. The change in source/data/Makefile.in is the only one needing more work.

Is the ICU team interesting in adding support for this environment? Who can I work with (I'd need someone who really understands build systems, because I don't...)?

Activity

Show:
TracBot
July 1, 2018, 12:13 AM
Trac Comment 3.4 by —2013-09-04T05:43:37.764Z

Replying to (Comment 3 norbert):

An updated patch that makes it clearer how mh-msys-msvc differs from mh-cygwin-msvc, and how small the changes really are, is available at:

https://bug724533.bugzilla.mozilla.org/attachment.cgi?id=731516

 

Based on that patch, does it look feasible to make one mh-msvc file handle both cygwin and msys?

Changes are small, but i think it makes more sense to have 2 files.

TracBot
July 1, 2018, 12:13 AM
Trac Comment 7 by —2014-02-11T18:26:46.155Z

Additional notes from email discussions:


norbert 2013-09-09:

Sure, [files are|two] possible, and is in fact what Mozilla currently has. I was just hoping to simplify maintenance of these two quite similar configurations.

Any thoughts on how to handle source/data/Makefile.in?


srl 2013-09-10:

I would just add a variable in the 'mh' file, and then add an "ifdef" to Makefile.in

something like:

RC_OPT=/
or
RC_OPT=-

then in Makefile.in:

ifeq ($(RC_OPT),)
RC_OPT=/
endif

Or just plain add in the mh file;
MSYS_RC_MODE=1

Then in Makefile.in:
ifeq ($(MSYS_RC_MODE),1)
rc.exe -i$(srcdir)/../common -i$(top_builddir)/common -fo$@ $(CPPFLAGS) $<
else
rc.exe /i$(srcdir)/../common /i$(top_builddir)/common /fo$@ $(CPPFLAGS)
endif

something like that?


norbert 2013-09-23:

So how shall we proceed? Can one of you take the patch
https://bug724533.bugzilla.mozilla.org/attachment.cgi?id=712051
and integrate it, or should I create a branch and integrate it there? I can test with MSYS; somebody else would have to try with Cygwin.

TracBot
July 1, 2018, 12:13 AM
Trac Comment 8 by —2014-08-16T01:50:23.993Z

rolling some platform tickets to mow

TracBot
July 1, 2018, 12:13 AM
Trac Comment 9 by —2014-08-27T22:43:17.317Z

I tested and committed the patch (with some minor adjustments) to trunk for msys/msvc build environment

TracBot
July 1, 2018, 12:13 AM
Trac Comment 11 by —2014-09-11T15:41:56.271Z

looking forward to trying this

Fixed

Assignee

mow@icu-project.org

Reporter

icu@lindenbergsoftware.com

Components

Labels

None

Reviewer

None

Priority

major

Time Needed

None

Fix versions