I solved the build issue I was having with CadReader. I now have a different 
problem with FbdReader using opencascade 7.6:

:info:build  :../../FbdReader/inc/FbdReader.hxx:1074:: 74fatal error:: 
'GeomAdaptor_HCurve.hxx' file not found
:info:build fatal error10:10: fatal error: 'GeomAdaptor_HCurve.hxx' file not 
found
:info:build : 'GeomAdaptor_HCurve.hxx' file not found
:info:build #include <GeomAdaptor_HCurve.hxx>
:info:build          ^~~~~~~~~~~~~~~~~~~~~~~~
:info:build #include <GeomAdaptor_HCurve.hxx>
:info:build          ^~~~~~~~~~~~~~~~~~~~~~~~
:info:build #include <GeomAdaptor_HCurve.hxx>
:info:build          ^~~~~~~~~~~~~~~~~~~~~~~~
:info:build  fatal error: 'GeomAdaptor_HCurve.hxx' file not found
:info:build #include <GeomAdaptor_HCurve.hxx>
:info:build          ^~~~~~~~~~~~~~~~~~~~~~~~

I found this in the release notes:
> Upgrade to OCCT 7.6.0
> 
>  <>Simplification of surface/curve adaptor
> 
> Interfaces Adaptor2d_Curve2d 
> <https://dev.opencascade.org/doc/refman/html/class_adaptor2d___curve2d.html>, 
> Adaptor3d_Curve 
> <https://dev.opencascade.org/doc/refman/html/class_adaptor3d___curve.html> 
> and Adaptor3d_Surface 
> <https://dev.opencascade.org/doc/refman/html/class_adaptor3d___surface.html> 
> now inherit Standard_Transient 
> <https://dev.opencascade.org/doc/refman/html/class_standard___transient.html> 
> and can be Handle-managed. No more necessary parallel hiererchy of classes 
> Adaptor2d_HCurve2d, Adaptor3d_HCurve and Adaptor3d_HSurface (generated from 
> generic templates by WOK) has been eliminated. Existing code using old Handle 
> classes should be updated to:
> 
> Rename occurrences of old names (remove H suffix); upgrade.bat could be used 
> for that purpose.
> Replace redundant calls to previously declared methods 
> .GetCurve2d()/.GetCurve()/.GetSurface() with the common operator->() syntax.
> Pay attention on code calling GetSurface()/GetCurve() methods of removed 
> handle classes. Such places should be replaced with Handle dereference.

I'll try patching the source. 

Thanks,
Mark
Mark Brethen
mark.bret...@gmail.com



> On Aug 3, 2022, at 10:18 AM, Mark Brethen <mark.bret...@gmail.com> wrote:
> 
> It turns out the headers were their, I just didn’t have access due to a 
> permissions setting on the ‘inc’ directory itself. There are quite a few 
> undefined symbols listed in the build log.
> 
> https://pastebin.com/dh1Wx67C <https://pastebin.com/dh1Wx67C>
> 
> 
> Mark Brethen
> mark.bret...@gmail.com <mailto:mark.bret...@gmail.com>
> 
> 
> 
>> On Aug 3, 2022, at 2:21 AM, Mark Brethen <mark.bret...@gmail.com 
>> <mailto:mark.bret...@gmail.com>> wrote:
>> 
>> I confirmed the bzip file contains the header files, however, the files are 
>> missing in the workpath. And there is nothing unusual in the log to explain 
>> what happened.
>> 
>> <main.log>
>> 
>> 
>> Mark Brethen
>> mark.bret...@gmail.com <mailto:mark.bret...@gmail.com>
>> 
>> 
>> 
>>> On Aug 2, 2022, at 6:20 PM, Robert Kennedy <am...@hotmail.com 
>>> <mailto:am...@hotmail.com>> wrote:
>>> 
>>> Mark,
>>> 
>>> I was able to spend more time with your Makefile.  I corrected some typos.
>>> 
>>> Attached is the FINAL Makefile Rev 4 along with the patch file (that will 
>>> patch the original Makefile)
>>> 
>>> It should work well for your purposes.
>>> 
>>> If you are having trouble with the extraction phase, please send me a copy 
>>> of your Portfile and I will take a look.  It can be frustrating when things 
>>> do not unpack as expected.\\
>>> 
>>> Rob
>>> 
>>> From: Mark Brethen <mark.bret...@gmail.com <mailto:mark.bret...@gmail.com>>
>>> Sent: August 2, 2022 4:51 PM
>>> To: Robert Kennedy <am...@hotmail.com <mailto:am...@hotmail.com>>
>>> Cc: MacPorts Developers <macports-dev@lists.macports.org 
>>> <mailto:macports-dev@lists.macports.org>>
>>> Subject: Re: include files for cgxCADTools
>>>  
>>> I found the issue: There should be header files in 
>>> ‘${workpath}/cgxCadTools/CadReader/inc’ but for some reason the extract 
>>> phase is omitting them, i.e. the ‘inc’ directory is empty.
>>> 
>>> Why would it be doing this?
>>> 
>>> 
>>> Mark Brethen
>>> mark.bret...@gmail.com <mailto:mark.bret...@gmail.com>
>>> 
>>> 
>>> 
>>>> On Aug 2, 2022, at 2:52 PM, Robert Kennedy <am...@hotmail.com 
>>>> <mailto:am...@hotmail.com>> wrote:
>>>> 
>>>> I missed one.  You also need to change:
>>>> 
>>>> $(CC) $(LDFLAGS) $(INCLUDES) -o $(MAIN) $(OBJS) $(LFLAGS) $(LIBS)
>>>> 
>>>> to
>>>> 
>>>> $(CCX) $(LDFLAGS) $(INCLUDES) -o $(MAIN) $(OBJS) $(LFLAGS) $(LIBS)
>>>> 
>>>> Rob
>>>> From: Robert Kennedy <am...@hotmail.com <mailto:am...@hotmail.com>>
>>>> Sent: August 2, 2022 3:46 PM
>>>> To: Mark Brethen <mark.bret...@gmail.com <mailto:mark.bret...@gmail.com>>
>>>> Subject: Re: include files for cgxCADTools
>>>>  
>>>> Mark,
>>>> 
>>>> Since it is a C++ project (not a C project), I modified the Makefile 
>>>> accordingly. See attached.
>>>> 
>>>> Please note that I added LDFLAGS = -stdlib=libc++ and added $LDFLAGS to 
>>>> the Makefile target that does the linking.
>>>> 
>>>> This is needed so the code will link properly on older macs (like my old 
>>>> Mac running Lion).
>>>> 
>>>> Alternatively, you could add the following to the Portfile:
>>>> configure.ldflags-append    "-stdlib=${configure.cxx_stdlib}"
>>>> 
>>>> Rob
>>>> 
>>>> From: Robert Kennedy <am...@hotmail.com <mailto:am...@hotmail.com>>
>>>> Sent: August 2, 2022 3:03 PM
>>>> To: Mark Brethen <mark.bret...@gmail.com <mailto:mark.bret...@gmail.com>>
>>>> Subject: Re: include files for cgxCADTools
>>>>  
>>>> I forgot to mention that I normally change all the CFLAGS and LDFLAGS as 
>>>> follows:
>>>> 
>>>> CFLAGS = blah blah
>>>> CFLAGS += blah blah
>>>> 
>>>> This will allow Macports to add its own flags.
>>>> 
>>>> You do not need to do that with CC or CCX.
>>>> 
>>>> Rob
>>>> From: Robert Kennedy <am...@hotmail.com <mailto:am...@hotmail.com>>
>>>> Sent: August 2, 2022 3:00 PM
>>>> To: Mark Brethen <mark.bret...@gmail.com <mailto:mark.bret...@gmail.com>>
>>>> Subject: Re: include files for cgxCADTools
>>>>  
>>>> Mark,
>>>> 
>>>> I could not get the patch file to patch the Makefile.  So I manually 
>>>> applied the patches.  And added my changes.  
>>>> 
>>>> Attached please find the FINAL Makefile and a patch file showing all the 
>>>> diffs (including yours) from the original Makefile.  
>>>> 
>>>> I also did the following:
>>>> Deleted all the dependencies, generated by makedepend below the "# DO NOT 
>>>> DELETE THIS LINE -- make depend needs it" line.
>>>> Added "macports" to .PHONY  (P.S.  PHONY targets provide rules that do not 
>>>> directly build or link real binary objects.  They call on other targets 
>>>> that build and link the actual code).
>>>> Added the "macports" target:
>>>> macports:   depend all  
>>>> The rule for the Macports target is:
>>>> 
>>>> macports:   depend all  
>>>> 
>>>> When make macports is run, it will first run the "depend" target in the 
>>>> Makefile and generate all the header dependencies and then it will run the 
>>>> "all" target to build and link the code.
>>>> 
>>>> Now you have two choices as far as Macports is concerned:
>>>> Just use the Makefile as is and see if the code builds and links.  It 
>>>> likely will unless you are missing a header directory in $(INCLUDES).  OR
>>>> Add the following to the Portfile which causes makedepend to run (which 
>>>> will generate all those dependencies) before compiling and linking the 
>>>> code:
>>>> depends_build       port:makedepend
>>>> build.target        macports
>>>> If the Makefile is doing all the building and linking for your Project, 
>>>> you should probably also add the following to the Portfile:
>>>> 
>>>> PortGroup           makefile 1.0
>>>> 
>>>> I am working with a similar Makefile.  Both approaches above work for me.  
>>>> Approach 1 runs a lot faster since it does not call on makedependto 
>>>> generate all those header dependencies (which can take some time for a 
>>>> large project).  And as mentioned in my previous posts to the Macports 
>>>> mailing list, the compiler typically does NOT need to know about these 
>>>> header dependencies to properly build and link the final binary product 
>>>> for the first time.  
>>>> 
>>>> But the compiler does need to know the location of all the directories 
>>>> where all the non-system headers can be found so when it processes an 
>>>> #include in a source file, it can find the needed header.  The $(INCLUDES) 
>>>> does not need to contain any of the directories where the system headers 
>>>> are located since the compiler knows where they are.  And as you found 
>>>> out, the location of the system headers will change from MacOS to MacOS.
>>>> 
>>>> I went with Approach 1 for my project.
>>>> 
>>>> P.S.  It looks like the project is using autotools or cmake to generate 
>>>> the Makefile so you likely need to patch the Makefile at the end of the 
>>>> configure stage or before building.  The most important thing is deleting 
>>>> all those header dependencies at the end of the Makefile.
>>>> 
>>>> Good Luck.
>>>> 
>>>> Rob
>>>> 
>>>> 
>>>> From: Mark Brethen <mark.bret...@gmail.com <mailto:mark.bret...@gmail.com>>
>>>> Sent: August 2, 2022 1:34 PM
>>>> To: Robert Kennedy <am...@hotmail.com <mailto:am...@hotmail.com>>
>>>> Subject: Re: include files for cgxCADTools
>>>>  
>>>> Rob,
>>>> 
>>>> There is the line '.PHONY: depend clean' but 'make all’ only calls 
>>>> $(MAIN). 
>>>> 
>>>> Thanks,
>>>> Mark
>>>> 
>>>> 
>>>> 
>>>>> On Aug 2, 2022, at 9:34 AM, Robert Kennedy <am...@hotmail.com 
>>>>> <mailto:am...@hotmail.com>> wrote:
>>>>> 
>>>>> Mark,
>>>>> 
>>>>> 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).
>>>>> 
>>>>> You typically do not need to list the directories of the system header 
>>>>> files because  the compiler typically knows where they are (which as you 
>>>>> know may change from MacOS to MacOS).
>>>>> 
>>>>> If you want to know why, keep reading....
>>>>> 
>>>>> Typically "make" only needs to know the following to build the initial 
>>>>> Project from scratch:
>>>>>  The rules that define what source code files are needed to build each 
>>>>> object and a rule for linking the object files and the location of the 
>>>>> directories for the header files (e.g. main.h).  
>>>>> e.g
>>>>> 
>>>>>          INCLUDES := -I./ 
>>>>> 
>>>>> .PHONY all
>>>>> 
>>>>>          all:  edit
>>>>>    
>>>>> edit:  main.o kdb.o
>>>>> $(CC) $(LDFLAGS) -o main.o kbd.o
>>>>> 
>>>>>          main.o: main.c myfunc.c
>>>>> $(CC) $(CFLAGS) $(INCLUDES) -c main.c myfunc.c
>>>>> 
>>>>> kbd.o: kbd.c
>>>>> $(CC) $(CFLAGS) $(INCLUDES) -c kbd.c
>>>>> 
>>>>> 
>>>>> In the example above, the directories of the header files are in listed 
>>>>> in $(INCLUDES).   
>>>>> 
>>>>> You do not need to list the directories of the system header files in 
>>>>> $(INCLUDES) because the compiler knows where they are (which as you know 
>>>>> may change from MacOS to MacOS).
>>>>> 
>>>>> 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:
>>>>> 
>>>>> main.o:  main.h
>>>>> 
>>>>> But these header dependency rules are typically not needed to build the 
>>>>> initial project from scratch!  These rules exist so "make" will only 
>>>>> rebuild the minimum number of objects when a header file has changed.
>>>>> 
>>>>> 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!
>>>>> 
>>>>> 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).
>>>>> 
>>>>> In my view, Macports was not designed for development but for building a 
>>>>> finished project and making a binary package.  (i.e. package management)
>>>>> 
>>>>> If you are still having problems, please EMAIL me the Makefile and I will 
>>>>> take a look.
>>>>> 
>>>>> RobK88
>>>>> From: macports-dev <macports-dev-boun...@lists.macports.org 
>>>>> <mailto:macports-dev-boun...@lists.macports.org>> on behalf of Robert 
>>>>> Kennedy <am...@hotmail.com <mailto:am...@hotmail.com>>
>>>>> Sent: August 2, 2022 8:10 AM
>>>>> To: Mark Brethen <mark.bret...@gmail.com 
>>>>> <mailto:mark.bret...@gmail.com>>; MacPorts Developers 
>>>>> <macports-dev@lists.macports.org <mailto:macports-dev@lists.macports.org>>
>>>>> Subject: Re: include files for cgxCADTools
>>>>>  
>>>>> Mark,
>>>>> 
>>>>> I agree with Josh, these headers look like they were automatically 
>>>>> generated using something like "make depends".  
>>>>> 
>>>>> 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".
>>>>> 
>>>>> 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.  
>>>>> 
>>>>> all:  depends main etc etc
>>>>> 
>>>>> 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).  The vast majority of time, they are NOT needed 
>>>>> to build the initial project.  (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).
>>>>> 
>>>>> The most important rules are the rules involving the source code files 
>>>>> (which must be kept).  
>>>>> e.g.  $(OBJDIR-MAIN)/%.o: %.c
>>>>>       $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
>>>>> 
>>>>> 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!
>>>>> 
>>>>> 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:
>>>>> Deleted all the lines below "# DO NOT DELETE THIS LINE -- make depend 
>>>>> needs it"; or
>>>>> Added "depends" as the first phony target to the all: phoney target 
>>>>> e.g. all: depends utils altivec mpeg2enc main $(PRODUCT)
>>>>> 
>>>>> You could even patch the Makefile and add another target called 
>>>>> "macports" and tell Macports to build that:
>>>>> 
>>>>>       macports:  depends all
>>>>> 
>>>>>       And in the portfile, you would add:
>>>>> 
>>>>> build.target        macports
>>>>> 
>>>>> Good luck,
>>>>> 
>>>>> Rob
>>>>> 
>>>>> 
>>>>> From: macports-dev <macports-dev-boun...@lists.macports.org 
>>>>> <mailto:macports-dev-boun...@lists.macports.org>> on behalf of Mark 
>>>>> Brethen <mark.bret...@gmail.com <mailto:mark.bret...@gmail.com>>
>>>>> Sent: August 1, 2022 8:51 PM
>>>>> To: MacPorts Developers <macports-dev@lists.macports.org 
>>>>> <mailto:macports-dev@lists.macports.org>>
>>>>> Subject: Re: include files for cgxCADTools
>>>>>  
>>>>> I’ll ask the developer
>>>>> 
>>>>> Sent from my iPhone
>>>>> 
>>>>> > On Aug 1, 2022, at 4:53 PM, Joshua Root <j...@macports.org 
>>>>> > <mailto:j...@macports.org>> wrote:
>>>>> > 
>>>>> > 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.
>>>>> > 
>>>>> > - Josh
>>>>> > 
>>>>> >> On 2022-8-2 05:23 , Chris Jones wrote:
>>>>> >> The makefile here is very poorly written. You should never directly 
>>>>> >> reference standard headers like that…
>>>>> >>>> On 1 Aug 2022, at 4:52 pm, Mark Brethen <mark.bret...@gmail.com 
>>>>> >>>> <mailto:mark.bret...@gmail.com>> wrote:
>>>>> >>> 
>>>>> >>> This Makefile has the following lines:
>>>>> >>> 
>>>>> >>> CadReader.o: /usr/include/stdlib.h 
>>>>> >>> /usr/include/bits/libc-header-start.h
>>>>> >>> CadReader.o: /usr/include/features.h /usr/include/stdc-predef.h
>>>>> >>> CadReader.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
>>>>> >>> CadReader.o: /usr/include/bits/long-double.h /usr/include/gnu/stubs.h
>>>>> >>> CadReader.o: /usr/include/bits/waitflags.h 
>>>>> >>> /usr/include/bits/waitstatus.h
>>>>> >>> CadReader.o: /usr/include/bits/floatn.h /usr/include/sys/types.h
>>>>> >>> CadReader.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
>>>>> >>> CadReader.o: /usr/include/bits/types/clock_t.h
>>>>> >>> CadReader.o: /usr/include/bits/types/clockid_t.h
>>>>> >>> CadReader.o: /usr/include/bits/types/time_t.h
>>>>> >>> CadReader.o: /usr/include/bits/types/timer_t.h
>>>>> >>> CadReader.o: /usr/include/bits/stdint-intn.h /usr/include/endian.h
>>>>> >>> CadReader.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h
>>>>> >>> CadReader.o: /usr/include/bits/byteswap-16.h
>>>>> >>> CadReader.o: /usr/include/bits/uintn-identity.h 
>>>>> >>> /usr/include/sys/select.h
>>>>> >>> CadReader.o: /usr/include/bits/select.h 
>>>>> >>> /usr/include/bits/types/sigset_t.h
>>>>> >>> CadReader.o: /usr/include/bits/types/__sigset_t.h
>>>>> >>> CadReader.o: /usr/include/bits/types/struct_timeval.h
>>>>> >>> CadReader.o: /usr/include/bits/types/struct_timespec.h
>>>>> >>> CadReader.o: /usr/include/sys/sysmacros.h 
>>>>> >>> /usr/include/bits/sysmacros.h
>>>>> >>> CadReader.o: /usr/include/bits/pthreadtypes.h
>>>>> >>> CadReader.o: /usr/include/bits/thread-shared-types.h
>>>>> >>> CadReader.o: /usr/include/bits/pthreadtypes-arch.h 
>>>>> >>> /usr/include/alloca.h
>>>>> >>> CadReader.o: /usr/include/bits/stdlib-float.h
>>>>> >>> 
>>>>> >>> /usr/include doesn’t exist on Big Sure (I assume its deprecated?) 
>>>>> >>> however, they can be found at
>>>>> >>> 
>>>>> >>> ~ $ xcrun --sdk macosx --show-sdk-path
>>>>> >>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk
>>>>> >>> 
>>>>> >>> although I don’t see a ‘bits’ subdirectory. Has it been relocated?
>>>>> >>> 
>>>>> >>> Thanks,
>>>>> >>> Mark
>>>>> >>> 
>>>>> >>> 
>>>>> >>> 
>>>>> >
>>> 
>>> <Final-Combined-Makefile-Patches - Rev 2.diff><Makefile FINAL-Rev4>
>> 
> 

Reply via email to