www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Got Mango? ( installation / compiling instructions)

reply jicman <jicman_member pathlink.com> writes:
Folks, 

I have looked for more than 1/2 hour how to compile a simple sample mango
program, but there are no instructions anywhere.  Well, not that I can find.
None of the documentation download (mango_release_1-1_doc.zip) contain any d
sample compile commands. Does any one have any website where it would show some
d compile samples?    When I try 

dmd source.d

I get a bunch of errors of libraries not found.  How do I pass the mango
libraries to dmd?  I looked over mango and it's something that I want to do for
the http stuff that I am doing, but I can't get it to work.

thanks, 

josť
Feb 22 2005
next sibling parent reply Kris <Kris_member pathlink.com> writes:
In article <cvfld4$fba$1 digitaldaemon.com>, jicman says...
Folks, 

I have looked for more than 1/2 hour how to compile a simple sample mango
program, but there are no instructions anywhere.  Well, not that I can find.
None of the documentation download (mango_release_1-1_doc.zip) contain any d
sample compile commands. Does any one have any website where it would show some
d compile samples?    When I try 

dmd source.d

I get a bunch of errors of libraries not found.  How do I pass the mango
libraries to dmd?  I looked over mango and it's something that I want to do for
the http stuff that I am doing, but I can't get it to work.

thanks, 

josť

You need to include mango.lib as one of the files supplied to dmd.exe, which will then pass it along to the linker; e.g. on windows: dmd myfile.d myotherfile.d mango.lib All libraries are handled this way with dmd ~ you would typically have to add phobos.lib also, but the compiler assumes you want that anyway. Hope that helps - Kris
Feb 22 2005
parent jicman <jicman_member pathlink.com> writes:
In article <cvg37n$15sk$1 digitaldaemon.com>, Kris says...

You need to include mango.lib as one of the files supplied to dmd.exe, which
will then pass it along to the linker; e.g. on windows:

dmd myfile.d myotherfile.d mango.lib

All libraries are handled this way with dmd ~ you would typically have to add
phobos.lib also, but the compiler assumes you want that anyway. 

Hope that helps

- Kris

Kris, that help a lot. Thanks.
Feb 22 2005
prev sibling parent reply Derek <derek psych.ward> writes:
On Tue, 22 Feb 2005 16:08:04 +0000 (UTC), jicman wrote:

 Folks, 
 
 I have looked for more than 1/2 hour how to compile a simple sample mango
 program, but there are no instructions anywhere.  Well, not that I can find.
 None of the documentation download (mango_release_1-1_doc.zip) contain any d
 sample compile commands. Does any one have any website where it would show some
 d compile samples?    When I try 
 
 dmd source.d
 
 I get a bunch of errors of libraries not found.  How do I pass the mango
 libraries to dmd?  I looked over mango and it's something that I want to do for
 the http stuff that I am doing, but I can't get it to work.
 
 thanks, 
 
 josť

I haven't tried Mango yet, but I'll test it with my Build utility today. Hopefully then all one would have to do is type in "build source" on the command line. -- Derek Melbourne, Australia
Feb 22 2005
parent reply Kris <Kris_member pathlink.com> writes:
In article <1kj7oykh4lu8z$.17s4c3tmmsdpe.dlg 40tude.net>, Derek says...
On Tue, 22 Feb 2005 16:08:04 +0000 (UTC), jicman wrote:

 Folks, 
 
 I have looked for more than 1/2 hour how to compile a simple sample mango
 program, but there are no instructions anywhere.  Well, not that I can find.
 None of the documentation download (mango_release_1-1_doc.zip) contain any d
 sample compile commands. Does any one have any website where it would show some
 d compile samples?    When I try 
 
 dmd source.d
 
 I get a bunch of errors of libraries not found.  How do I pass the mango
 libraries to dmd?  I looked over mango and it's something that I want to do for
 the http stuff that I am doing, but I can't get it to work.
 
 thanks, 
 
 josť

I haven't tried Mango yet, but I'll test it with my Build utility today. Hopefully then all one would have to do is type in "build source" on the command line.

Excellent; let us know how it works out?
Feb 22 2005
parent reply Derek Parnell <derek psych.ward> writes:
On Tue, 22 Feb 2005 20:20:56 +0000 (UTC), Kris wrote:

 In article <1kj7oykh4lu8z$.17s4c3tmmsdpe.dlg 40tude.net>, Derek says...
On Tue, 22 Feb 2005 16:08:04 +0000 (UTC), jicman wrote:

 Folks, 
 
 I have looked for more than 1/2 hour how to compile a simple sample mango
 program, but there are no instructions anywhere.  Well, not that I can find.
 None of the documentation download (mango_release_1-1_doc.zip) contain any d
 sample compile commands. Does any one have any website where it would show some
 d compile samples?    When I try 
 
 dmd source.d
 
 I get a bunch of errors of libraries not found.  How do I pass the mango
 libraries to dmd?  I looked over mango and it's something that I want to do for
 the http stuff that I am doing, but I can't get it to work.
 
 thanks, 
 
 josť

I haven't tried Mango yet, but I'll test it with my Build utility today. Hopefully then all one would have to do is type in "build source" on the command line.

Excellent; let us know how it works out?

It works okay, not fine but just okay. With the current v1.2 of Build ( www.dsource.org ) you have to specify the directory in which the 'mango' tree is installed. For example, if I've installed mango into the directory C:\dlibs\ then the following command line works ... build msource -C:\dlibs BTW, the test source code I used is ... <code> module msource; private import mango.io.Buffer; private import std.stdio; void main() { Buffer B = new Buffer(4000); writefln("The buffer has readable:%d writeable:%d bytes.", B.readable, B.writable); } </code> For my first attempt to use build for mango apps, I edited the sc.ini file to include the mango lib path ... old: DFLAGS=-I% P%\..\src\phobos new: DFLAGS=-I% P%\..\src\phobos;c:\dlibs but this highlighted a bug in build; it didn't recognize semi-colon delimited flags. So I fixed that, but even though now 'build' could find the mango imports, 'dmd' still couldn't. So keeping the sc.ini file with the mango lib path in it, I tried invoking dmd with an explict -Ic:\dlibs on it and it worked! So my conclusion is that DMD does not use the sc.ini file correctly for DFLAG options. I have now updated build to explicitly add an DFLAG options in to the dmd command line it invokes, and now it works just fine. In other words, after updating your sc.ini file to include the mango path, all you will have to do to compile an app that uses mango is ... build msource Works a treat! :D I'll upload BUILD v1.3 later today, as I'll play with this workaround a bit more first. -- Derek Melbourne, Australia 23/02/2005 12:12:06 PM
Feb 22 2005
parent reply John Reimer <brk_6502 yahoo.com> writes:
Derek Parnell wrote:
 On Tue, 22 Feb 2005 20:20:56 +0000 (UTC), Kris wrote:
 
 
In article <1kj7oykh4lu8z$.17s4c3tmmsdpe.dlg 40tude.net>, Derek says...

On Tue, 22 Feb 2005 16:08:04 +0000 (UTC), jicman wrote:


Folks, 

I have looked for more than 1/2 hour how to compile a simple sample mango
program, but there are no instructions anywhere.  Well, not that I can find.
None of the documentation download (mango_release_1-1_doc.zip) contain any d
sample compile commands. Does any one have any website where it would show some
d compile samples?    When I try 

dmd source.d

I get a bunch of errors of libraries not found.  How do I pass the mango
libraries to dmd?  I looked over mango and it's something that I want to do for
the http stuff that I am doing, but I can't get it to work.

thanks, 

josť

I haven't tried Mango yet, but I'll test it with my Build utility today. Hopefully then all one would have to do is type in "build source" on the command line.

