<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Mark,</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
To be clear, I would first try patching the Makefile by deleting all the system header dependencies from the Makefile and then see if  Macports will build the project.  But make sure the Makefile lists the location of all the directories where the header files
 are located.  (I typically place them in $(INCLUDES)).  And make sure the rules contain $(INCLUDES).</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<b style="background-color:rgb(255, 255, 255)">You typically do not need to list the directories of the system header files
</b><span style="background-color:rgb(255, 255, 255);display:inline !important">because the compiler typically knows where they are (which as you know may change from MacOS to MacOS).</span><br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<span style="background-color:rgb(255, 255, 255);display:inline !important"><br>
</span></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<span style="background-color:rgb(255, 255, 255);display:inline !important">If you want to know why, keep reading....</span></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Typically "make" only needs to know the following to build the initial Project from scratch:</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<div>
<ol>
<li style="margin:0in 0in 0in -0.25in"><span><span> The rules that define what source code files are needed to build each object and a rule for linking the object files and <span style="text-align:start;background-color:rgb(255, 255, 255);display:inline !important">the
 location of the directories for the header files (e.g. main.h).  </span></span><br>
</span></li></ol>
</div>
<blockquote style="margin-top:0;margin-bottom:0">
<div><span>e.g</span></div>
</blockquote>
<div><span><br>
</span></div>
<div><span><span>         <span style="background-color:rgb(255, 255, 255);display:inline !important">INCLUDES := -I./ </span></span></span></div>
<blockquote style="margin-top:0;margin-bottom:0">
<div><span><span><br>
</span></span></div>
<div><span><span>.PHONY all</span></span></div>
</blockquote>
<div><span><span><br>
</span></span></div>
<div><span><span><span>      </span><span>   all:  edit</span></span></span></div>
<div><span><span><span>   </span><br>
</span></span></div>
<blockquote style="margin-top:0;margin-bottom:0">
<div><span><span>edit:  main.o kdb.o</span></span></div>
</blockquote>
<blockquote style="margin-top:0;margin-bottom:0">
<blockquote style="margin-top:0;margin-bottom:0">
<div><span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;">$(CC) $(LDFLAGS) </span><span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;">-o main.o kbd.o</span></div>
</blockquote>
</blockquote>
<div><span><span><br>
</span></span></div>
<div><span><span>         </span></span><span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;">main.o: main.c myfunc.c</span></div>
<blockquote style="margin-top:0;margin-bottom:0">
<blockquote style="margin-top:0;margin-bottom:0">
<div><span style="color: rgb(0, 0, 0); font-size: 12pt; font-family: Calibri, Helvetica, sans-serif;">$(CC) $(CFLAGS) $(INCLUDES)</span><span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;"> -c main.c myfunc.c</span></div>
<div><span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;"><br>
</span></div>
</blockquote>
<div><span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;">kbd.o: kbd.c</span></div>
<blockquote style="margin-top:0;margin-bottom:0">
<div><span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;">$(CC) $(CFLAGS) $(INCLUDES)</span><span style="color: rgb(0, 0, 0); font-size: 12pt; font-family: Calibri, Helvetica, sans-serif;"> -c kbd.c</span></div>
</blockquote>
</blockquote>
<blockquote style="margin-top:0;margin-bottom:0">
<div><br>
</div>
</blockquote>
<div><span><span><br>
</span></span></div>
<div><span><span>In the example above, the directories of the header files are in listed in $(INCLUDES).</span></span>   </div>
<div><span><span><br>
</span></span></div>
<div><span><b>You do not need to list the directories of the system header files in $(INCLUDES)</b> because the compiler knows where they are (which as you know may change from MacOS to MacOS).</span></div>
<div><span><span><br>
</span></span></div>
<div><span><span>Ideally, if you know that a particular header is a dependency for an object, it is better to list it in the rule (e.g.  main.o:  main.c myfunc.c main.h)  OR create a separate rule for the header dependency:</span></span></div>
<div><span><span><br>
</span></span></div>
<blockquote style="margin-top:0;margin-bottom:0">
<div><span><span>main.o:  main.h</span></span></div>
</blockquote>
<div><span><span><br>
</span></span></div>
<div><b>But these header dependency rules are typically not needed to build the initial project from scratch!</b>  These rules exist so "make" will only
<b><u>rebuild</u></b> the minimum number of objects when a header file has changed.</div>
<div><span><span><br>
</span></span></div>
<div><span><span>E.g.  If I change header.h and then run "make all" again in the above example, make will only recompile main.o and then it will link main.o with the previously built kbd.o.  kbd.o does not need to be recompiled.  This saves time.  Great for
 development!</span></span></div>
