<html><head><base href="x-msg://264/"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">OK, so what you want is for the build system (cm3/src/M3Build.m3) to pass a flag saying that a given module is package visible.  Shouldn't be too hard to do.<div><br>
<br><div><div>On 12 Jul 2010, at 20:50, Jay K wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div class="hmmessage" style="font-size: 10pt; font-family: Tahoma; ">I think it'd be another boolean or expansion of a boolean to an integer to declare/import/begin_procedure/constant/variable.<br>Not passing all the files at once.<br> <br> <br>Passing all the files at once is attractive for reasons of compilation perf and optimizing codegen but I believe it requires a lot of other work.<br> <br> <br>Similarly, passing all the C files at once to the C compiler is also attractive, and more work.<br> <br> <br>LTCG/LTO provide similar benefits, but we aren't setup to use LTO and honestly I'm trying to ignore it.<br>I'll settle for -O1/2/3.<br> <br> <br> - Jay<br> <br><hr id="stopSpelling">Subject: Re: [M3devel] import from same .so or not<br>From:<span class="Apple-converted-space"> </span><a href="mailto:hosking@cs.purdue.edu">hosking@cs.purdue.edu</a><br>Date: Mon, 12 Jul 2010 20:14:39 -0400<br>CC:<span class="Apple-converted-space"> </span><a href="mailto:m3devel@elegosoft.com">m3devel@elegosoft.com</a><br>To:<span class="Apple-converted-space"> </span><a href="mailto:jay.krell@cornell.edu">jay.krell@cornell.edu</a><br><br>There question is where and how to communicate it back to gcc.  Does it mean putting all the module units on the same command line for compilation by a single instance of cm3cg?  Or do you communicate it some other way?<br><br><div><div>On 12 Jul 2010, at 19:53, Jay K wrote:</div><br class="ecxApple-interchange-newline"><blockquote><span class="ecxApple-style-span" style="text-transform: none; text-indent: 0px; border-collapse: separate; font: normal normal normal medium/normal Helvetica; white-space: normal; letter-spacing: normal; word-spacing: 0px; "><div class="ecxhmmessage" style="font-family: Tahoma; font-size: 10pt; ">I don't know. I hope not. The information is there: lowercase interface vs. uppercase Interface, lowercase module vs. uppercase Module, derived_interface(hidden or private).<br>I haven't looked at where all it is sent around.<br> <br> - Jay<br><br> <br>> Subject: Re: [M3devel] import from same .so or not<br>> From:<span class="ecxApple-converted-space"> </span><a href="mailto:hosking@cs.purdue.edu">hosking@cs.purdue.edu</a><br>> Date: Mon, 12 Jul 2010 09:28:43 -0400<br>> CC:<span class="ecxApple-converted-space"> </span><a href="mailto:m3devel@elegosoft.com">m3devel@elegosoft.com</a><br>> To:<span class="ecxApple-converted-space"> </span><a href="mailto:jay.krell@cornell.edu">jay.krell@cornell.edu</a><br>><span class="ecxApple-converted-space"> </span><br>> It seems to me this would require massive reworking of the build infrastructure!<br>><span class="ecxApple-converted-space"> </span><br>> On 11 Jul 2010, at 21:58, Jay K wrote:<br>><span class="ecxApple-converted-space"> </span><br>> ><span class="ecxApple-converted-space"> </span><br>> > It seems to me, an important bit of information is not provided to the backend.<br>> ><span class="ecxApple-converted-space"> </span><br>> > The backend is told "import" or "export".<br>> > But this is about "modules", .m3 files to .m3 files.<br>> ><span class="ecxApple-converted-space"> </span><br>> > It isn't about .so files to .so files, or .dlls to .dlls.<br>> ><span class="ecxApple-converted-space"> </span><br>> > It's really tristate, not boolean:<br>> > private to just this source file<span class="ecxApple-converted-space"> </span><br>> > private to this source file and those it statically links to<span class="ecxApple-converted-space"> </span><br>> > public for all<span class="ecxApple-converted-space"> </span><br>> ><span class="ecxApple-converted-space"> </span><br>> > Granted, you might statically link "everything".<br>> > There isn't enforcement of the middle state, and symbols still need to be as unique as the third state.<br>> > But it is definitely useful.<br>> ><span class="ecxApple-converted-space"> </span><br>> > In particular we don't use DECL_VISIBILITY (p) = VISIBILITY_HIDDEN enough.<br>> > For a long time we never used it. e.g. in the release branch.<br>> ><span class="ecxApple-converted-space"> </span><br>> > Agreed?<br>> > Anyone volunteer to fix?<br>> > Or mind if I try?<br>> ><span class="ecxApple-converted-space"> </span><br>> ><span class="ecxApple-converted-space"> </span><br>> > - Jay<br>> ><span class="ecxApple-converted-space"> </span><br>> ><span class="ecxApple-converted-space"> </span><br>><span class="ecxApple-converted-space"> </span><br></div></span></blockquote></div><br></div></span><br class="Apple-interchange-newline"></blockquote></div><br></div></body></html>