Excellent; let us know how it works out?

It works okay, not fine but just okay. With the current v1.2 of Build ( www.dsource.org ) you have to specify the directory in which the 'mango' tree is installed. For example, if I've installed mango into the directory C:\dlibs\ then the following command line works ... build msource -C:\dlibs BTW, the test source code I used is ... <code> module msource; private import mango.io.Buffer; private import std.stdio; void main() { Buffer B = new Buffer(4000); writefln("The buffer has readable:%d writeable:%d bytes.", B.readable, B.writable); } </code> For my first attempt to use build for mango apps, I edited the sc.ini file to include the mango lib path ... old: DFLAGS=-I% P%\..\src\phobos new: DFLAGS=-I% P%\..\src\phobos;c:\dlibs but this highlighted a bug in build; it didn't recognize semi-colon delimited flags. So I fixed that, but even though now 'build' could find the mango imports, 'dmd' still couldn't. So keeping the sc.ini file with the mango lib path in it, I tried invoking dmd with an explict -Ic:\dlibs on it and it worked! So my conclusion is that DMD does not use the sc.ini file correctly for DFLAG options. I have now updated build to explicitly add an DFLAG options in to the dmd command line it invokes, and now it works just fine. In other words, after updating your sc.ini file to include the mango path, all you will have to do to compile an app that uses mango is ... build msource Works a treat! :D I'll upload BUILD v1.3 later today, as I'll play with this workaround a bit more first.

Great work, Derek! Building Mango is an excellent stress test for build. If you've succeeded there, that's good news. A question: Mango typically uses some commandline "-version" switches like -version=Mango and -version=Posix (for linux). I guess these statements will be needed to include some appropriate code in the build. How does build handle this? I assume we pass-thru to the compiler somehow? - John R.
Feb 22 2005
parent reply Derek Parnell <derek psych.ward> writes:
On Tue, 22 Feb 2005 17:51:38 -0800, John Reimer wrote:

 Derek Parnell wrote:
 On Tue, 22 Feb 2005 20:20:56 +0000 (UTC), Kris wrote:
 
In article <1kj7oykh4lu8z$.17s4c3tmmsdpe.dlg 40tude.net>, Derek says...

On Tue, 22 Feb 2005 16:08:04 +0000 (UTC), jicman wrote:


Folks, 

I have looked for more than 1/2 hour how to compile a simple sample mango
program, but there are no instructions anywhere.  Well, not that I can find.
None of the documentation download (mango_release_1-1_doc.zip) contain any d
sample compile commands. Does any one have any website where it would show some
d compile samples?    When I try 

dmd source.d

I get a bunch of errors of libraries not found.  How do I pass the mango
libraries to dmd?  I looked over mango and it's something that I want to do for
the http stuff that I am doing, but I can't get it to work.

thanks, 

josť

I haven't tried Mango yet, but I'll test it with my Build utility today. Hopefully then all one would have to do is type in "build source" on the command line.

Excellent; let us know how it works out?

It works okay, not fine but just okay. With the current v1.2 of Build ( www.dsource.org ) you have to specify the directory in which the 'mango' tree is installed. For example, if I've installed mango into the directory C:\dlibs\ then the following command line works ... build msource -C:\dlibs BTW, the test source code I used is ... <code> module msource; private import mango.io.Buffer; private import std.stdio; void main() { Buffer B = new Buffer(4000); writefln("The buffer has readable:%d writeable:%d bytes.", B.readable, B.writable); } </code> For my first attempt to use build for mango apps, I edited the sc.ini file to include the mango lib path ... old: DFLAGS=-I% P%\..\src\phobos new: DFLAGS=-I% P%\..\src\phobos;c:\dlibs but this highlighted a bug in build; it didn't recognize semi-colon delimited flags. So I fixed that, but even though now 'build' could find the mango imports, 'dmd' still couldn't. So keeping the sc.ini file with the mango lib path in it, I tried invoking dmd with an explict -Ic:\dlibs on it and it worked! So my conclusion is that DMD does not use the sc.ini file correctly for DFLAG options. I have now updated build to explicitly add an DFLAG options in to the dmd command line it invokes, and now it works just fine. In other words, after updating your sc.ini file to include the mango path, all you will have to do to compile an app that uses mango is ... build msource Works a treat! :D I'll upload BUILD v1.3 later today, as I'll play with this workaround a bit more first.