<div><span><span><br>
</span></span></div>
<div><span><span><span style="background-color:rgb(255, 255, 255);display:inline !important">Macports does not do this.  It typically will rebuild the whole project from scratch. (i.e. build all the objects and then link them into the final product).</span></span></span></div>
<div><span><span><span style="background-color:rgb(255, 255, 255);display:inline !important"><br>
</span></span></span></div>
<div><span><span><span style="background-color:rgb(255, 255, 255);display:inline !important">In my view, Macports was not designed for development but for building a finished project and making a binary package.  (i.e. package management)</span></span></span></div>
<div><span><span><br>
</span></span></div>
<div><span><span>If you are still having problems, please EMAIL me the Makefile and I will take a look.</span></span></div>
<div><span><span><br>
</span></span></div>
<div><span><span>RobK88</span></span></div>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> macports-dev <macports-dev-bounces@lists.macports.org> on behalf of Robert Kennedy <amtor@hotmail.com><br>
<b>Sent:</b> August 2, 2022 8:10 AM<br>
<b>To:</b> Mark Brethen <mark.brethen@gmail.com>; MacPorts Developers <macports-dev@lists.macports.org><br>
<b>Subject:</b> Re: include files for cgxCADTools</font>
<div> </div>
</div>
<style type="text/css" style="display:none">
<!--
p
        {margin-top:0;
        margin-bottom:0}
-->
</style>
<div dir="ltr">
<div class="x_elementToProof" style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
Mark,</div>
<div class="x_elementToProof" style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div class="x_elementToProof" style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
I agree with Josh, these headers look like they were automatically generated using something like "make depends".  </div>
<div class="x_elementToProof" style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div class="x_elementToProof" style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
When creating a Makefile, it is GOOD practice to include these lines as it will ensure that the Project will rebuild the correct files when a header file was changed.  Since it is a REAL pain to create them manually.  Many developers use something like "make
 depends".</div>
<div class="x_elementToProof" style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div class="x_elementToProof" style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
If there is a "depends:" target in the Makefile, you could patch the Makefile and add "depends" as the first Phony target to the "all:" target.  e.g.  </div>
<div class="x_elementToProof" style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div class="x_elementToProof" style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
all:  depends main etc etc</div>
<div class="x_elementToProof" style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div class="x_elementToProof" style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
Alternatively, you could try just patching the Makefile by removing all these lines (and any other line where a system header is the ONLY dependency in the rule). 
<b>The vast majority of time, they are NOT needed to build the initial project.</b>  (They are needed if you want to use "make" to rebuild your project properly on subsequent runs where the developer has changed one of more of these system header files.  This
 is not a normal scenario if one is using Macports to build the project).</div>
<div class="x_elementToProof" style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div class="x_elementToProof" style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
The most important rules are the rules involving the source code files (which must be kept).  </div>
<div class="x_elementToProof" style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
e.g.  $(OBJDIR-MAIN)/%.o: %.c<br>
<blockquote style="margin-top:0; margin-bottom:0">      $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@</blockquote>
<div><br>
</div>
<div>Make sure the Makfile has an "INCLUDES:" that lists the location of all the header files.  If it does, make will find them and build the initial project!</div>
<div><br>
</div>
</div>
<div class="x_elementToProof" style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
e.g. I am working on a new port where I converted an Xcode project to one using a Makefile.  I used "make depends" to generate these dependencies, Macports built the code just fine when I either:</div>
<div class="x_elementToProof" style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<ol>
<li><span>Deleted all the lines below "# DO NOT DELETE THIS LINE -- make depend needs it"; or</span></li><li><span>Added "depends" as the first phony target to the all: phoney target </span></li></ol>
<blockquote style="margin-top:0; margin-bottom:0">
<blockquote style="margin-top:0; margin-bottom:0">
<div>e.g. all: depends utils altivec mpeg2enc main $(PRODUCT)</div>
<div><br>
</div>
</blockquote>
<div>You could even patch the Makefile and add another target called "macports" and tell Macports to build that:</div>
</blockquote>
<div><br>
</div>
<blockquote style="margin-top:0; margin-bottom:0">
<div><span>      macports:  depends all</span><br>
</div>
</blockquote>
<div><span><br>
</span></div>
<div><span> <span>     And in the portfile, you would add:</span></span></div>
<div><span><span><br>
</span></span></div>
<blockquote style="margin-top:0; margin-bottom:0">
<div><span><span>build.target        macports<br>
</span></span></div>
</blockquote>
<div><span><span><br>
</span></span></div>
<div>Good luck,<br>
</div>
<div><span><span><br>
</span></span></div>
<div><span><span>Rob</span></span></div>
<div><span><span><br>
</span></span></div>
<div><span><span><br>
</span></span></div>
</div>
<div id="x_appendonsend"></div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>From:</b> macports-dev <macports-dev-bounces@lists.macports.org> on behalf of Mark Brethen <mark.brethen@gmail.com><br>
<b>Sent:</b> August 1, 2022 8:51 PM<br>
<b>To:</b> MacPorts Developers <macports-dev@lists.macports.org><br>
<b>Subject:</b> Re: include files for cgxCADTools</font>
<div> </div>
</div>
<div class="x_BodyFragment"><font size="2"><span style="font-size:11pt">
<div class="x_PlainText">I’ll ask the developer<br>
<br>
Sent from my iPhone<br>
<br>
> On Aug 1, 2022, at 4:53 PM, Joshua Root <jmr@macports.org> wrote:<br>
> <br>
> A lot of them aren't even standard headers; I believe the ones under bits/ are glibc implementation details. I would suspect this part of the Makefile was not hand-written but generated with one of the compiler's -M options. To work correctly in that case,
 it would need to be regenerated for each new system the software is built on.<br>
