[fpc-devel] MacOS Mojave beta - crt1.o not installed to /usr/lib

Michael Ring mail at michael-ring.org
Sun Jul 1 23:31:17 CEST 2018


This small patch helped me to get rid of the need to define 
-XR/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/ in /etc/fpc.cfg


It would be greet to have something similar in the upcoming 3.0.5 
release (and of course in trunk) so that also building lazarus with a 
3.0.5 compiler works (It currently fails without the entry in fpc.cfg)


Michael


Index: compiler/systems/t_bsd.pas
===================================================================
--- compiler/systems/t_bsd.pas    (revision 39358)
+++ compiler/systems/t_bsd.pas    (working copy)
@@ -248,6 +248,9 @@
              system_i386_darwin,
              system_x86_64_darwin:
                begin
+                { 10.14 and later: crt1.o }
+                if CompareVersionStrings(MacOSXVersionMin,'10.14')>=0 then
+                  exit('crt1.so');
                  { 10.8 and later: no crt1.* }
                  if CompareVersionStrings(MacOSXVersionMin,'10.8')>=0 then
                    exit('');
@@ -377,7 +380,10 @@
    if startupfile<>'' then
      begin
       if not librarysearchpath.FindFile(startupfile,false,result) then
-       result:='/usr/lib/'+startupfile
+       if sysutils.fileexists('/usr/lib/'+startupfile) then
+         result:='/usr/lib/'+startupfile
+       else if 
sysutils.fileexists('/Library/Developer/CommandLineTools//SDKs/MacOSX.sdk/usr/lib/'+startupfile) 
then
+ 
result:='/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/'+startupfile
      end
    else
      result:='';


Am 01.07.18 um 22:52 schrieb Michael Ring:
> I only adjusted -Fl to match the current version installed, having a 
> wrong issue there did not change the build behaviour. The change 
> necessary was to include
>
> -XR/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/
>
> otherwise fpcmake will not compile.
>
>
> Cross-Compiling did however not work, the makefile of fpcmake does 
> seem to support FPCOPT but somehow the parameter does not get 
> forwarded to the makefile:
>
> /Library/Developer/CommandLineTools/usr/bin/make -C utils/fpcm 
> bootstrap FPC=/Users/ring/devel/fpc-arm/compiler/ppcrossarm 
> FPCFPMAKE=/Users/ring/devel/fpc-arm/compiler/ppc RELEASE=1 'OPT='
>
> results in:
>
> /Users/ring/devel/fpc-arm/compiler/ppc fpcmake.pp -n 
> -Fu/Users/ring/devel/fpc-arm/rtl/units/x86_64-darwin 
> -FU/Users/ring/devel/fpc-arm/utils/fpcm/units/x86_64-darwin
> ld: file not found: /usr/lib/crt1.10.5.o
> An error occurred while linking
>
> I could make crosscompiling work by doing this (Use OPT instead of 
> FPCOPT)
>
> make clean buildbase CROSSINSTALL=1 OS_TARGET=embedded CPU_TARGET=arm 
> SUBARCH=$SUBARCH CROSSOPT="$CROSSOPT" BINUTILSPREFIX=arm-none-eabi- 
> OPT="-XR/Library/Developer/CommandLineTools//SDKs/MacOSX.sdk/"
>
> I hope that hardcoding the path 
> /Library/Developer/CommandLineTools//SDKs/MacOSX.sdk/ in FPC will 
> solve this.....
>
> Thank you,
>
> Michael
>
>
>
> Am 01.07.18 um 22:34 schrieb Jonas Maebe:
>> On 01/07/18 22:18, Michael Ring wrote:
>>>
>>> make clean buildbase CPU_TARGET=x86_64 INSTALL_PREFIX=$HOME/3.1.1 
>>> FPCOPT="-XR/Library/Developer/CommandLineTools//SDKs/MacOSX.sdk/"
>>>
>>> and patching my /etc/fpc.cfg to include:
>>>
>>> #ifdef cpui386
>>> -XR/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/
>>> -Fl/Library/Developer/CommandLineTools/usr/lib/clang/10.0.0
>>> #endif
>>> #ifdef cpux86_64
>>> -XR/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/
>>> -Fl/Library/Developer/CommandLineTools/usr/lib/clang/10.0.0
>>> #endif
>>>
>>> both actions were needed for a successful compile...
>>
>> What errors do you get if you don't include the -Fl option?
>>
>>> Is there a better way to make compiles work on Mojave?
>>
>> The -XR above seems to be the correct way to handle this change. We 
>> could also hard code that search path in the compiler in addition to 
>> /usr/lib
>>
>>
>> Jonas
>> _______________________________________________
>> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
>> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
>
> _______________________________________________
> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel




More information about the fpc-devel mailing list