Great work, Derek! Building Mango is an excellent stress test for build. If you've succeeded there, that's good news. A question: Mango typically uses some commandline "-version" switches like -version=Mango and -version=Posix (for linux). I guess these statements will be needed to include some appropriate code in the build. How does build handle this? I assume we pass-thru to the compiler somehow? - John R.

Sure, just pass them on the build command line... build mysource -version=Mango -version=Posix However, I've been thinking I might automatically set the Posix version if it runs on a linux system...dunno, I'll take some advice on that. Also, I've been thinking enabling build to use a response file, so that you could do something like ... build unix and it would get its command line options from a file called 'unix.brf' and that would look like ... mysource -version=Mango -version=Posix Anyhow, these are just ideas for now. -- Derek Melbourne, Australia 23/02/2005 1:11:40 PM
Feb 22 2005
next sibling parent Kris <Kris_member pathlink.com> writes:
In article <bk9if392o44n$.m4hj3a7491bs.dlg 40tude.net>, Derek Parnell says...
 <snip>

Sure, just pass them on the build command line...

   build mysource -version=Mango -version=Posix

Awesome!
However, I've been thinking I might automatically set the Posix version if
it runs on a linux system...dunno, I'll take some advice on that.

Get's my vote. Just as Win32 should be the default on that platform?
Also, I've been thinking enabling build to use a response file, so that you
could do something like ...

   build  unix
 and it would get its command line options from a file called 'unix.brf'
and that would look like ...

Sounds good! Though the .brf is perhaps a bit chundery :~o
Feb 22 2005
prev sibling parent Derek Parnell <derek psych.ward> writes:
On Wed, 23 Feb 2005 13:17:15 +1100, Derek Parnell wrote:

 
 Works a treat! :D
 



I've just got 'build' to compile all of mango and create a mango.lib by typing in ... build mango.d -allobj where mango.d just contains an import statement for each of the mango source files. I used all files so I didn't have to work out the minimum set based on internal dependencies. Anyhow, it worked! Compiled and created the lib in about 1 to 2 seconds. <code for mango.d> module mangolib; // Stops dmd complaining about // mango.d and mango/ coexisting! import mango.cluster.qos.socket.ClusterEvent; import mango.cluster.qos.socket.ClusterServer; import mango.cluster.qos.socket.ClusterThread; import mango.cluster.qos.socket.RollCall; import mango.cluster.qos.socket.ClusterCache; import mango.cluster.qos.socket.ProtocolReader; import mango.cluster.qos.socket.ProtocolWriter; import mango.cluster.qos.socket.Cluster; import mango.http.server.model.IProvider; import mango.http.server.model.IProviderBridge; import mango.http.server.HttpParams; import mango.http.server.HttpProvider; import mango.http.server.HttpResponse; import mango.http.client.HttpClient; import mango.cluster.model.IConsumer; import mango.http.server.HttpRequest; import mango.http.server.HttpMessage; import mango.cluster.model.ICluster; import mango.io.model.IConduit; import mango.servlet.model.IServletRequest; import mango.servlet.model.IServletResponse; import mango.cluster.model.IEvent; import mango.log.model.ILevel; import mango.http.utils.Dictionary; import mango.cluster.model.IMessage; import mango.cache.model.IPayload; import mango.io.model.IPickle; import mango.http.server.HttpCookies; import mango.http.server.HttpHeaders; import mango.cluster.model.IChannel; import mango.io.model.IResource; import mango.utils.model.IServer; import mango.http.server.HttpServer; import mango.http.server.HttpThread; import mango.io.model.IWriter; import mango.http.server.HttpBridge; import mango.io.model.IBitBucket; import mango.http.utils.TokenStack; import mango.http.server.HttpTokens; import mango.cache.model.ICache; import mango.io.model.IReader; import mango.log.model.ILogger; import mango.io.model.IBuffer; import mango.io.Buffer; import mango.log.ConsoleAppender; import mango.io.FileSystem; import mango.log.Appender; import mango.io.ArrayAllocator; import mango.base.ByteSwap; import mango.cluster.CacheInvalidatee; import mango.cache.HashMap; import mango.log.Hierarchy; import mango.http.HttpWriter; import mango.io.AbstractReader; import mango.http.HttpReader; import mango.io.AbstractWriter; import mango.log.Admin; import mango.io.Conduit; import mango.io.ConduitStyle; import mango.log.Configurator; import mango.icu.ICU; import mango.io.DatagramSocket; import mango.log.DateLayout; import mango.utils.HeapSlice; import mango.io.DisplayWriter; import mango.io.EndianReader; import mango.io.EndianWriter; import mango.log.Event; import mango.io.Exception; import mango.io.ColumnWriter; import mango.io.FileBucket; import mango.io.FileConduit; import mango.io.FilePath; import mango.io.FileProxy; import mango.io.FileStyle; import mango.log.Layout; import mango.log.Logger; import mango.log.Manager; import mango.cluster.Message; import mango.io.MulticastSocket; import mango.cluster.NetworkAlert; import mango.utils.AbstractServer; import mango.log.FileAppender; import mango.cache.Payload; import mango.io.PickleReader; import mango.io.PickleRegistry; import mango.io.PickleWriter; import mango.cache.PlainCache; import mango.io.Properties; import mango.cluster.CacheInvalidator; import mango.cluster.Client; import mango.cache.QueuedCache; import mango.utils.Random; import mango.io.Reader; import mango.io.Resource; import mango.cluster.NetworkQueue; import mango.log.RollingFileAppender; import mango.io.ServerSocket; import mango.utils.ServerThread; import mango.servlet.Servlet; import mango.servlet.ServletConfig; import mango.servlet.ServletContext; import mango.servlet.ServletProvider; import mango.servlet.ServletRequest; import mango.servlet.ServletResponse; import mango.io.Socket; import mango.log.SocketAppender; import mango.io.SocketConduit; import mango.io.SocketListener; import mango.io.Stdio; import mango.base.System; import mango.cluster.TaskServer; import mango.utils.Text; import mango.io.TextFormat; import mango.io.TextLayout; import mango.io.TextReader; import mango.io.TextWriter; import mango.utils.Timer; import mango.io.Token; import mango.io.TokenEx; import mango.io.Tokenizer; import mango.cluster.NetworkCache; import mango.icu.UBreakIterator; import mango.icu.UCalendar; import mango.icu.UChar; import mango.icu.UCollator; import mango.icu.UConverter; import mango.icu.UDateFormat; import mango.icu.UDomainName; import mango.icu.UEnumeration; import mango.icu.ULocale; import mango.icu.UMango; import mango.icu.UMessageFormat; import mango.icu.UNormalize; import mango.icu.UNumberFormat; import mango.icu.UResourceBundle; import mango.io.Uri; import mango.icu.USearch; import mango.icu.USet; import mango.icu.UString; import mango.icu.UStringPrep; import mango.io.Utf8; import mango.icu.UTimeZone; import mango.icu.UTransform; import mango.cache.VirtualCache; import mango.io.Writer; import mango.log.XmlLayout; </code> -- Derek Melbourne, Australia 23/02/2005 3:08:48 PM
Feb 22 2005