> <br>
> - Josh<br>
> <br>
>> On 2022-8-2 05:23 , Chris Jones wrote:<br>
>> The makefile here is very poorly written. You should never directly reference standard headers like that…<br>
>>>> On 1 Aug 2022, at 4:52 pm, Mark Brethen <mark.brethen@gmail.com> wrote:<br>
>>> <br>
>>> This Makefile has the following lines:<br>
>>> <br>
>>> CadReader.o: /usr/include/stdlib.h /usr/include/bits/libc-header-start.h<br>
>>> CadReader.o: /usr/include/features.h /usr/include/stdc-predef.h<br>
>>> CadReader.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h<br>
>>> CadReader.o: /usr/include/bits/long-double.h /usr/include/gnu/stubs.h<br>
>>> CadReader.o: /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h<br>
>>> CadReader.o: /usr/include/bits/floatn.h /usr/include/sys/types.h<br>
>>> CadReader.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h<br>
>>> CadReader.o: /usr/include/bits/types/clock_t.h<br>
>>> CadReader.o: /usr/include/bits/types/clockid_t.h<br>
>>> CadReader.o: /usr/include/bits/types/time_t.h<br>
>>> CadReader.o: /usr/include/bits/types/timer_t.h<br>
>>> CadReader.o: /usr/include/bits/stdint-intn.h /usr/include/endian.h<br>
>>> CadReader.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h<br>
>>> CadReader.o: /usr/include/bits/byteswap-16.h<br>
>>> CadReader.o: /usr/include/bits/uintn-identity.h /usr/include/sys/select.h<br>
>>> CadReader.o: /usr/include/bits/select.h /usr/include/bits/types/sigset_t.h<br>
>>> CadReader.o: /usr/include/bits/types/__sigset_t.h<br>
>>> CadReader.o: /usr/include/bits/types/struct_timeval.h<br>
>>> CadReader.o: /usr/include/bits/types/struct_timespec.h<br>
>>> CadReader.o: /usr/include/sys/sysmacros.h /usr/include/bits/sysmacros.h<br>
>>> CadReader.o: /usr/include/bits/pthreadtypes.h<br>
>>> CadReader.o: /usr/include/bits/thread-shared-types.h<br>
>>> CadReader.o: /usr/include/bits/pthreadtypes-arch.h /usr/include/alloca.h<br>
>>> CadReader.o: /usr/include/bits/stdlib-float.h<br>
>>> <br>
>>> /usr/include doesn’t exist on Big Sure (I assume its deprecated?) however, they can be found at<br>
>>> <br>
>>> ~ $ xcrun --sdk macosx --show-sdk-path<br>
>>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk<br>
>>> <br>
>>> although I don’t see a ‘bits’ subdirectory. Has it been relocated?<br>
>>> <br>
>>> Thanks,<br>
>>> Mark<br>
>>> <br>
>>> <br>
>>> <br>
> <br>
</div>
</span></font></div>
</div>
</body>
</html>