Hi P.O.,

just a few thoughts (am about to leave the office):

  * the compiler needs to be able to resolve the include files, cf.
    <https://www.rapidtables.com/code/linux/gcc/gcc-i.html>, on Linux they are 
found (while ooRexx
    is installed),
  * the compiler needs to be able to locate the dylibs (librexx.dylib and 
librexxapi.dylib), usually
    one could use "-L...path..." to point to the ooRexx library directory, cf.
    <https://www.rapidtables.com/code/linux/gcc/gcc-l.html>

So, if the compiler does not find the include and dylib files in the 
directories it looks for, you
would have to supply the locations either with supplying the directories with 
the appropriate
switches in the appropriate gcc switches or via the environment variables the 
compiler may consult.

Good luck! :)

---rony


On 16.10.2021 15:22, P.O. Jonsson wrote:
> Dear Rony,
>
> I wanted to try this out on macOS (High Sierra) but got into problems 
> straight away
>
> POs-QuadCore-Mac-Pro:native.api po$ make -f Makefile.macOS clean
> rm -f stackOverflow runRexxProgram
> POs-QuadCore-Mac-Pro:native.api po$ make -f Makefile.macOS all
> gcc runRexxProgram.cpp -lrexx -lrexxapi   -o runRexxProgram
> runRexxProgram.cpp:51:10: fatal error: 'oorexxapi.h' file not found
> #include "oorexxapi.h"
>          ^~~~~~~~~~~~~
> 1 error generated.
> make: *** [runRexxProgram] Error 1
> POs-QuadCore-Mac-Pro:native.api po$ 
>
> I could do away with that problem by copying the header files into the sample 
> directory (a hack, I
> know). But I got another error instead
>
> POs-QuadCore-Mac-Pro:native.api po$ make -f Makefile.macOS clean
> rm -f stackOverflow runRexxProgram
> POs-QuadCore-Mac-Pro:native.api po$ make -f Makefile.macOS all
> gcc runRexxProgram.cpp -lrexx -lrexxapi   -o runRexxProgram
> ld: library not found for -lrexx
> clang: error: linker command failed with exit code 1 (use -v to see 
> invocation)
> make: *** [runRexxProgram] Error 1
>
> So I added the -v to get more information
>
> POs-QuadCore-Mac-Pro:native.api po$ make -f Makefile.macOS clean
> rm -f stackOverflow runRexxProgram
> POs-QuadCore-Mac-Pro:native.api po$ make -f Makefile.macOS runRexxProgram
> gcc -v runRexxProgram.cpp -lrexx -lrexxapi   -o runRexxProgram
> Apple LLVM version 10.0.0 (clang-1000.10.44.4)
> Target: x86_64-apple-darwin17.7.0
> Thread model: posix
> InstalledDir: /Library/Developer/CommandLineTools/usr/bin
>  "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple 
> x86_64-apple-macosx10.13.0
> -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -emit-obj 
> -mrelax-all -disable-free
> -disable-llvm-verifier -discard-value-names -main-file-name 
> runRexxProgram.cpp -mrelocation-model
> pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -fno-strict-return 
> -masm-verbose
> -munwind-tables -target-cpu penryn -dwarf-column-info -debugger-tuning=lldb 
> -target-linker-version
> 409.12 -v -resource-dir 
> /Library/Developer/CommandLineTools/usr/lib/clang/10.0.0 -stdlib=libc++
> -fdeprecated-macro -fdebug-compilation-dir 
> /Applications/ooRexx5/share/ooRexx/samples/native.api
> -ferror-limit 19 -fmessage-length 80 -stack-protector 1 -fblocks 
> -fencode-extended-block-signature
> -fobjc-runtime=macosx-10.13.0 -fcxx-exceptions -fexceptions 
> -fmax-type-align=16
> -fdiagnostics-show-option -fcolor-diagnostics -o
> /var/folders/6r/ytvfjqwx7td5_cvdj6_m9vcr0000gn/T/runRexxProgram-f8319d.o -x 
> c++ runRexxProgram.cpp
> clang -cc1 version 10.0.0 (clang-1000.10.44.4) default target 
> x86_64-apple-darwin17.7.0
> ignoring nonexistent directory "/usr/include/c++/v1"
> #include "..." search starts here:
> #include <...> search starts here:
>  /Library/Developer/CommandLineTools/usr/include/c++/v1
>  /usr/local/include
>  /Library/Developer/CommandLineTools/usr/lib/clang/10.0.0/include
>  /Library/Developer/CommandLineTools/usr/include
>  /usr/include
>  /System/Library/Frameworks (framework directory)
>  /Library/Frameworks (framework directory)
> End of search list.
>  "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library
> /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -no_deduplicate 
> -dynamic -arch x86_64
> -macosx_version_min 10.13.0 -o runRexxProgram
> /var/folders/6r/ytvfjqwx7td5_cvdj6_m9vcr0000gn/T/runRexxProgram-f8319d.o 
> -lrexx -lrexxapi -lSystem
> /Library/Developer/CommandLineTools/usr/lib/clang/10.0.0/lib/darwin/libclang_rt.osx.a
> ld: library not found for -lrexx
> clang: error: linker command failed with exit code 1 (use -v to see 
> invocation)
> make: *** [runRexxProgram] Error 1
>
> Any idea what I need to do to get this working on a Mac?
>
> Hälsningar/Regards/Grüsse,
> P.O. Jonsson
> oor...@jonases.se <mailto:oor...@jonases.se>
>
>
>
>> Am 16.10.2021 um 14:55 schrieb Rony G. Flatscher <rony.flatsc...@wu.ac.at
>> <mailto:rony.flatsc...@wu.ac.at>>:
>>
>> Here a minimal working Makefile.linux:
>>
>>     # A pretty simple make file that should work on most Unix-like platforms 
>> that have gcc.
>>
>>     OOREXX_LFLAGS = -lrexx -lrexxapi  # needs to follow after file for which 
>> link resoultion is needed
>>
>>     # What we want to build.
>>     all: runRexxProgram stackOverflow
>>
>>     runRexxProgram: runRexxProgram.cpp
>>             gcc runRexxProgram.cpp ${OOREXX_LFLAGS} -o runRexxProgram
>>
>>     stackOverflow: stackOverflow.cpp
>>             gcc stackOverflow.cpp  $(OOREXX_LFLAGS) -o stackOverflow
>>
>>     clean:
>>             rm -f stackOverflow runRexxProgram
>>
>> If there are no objections (Makefiles are sometimes religious), I would 
>> replace the non-working
>> version with the above one.
>>
>> ---rony
>>
>>
>> On 15.10.2021 16:17, Rony G. Flatscher wrote:
>>>
>>> After having time to look closer, it turns out that the Makefile.linux has 
>>> been faulty! Here a
>>> version that works (a little bit simplified and removed a superfluous 
>>> definition, the link
>>> switches now trail the file to be created):
>>>
>>>     OOREXX_LFLAGS = -L. -ldl -lrexx -lrexxapi
>>>     OOREXX_CFLAGS = -fPIC
>>>
>>>
>>>     # What we want to build.
>>>     all: runRexxProgram stackOverflow
>>>
>>>     runRexxProgram.o: runRexxProgram.cpp
>>>             gcc -c $(OOREXX_CFLAGS) -o runRexxProgram.o runRexxProgram.cpp
>>>
>>>     runRexxProgram: runRexxProgram.o
>>>             gcc runRexxProgram.o -o runRexxProgram $(OOREXX_LFLAGS) 
>>>
>>>     stackOverflow.o: stackOverflow.cpp
>>>             gcc -c $(OOREXX_CFLAGS) -o stackOverflow.o stackOverflow.cpp
>>>
>>>     stackOverflow: stackOverflow.o
>>>             gcc stackOverflow.o -o stackOverflow $(OOREXX_LFLAGS) 
>>>
>>>     clean:
>>>             rm -f *.so *.o stackOverflow runRexxProgram
>>>
>>> Will commit the changes to this Makefile tomorrow.
>>>
>>> ---rony
>>>
>>>
>>> On 14.10.2021 15:31, Rony G. Flatscher wrote:
>>>>
>>>> While testing the Makefile.linux for native.api on Ubuntu I encounter the 
>>>> following problem
>>>> (oorexx got installed to /usr/local):
>>>>
>>>>     
>>>> rony@rony-linux:~/work/oorexx-build/orx1/usr/local/share/ooRexx/samples/native.api$
>>>>  make -f Makefile.linux clean
>>>>     rm -f *.so *.o stackOverflow runRexxProgram
>>>>
>>>>     
>>>> rony@rony-linux:~/work/oorexx-build/orx1/usr/local/share/ooRexx/samples/native.api$
>>>>  make -f Makefile.linux runRexxProgram
>>>>     gcc -c -fPIC -o runRexxProgram.o runRexxProgram.cpp
>>>>     gcc -L. -ldl -lrexx -lrexxapi runRexxProgram.o -o runRexxProgram
>>>>     /usr/bin/ld: runRexxProgram.o: in function `main':
>>>>     runRexxProgram.cpp:(.text+0x9a): undefined reference to 
>>>> `RexxCreateInterpreter'
>>>>     collect2: error: ld returned 1 exit status
>>>>     make: *** [Makefile.linux:54: runRexxProgram] Error 1
>>>>
>>>>     
>>>> rony@rony-linux:~/work/oorexx-build/orx1/usr/local/share/ooRexx/samples/native.api$
>>>>  nm runRexxProgram.o 
>>>>                      U exit
>>>>                      U _GLOBAL_OFFSET_TABLE_
>>>>     0000000000000000 T main
>>>>                      U printf
>>>>                      U puts
>>>>                      U RexxCreateInterpreter
>>>>                      U __stack_chk_fail
>>>>                      U strcmp
>>>>     0000000000000000 W _Z16conditionSubCodeP13RexxCondition
>>>>     00000000000003c9 T _Z17checkForConditionP18RexxThreadContext_b
>>>>     0000000000000243 T 
>>>> _Z20standardConditionMsgP18RexxThreadContext_P20_RexxDirectoryObjectP13RexxCondition
>>>>     00000000000001c7 T _Z23printInterpreterVersionP13RexxInstance_
>>>>     0000000000000000 W _ZN13RexxInstance_13LanguageLevelEv
>>>>     0000000000000000 W _ZN13RexxInstance_18InterpreterVersionEv
>>>>     0000000000000000 W _ZN13RexxInstance_9TerminateEv
>>>>     0000000000000000 W 
>>>> _ZN18RexxThreadContext_10ArrayItemsEP16_RexxArrayObject
>>>>     0000000000000000 W 
>>>> _ZN18RexxThreadContext_10ArrayOfOneEP14_RexxObjectPtr
>>>>     0000000000000000 W 
>>>> _ZN18RexxThreadContext_11CallProgramEPKcP16_RexxArrayObject
>>>>     0000000000000000 W 
>>>> _ZN18RexxThreadContext_12SendMessage0EP14_RexxObjectPtrPKc
>>>>     0000000000000000 W _ZN18RexxThreadContext_14CheckConditionEv
>>>>     0000000000000000 W _ZN18RexxThreadContext_14ClearConditionEv
>>>>     0000000000000000 W _ZN18RexxThreadContext_16GetConditionInfoEv
>>>>     0000000000000000 W 
>>>> _ZN18RexxThreadContext_19DecodeConditionInfoEP20_RexxDirectoryObjectP13RexxCondition
>>>>     0000000000000000 W 
>>>> _ZN18RexxThreadContext_19ObjectToStringValueEP14_RexxObjectPtr
>>>>     0000000000000000 W _ZN18RexxThreadContext_6StringEPKc
>>>>     0000000000000000 W _ZN18RexxThreadContext_7ArrayAtEP16_RexxArrayObjectm
>>>>     0000000000000000 W _ZN18RexxThreadContext_7CStringEP14_RexxObjectPtr
>>>>
>>>> The version that CMake creates works.
>>>>
>>>> ---rony
>>>>

_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to