ok, added https://github.com/racket/racket/wiki/Embedding-Racket
Nate On Thu, Jun 25, 2020 at 4:30 AM Stephen De Gabrielle < [email protected]> wrote: > This world be great content for the wiki > > Hi Nate, > This would be great content for the racket wiki > https://github.com/racket/racket/wiki > > You can post it yourself or I am happy to do it for you. > https://github.com/racket/racket/wiki/_new > > Kind regards, > Stephen > > On Wed, 24 Jun 2020 at 17:54, Nate Griswold <[email protected]> > wrote: > >> Hello >> >> I recently went through the process of embedding the Racket.framework in >> Xcode, and i just wanted to share the steps in case anyone else would like >> to do this. >> >> Note the documentation says ( >> https://docs.racket-lang.org/inside/cs-embedding.html) >> >> "On Mac OS, besides "libracketcs.a" for static linking, a dynamic >> library is provided by the "Racket" framework, which is typically >> installed in "lib" sub-directory of the installation. Supply -framework >> Racket to gcc when linking, along with -F and a path to the "lib" >> directory. At run time, either "Racket.framework" must be moved to a >> location in the standard framework search path, or your embedding >> executable must provide a specific path to the framework (possibly an >> executable-relative path using the Mach-O @executable_path prefix)." >> >> That sets the rpath search paths but the library binary still needs to >> reference @rpath to make use of these search paths. Below we use >> install_name_tool to fix up the binary to reference the @rpath directly. >> >> Note also that Xcode is hard coded to codesign in the Versions/A >> subdirectory and hasn't added any support for signing other major versions, >> so i link version A in the below steps. This step is only necessary if you >> wish to sign the framework on copy. >> >> Note also for a proper framework structure, the framework should have an >> Info.plist in Resources and a Versions/Current symlink. Top-level symlinks >> directly in Racket.framework should reference only Versions/Current and >> both Resources and the binary library (Racket) should be referenced. (see >> https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/FrameworkAnatomy.html >> ) >> >> Note also i did all of this with racket cs, you would have to modify the >> steps if you were using normal racket. >> >> All that said, here are the steps: >> >> Drag the framework into xcode >> select copy if needed, ok >> Click on project, General tab, "Frameworks, Libraries, and Embeddeed >> Content" >> Change do not embed to either embed or embed and sign >> cd to your copied framework in your project >> cd Versions >> ln -s 7.7_CS Current >> if "embed and sign" was chosen: >> ln -s 7.7_CS A (xcode is hard coded to sign the major version A, see >> https://developer.apple.com/forums/thread/65963) >> cp /path/to/Info.plist 7.7_CS/Resources >> cd .. >> rm -f Racket >> ln -s Versions/Current/Racket >> ln -s Versions/Current/Resources >> install_name_tool -id @rpath/Racket.framework/Versions/7.7_CS/Racket >> ./Racket >> otool -L Racket (to verify) >> Switch to Xcode, build and run >> >> Nate >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Racket Users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/racket-users/CAM-xLPpC3Ona-zbV6r43dD_xjSmXa_eGGRLfFERuQ_tBgG%3D4HQ%40mail.gmail.com >> <https://groups.google.com/d/msgid/racket-users/CAM-xLPpC3Ona-zbV6r43dD_xjSmXa_eGGRLfFERuQ_tBgG%3D4HQ%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> > -- > ---- > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/CAM-xLPrU2q%2BjVe91NVX3SFeX8%3DFMV16TnmDT1GRP6ZO0XnAD1g%40mail.gmail.com.

