I use a secondary unit as alias of all separate units as Marco suggests in<div id="yMail_cursorElementTracker_1602017194161"><br></div><div id="yMail_cursorElementTracker_1602017194818"><a id="linkextractor__1602017422584" data-yahoo-extracted-link="true" href="https://github.com/fanoframework/fano/blob/master/src/fano.pas" class="lEnhancr_1602017424159">https://github.com/fanoframework/fano/blob/master/src/fano.pas</a></div><div id="yMail_cursorElementTracker_1602017422633"><br></div><div id="yMail_cursorElementTracker_1602017423031">However I am curious if merging units like this has drawback. AFAIK smart linking works.<br><br><div id="ymail_android_signature"><a id="ymail_android_signature_link" href="https://go.onelink.me/107872968?pid=InProduct&c=Global_Internal_YGrowth_AndroidEmailSig__AndroidUsers&af_wl=ym&af_sub1=Internal&af_sub2=Global_YGrowth&af_sub3=EmailSignature">Sent from Yahoo Mail on Android</a></div> <br> <blockquote style="margin: 0 0 20px 0;"> <div style="font-family:Roboto, sans-serif; color:#6D00F6;"> <div>On Sat, Oct 3, 2020 at 3:31, Marco van de Voort via fpc-pascal</div><div><fpc-pascal@lists.freepascal.org> wrote:</div> </div> <div style="padding: 10px 0 0 20px; margin: 10px 0 0 0; border-left: 1px solid #6D00F6;"> <br clear="none">Op 2020-10-02 om 19:55 schreef Ryan Joseph via fpc-pascal:<br clear="none">> Something that's bothered me for a while I wanted to ask about.<br clear="none">><br clear="none">> I have a package I want to distribute which has 2 or more units, all of which are required to use the package. Technically all the code should be in one file but because units are a nice feature of Pascal we like to keep our code separate when we develop.<br clear="none">><br clear="none">> Usually what happens is we compromise and do either:<br clear="none">><br clear="none">> 1) Have the user of the package add all the units to the uses clause of every file which needs it. This is annoying for the user because it bloats the uses section but for the developer our code is nicely separated into units.<br clear="none">><br clear="none">> 2) Break the units into include files and wrap the interface/implementation blocks in ifdefs. This is nice for the user because they only have a single unit to use but now the developers of the package have to work in what are essentially header files (like in C). The RTL is of course filled with examples like this.<br clear="none"><br clear="none">In some cases you can also move types and consts to a secondary unit, <br clear="none">but alias them in the primary one.<br clear="none"><br clear="none">Like e.g. Unixtype (what unit you say? Never heard of it? That is <br clear="none">because the types are aliased into core units baseunix and unix)<div class="yqt9641927114 yQTDBase" id="yqtfd93774"><br clear="none">_______________________________________________<br clear="none">fpc-pascal maillist  -  <a shape="rect" ymailto="mailto:fpc-pascal@lists.freepascal.org" href="mailto:fpc-pascal@lists.freepascal.org">fpc-pascal@lists.freepascal.org</a><br clear="none"><a shape="rect" href="https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal" target="_blank">https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal</a><br clear="none"></div> </div> </blockquote></div>