* packages @ 2006-12-20 21:11 markww [not found] ` <mailman.4.1166651673.18371.comp.lang.ada@ada-france.org> 0 siblings, 1 reply; 9+ messages in thread From: markww @ 2006-12-20 21:11 UTC (permalink / raw) Hi, I wrote a package to be included with my main program, my directory looks like: generic_list.ads // package def generic_list.adb // package body AdaGenericLinkedList.adb // my main program Now I need all three to be present in the same directory to compile the main adb file with gnat make. I see some websites suggesting Ada's compilation method is different than C++'s, as in you don't need all the package parts to be present in order to compile successfully, but that doesn't seem to be the case here (if I remove generic_list.ads / adb compilation fails). Is there some other compilation style which lets you segment out some files somehow? Thanks, Mark ^ permalink raw reply [flat|nested] 9+ messages in thread
[parent not found: <mailman.4.1166651673.18371.comp.lang.ada@ada-france.org>]
* Re: packages [not found] ` <mailman.4.1166651673.18371.comp.lang.ada@ada-france.org> @ 2006-12-20 22:03 ` markww 2006-12-21 9:04 ` packages Martin Krischik 2006-12-21 9:04 ` packages Martin Krischik 2006-12-21 9:01 ` packages Martin Krischik 1 sibling, 2 replies; 9+ messages in thread From: markww @ 2006-12-20 22:03 UTC (permalink / raw) Björn Lundin wrote: > 20 dec 2006 kl. 22.11 skrev markww: > > > Hi, > > > > I wrote a package to be included with my main program, my directory > > looks like: > > > > generic_list.ads // package def > > generic_list.adb // package body > > AdaGenericLinkedList.adb // my main program > > > > Now I need all three to be present in the same directory to compile > > the > > main adb file with gnat make. > > gnatmake compiles AND builds for you > > try moving generic_list.adb and then _compile_ AdaGenericLinked_List.adb > > gcc -c AdaGenericLinked_List.adb > > You should get an object file of that. But to link, you need the > generic_list.adb too > > > > /Björn > > Björn Lundin > b dot f dot lundin at gmail dot com > > > > > --Apple-Mail-1--634177642 > Content-Type: text/html; charset=ISO-8859-1 > Content-Transfer-Encoding: quoted-printable > X-Google-AttachSize: 3765 > > <HTML><BODY style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space; "><BR><DIV><DIV>20 dec 2006 kl. 22.11 skrev markww:</DIV><BR class="Apple-interchange-newline"><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Hi,</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">I wrote a package to be included with my main program, my directory</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">looks like:</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-converted-space"> </SPAN>generic_list.ads<SPAN class="Apple-converted-space"> </SPAN>// package def</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-converted-space"> </SPAN>generic_list.adb<SPAN class="Apple-converted-space"> </SPAN>// package body</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-converted-space"> </SPAN>AdaGenericLinkedList.adb // my main program</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Now I need all three to be present in the same directory to compile the</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">main adb file with gnat make. <BR></DIV></BLOCKQUOTE><DIV><BR class="khtml-block-placeholder"></DIV><DIV>gnatmake compiles AND builds for you</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>try moving generic_list.adb and then _compile_ AdaGenericLinked_List.adb</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>gcc -c AdaGenericLinked_List.adb</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>You should get an object file of that. But to link, you need the generic_list.adb too</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><BR class="khtml-block-placeholder"></DIV></DIV><BR><DIV> <SPAN class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">/Björn</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><BR class="khtml-block-placeholder"></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Björn Lundin</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">b dot f dot lundin at gmail dot com</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><BR class="khtml-block-placeholder"></DIV><BR class="Apple-interchange-newline"></SPAN> </DIV><BR></BODY></HTML> > --Apple-Mail-1--634177642-- Ohh I see so you can compile with only the package *specification* but in order to finalize by linking then you do need the pacakage body? Thanks ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: packages 2006-12-20 22:03 ` packages markww @ 2006-12-21 9:04 ` Martin Krischik 2006-12-22 9:44 ` inline expansion Stephen Leake 2006-12-21 9:04 ` packages Martin Krischik 1 sibling, 1 reply; 9+ messages in thread From: Martin Krischik @ 2006-12-21 9:04 UTC (permalink / raw) To: markww markww schrieb: > Bj�rn Lundin wrote: > > Ohh I see so you can compile with only the package *specification* but > in order to finalize by linking then you do need the pacakage body? No, see my other post. Note that GNAT can't do inline expansion without the body - other Ada compiler are better in that respect. Martin ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: inline expansion 2006-12-21 9:04 ` packages Martin Krischik @ 2006-12-22 9:44 ` Stephen Leake 2006-12-22 10:57 ` Markus E Leypold 0 siblings, 1 reply; 9+ messages in thread From: Stephen Leake @ 2006-12-22 9:44 UTC (permalink / raw) Martin Krischik <krischik@users.sourceforge.net> writes: > Note that GNAT can't do inline expansion without the body - other Ada > compiler are better in that respect. How can you do inline expansion without the code that is being inlined? -- -- Stephe ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: inline expansion 2006-12-22 9:44 ` inline expansion Stephen Leake @ 2006-12-22 10:57 ` Markus E Leypold 2006-12-25 13:53 ` Hyman Rosen 0 siblings, 1 reply; 9+ messages in thread From: Markus E Leypold @ 2006-12-22 10:57 UTC (permalink / raw) Stephen Leake <stephen_leake@stephe-leake.org> writes: > Martin Krischik <krischik@users.sourceforge.net> writes: > >> Note that GNAT can't do inline expansion without the body - other Ada >> compiler are better in that respect. > > How can you do inline expansion without the code that is being > inlined? By not using the usual object files (which are mostly a memory image plus relocation info), instead storing a more highlevel description of the compiled code and doing inlining during linking? I admit I don't know what I'm talking about, but that would be how I'd try to implement this feature. Regards -- Markus ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: inline expansion 2006-12-22 10:57 ` Markus E Leypold @ 2006-12-25 13:53 ` Hyman Rosen 0 siblings, 0 replies; 9+ messages in thread From: Hyman Rosen @ 2006-12-25 13:53 UTC (permalink / raw) Markus E Leypold wrote: > By not using the usual object files (which are mostly a memory image > plus relocation info), instead storing a more highlevel description of > the compiled code and doing inlining during linking? That's not unlike how the C++ compiler which implements "export" for templates does it. But of course, doing this means that the implementors have to invent yet another intermediate format and a set of tools to deal with it. Since the source code is a perfectly good representation of what needs to be inlined, there's no real need to do all that work. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: packages 2006-12-20 22:03 ` packages markww 2006-12-21 9:04 ` packages Martin Krischik @ 2006-12-21 9:04 ` Martin Krischik 1 sibling, 0 replies; 9+ messages in thread From: Martin Krischik @ 2006-12-21 9:04 UTC (permalink / raw) markww schrieb: > Bj�rn Lundin wrote: > > Ohh I see so you can compile with only the package *specification* but > in order to finalize by linking then you do need the pacakage body? No, see my other post. Note that GNAT can't do inline expansion without the body - other Ada compiler are better in that respect. Martin ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: packages [not found] ` <mailman.4.1166651673.18371.comp.lang.ada@ada-france.org> 2006-12-20 22:03 ` packages markww @ 2006-12-21 9:01 ` Martin Krischik 2006-12-23 10:10 ` packages Simon Wright 1 sibling, 1 reply; 9+ messages in thread From: Martin Krischik @ 2006-12-21 9:01 UTC (permalink / raw) Bj�rn Lundin schrieb: > > 20 dec 2006 kl. 22.11 skrev markww: > >> Hi, >> >> I wrote a package to be included with my main program, my directory >> looks like: >> >> generic_list.ads // package def >> generic_list.adb // package body >> AdaGenericLinkedList.adb // my main program >> >> Now I need all three to be present in the same directory to compile the >> main adb file with gnat make. > > gnatmake compiles AND builds for you > > try moving generic_list.adb and then _compile_ AdaGenericLinked_List.adb > > gcc -c AdaGenericLinked_List.adb > > You should get an object file of that. But to link, you need the > generic_list.adb too Or alternativly the .o and .ali file created from generic_list. In case you don't want to distribute then .ads/.adb file. In short you need one of those to link: 1) .adb & .ads 2) .o & .ali 3) .lib & .ali 4) .dll/.so & .ali In C++ speak: the .ali files are kind of "precompiled header files". Also Note: This is the way GNAT implement the an Ada-Library-Manager. Other compiler might use different techniques. Martin ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: packages 2006-12-21 9:01 ` packages Martin Krischik @ 2006-12-23 10:10 ` Simon Wright 0 siblings, 0 replies; 9+ messages in thread From: Simon Wright @ 2006-12-23 10:10 UTC (permalink / raw) Martin Krischik <krischik@users.sourceforge.net> writes: > In short you need one of those to link: > > 1) .adb & .ads > 2) .o & .ali > 3) .lib & .ali > 4) .dll/.so & .ali If the OP's generic_list is really generic, doesn't he need both spec and body to do the instantiation? (with GNAT). ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2006-12-25 13:53 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2006-12-20 21:11 packages markww [not found] ` <mailman.4.1166651673.18371.comp.lang.ada@ada-france.org> 2006-12-20 22:03 ` packages markww 2006-12-21 9:04 ` packages Martin Krischik 2006-12-22 9:44 ` inline expansion Stephen Leake 2006-12-22 10:57 ` Markus E Leypold 2006-12-25 13:53 ` Hyman Rosen 2006-12-21 9:04 ` packages Martin Krischik 2006-12-21 9:01 ` packages Martin Krischik 2006-12-23 10:10 ` packages Simon Wright
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox