[Developers] ADMB, GCC, and the Windows build process

John Sibert sibert at hawaii.edu
Wed Apr 24 10:47:54 PDT 2013

This suggestion from Dave seems really good to me. Why not build the 
mingw binary distribution for  using the cross compiler?


John Sibert
Emeritus Researcher, SOEST
University of Hawaii at Manoa
Honolulu HI (GMT-10)

Visit the ADMB project http://admb-project.org/

On 04/22/2013 02:17 PM, dave fournier wrote:
> On 13-04-22 05:07 PM, Arni Magnusson wrote:
> The mingw win32 and win64  versions of admb build nicely on Linux 
> using the mingw cross compilers.
> the exe's also run on Linux by transparently invoking wine.
>> Here are some thoughts about ADMB and GCC for Windows in the long 
>> term, not necessarily related to the ongoing release. Essentially, 
>> the core team needs to decide between two options:
>> 1. To build ADMB with MinGW from scratch, the user only needs a GCC 
>> compiler, for example the c:/gnu/gcc472 that comes with ADMB-IDE. 
>> This is pretty much how things are now.
>> 2. To build ADMB with MinGW from scratch, the user needs the MSYS 
>> Linux emulator, a system that provides a Bash shell and behaves like 
>> Linux. This is how things were at some point.
>> As far as I can tell, the pros and cons of Option 1 (MSYS) are the 
>> following.
>> Pros:
>> We can then use the same makefile tree for Windows and Linux. This 
>> should result in a makefile tree that is easier to understand and 
>> maintain.
>> Cons:
>> MSYS intertwines the GCC compiler (170 MB) with lots of other stuff 
>> (another 170 for a total of 340 MB), like Perl and its own package 
>> manager. So it would probably not be a good idea to include the 
>> entire MSYS system inside the ADMB-IDE installer, right?
>> So if we take Option 2, users who already have c:/gnu/gcc472 (created 
>> by ADMB-IDE) would need to install MSYS as well, just to build ADMB, 
>> even though they already have g++ on their machine. They would now 
>> have (at least) 2 installed C++ compilers, maybe 2 installed Perl 
>> interpreters, etc. Some potential for confusion and software conflicts.
>> One option would be to offer ADMB-IDE-mini, which would include Emacs 
>> but not GCC, intended for users who have MSYS installed. With 64 bits 
>> and zips, this would mean a lot of confusing IDE distros.
>> Another option would be to offer only ADMB-IDE-mini. Then ADMB-IDE 
>> would no longer be plug-and-play, but rather assume that GCC is 
>> already installed and configured. This would be a big step backwards 
>> for ADMB beginners who have little experience with compilers or 
>> modifying their PATH. It's hard to enough to get an introductory 
>> workshop up and running as it is.
>> Conclusion:
>> These are big pros and cons. Option 1 is nice for users (ADMB can be 
>> built with a minimal g++ compiler, no need for anything else), while 
>> Option 2 is nice for the core team (simpler makefiles).
>> One possible solution would be to embrace MSYS and include it inside 
>> the ADMB-IDE installer, along with Perl, the MSYS package manager, 
>> and the kitchen sink. Disk space is cheap - and maybe it's safe to 
>> remove everything from c:/mingw/var/cache before building the 
>> ADMB-IDE installer?
>> The current ADMB-IDE installer (admb-ide-101-win32.exe) is "only" 74 
>> MB, so I'm by no means convinced that including MSYS inside it is the 
>> way to go. Maybe it's best to keep the installer minimal, and just 
>> let the fraction of users who want to build ADMB from scratch have 
>> both c:/gnu/gcc472 and c:/mingw on their computer. Or stay with 
>> Option 1 and just make small improvements to the current makefiles to 
>> provide Option 2 as well.
>> Let's continue to explore this, after the current version release is 
>> finished.
>> Arni
>> On Mon, 22 Apr 2013, Chris Grandin wrote:
>>> Hi all,
>>> If you download MinGW and check off all the check boxes on the 
>>> install (include MSYS and developer tools), and include 
>>> c:\MinGW\bin;c:\MinGW\msys\1.0\bin in your PATH, then you can just 
>>> open the MinGW shell and run the linux compile commands as written 
>>> in the README file to build the source.  This is how I did it from 
>>> the start and it worked great.  This method also avoids having to 
>>> maintain utilities/minGW parts of the project (MinGW parts of the 
>>> README could just say "Open a MinGW MSYS shell and follow linux 
>>> commands").  No external utilities that we need to keep track of are 
>>> required when you do it this way.
>>> I have reverted to revision 767, before all the changes happened 
>>> because minGW will not compile the source correctly now. It will 
>>> compile and run the samples but will not link to the contrib 
>>> libaries properly.  Note there are no tests for contrib linking so 
>>> it appears A-OK on the testing machines.
>>> I'd be happy to write up this method up on the webpage if we can 
>>> revert to a working copy!
>>> Chris
>>> On Mon, 22 Apr 2013, Johnoel Ancheta wrote:
>>>> Hi Arni,
>>>> We should press on and get this release out.  I'm going to need 
>>>> some help with documentation.
>>>> Johnoel
>> _______________________________________________
>> Developers mailing list
>> Developers at admb-project.org
>> http://lists.admb-project.org/mailman/listinfo/developers
> _______________________________________________
> Developers mailing list
> Developers at admb-project.org
> http://lists.admb-project.org/mailman/listinfo/developers
> .

More information about the Developers mailing list