[gambit-list] Compiling a gambit program with XCode

Marc Feeley feeley at iro.umontreal.ca
Wed Feb 18 10:50:19 EST 2015


Make sure all the files (including the Gambit lib) are compiled using clang++.  You have to force this somehow because by default .c files are compiled using clang.  Also, make sure you are compiling to x86_64 in all cases.

Marc

> On Feb 18, 2015, at 9:31 AM, Francois Magnan <fmagnan at me.com> wrote:
> 
> 
> Hi,
> 
> Ah… yes. XCode treated them as errors by default! 
> Now compilation succeeds but at link time I get errors for all used gambit functions:
> 
> Undefined symbols for architecture x86_64:
>   "___cleanup()", referenced from:
>       gambit_cleanup() in cefsimple_mac.o
>   "___release_scmobj(long)", referenced from:
>       factorial(char*) in program.o
>   "___propagate_error(long)", referenced from:
>       factorial(char*) in program.o
>   "___setup_params_reset(___setup_params_struct*)", referenced from:
>       gambit_setup() in cefsimple_mac.o
>> 
> 
> 
> Note that I tried to compile the program.c using the clang++ and clang because there are C++ files in the project. 
> Here is the full link command generated by XCode:
> 
> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -L/Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/Debug -L/usr/local/Gambit-C/lib -F/Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/Debug -filelist /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/cef.build/Debug/cefsimple.build/Objects-normal/x86_64/cefsimple.LinkFileList -mmacosx-version-min=10.6 -Wl,-search_paths_first -Wl,-ObjC -Wl,-pie -Wl,-search_paths_first -Wl,-headerpad_max_install_names /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/Debug/Chromium\ Embedded\ Framework.framework/Chromium\ Embedded\ Framework /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/libcef_dll/Debug/libcef_dll_wrapper.a -lpthread -framework Cocoa -framework AppKit -lgambc -Xlinker -dependency_info -Xlinker /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/cef.build/Debug/cefsimple.build/Objects-normal/x86_64/cefsimple_dependency_info.dat -o /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/Debug/cefsimple.app/Contents/MacOS/cefsimple
> 
> 
> What am I missing?
> Thank you,
> Francois
> 
>> On Feb 17, 2015, at 2:13 PM, Marc Feeley <feeley at iro.umontreal.ca> wrote:
>> 
>> All of those messages are warnings.  Just add a compile flag to remove the warnings (and not treat them as errors).  I don’t know what the flag is for clang.
>> 
>> Marc
>> 
>>> On Feb 17, 2015, at 12:30 PM, Francois Magnan <fmagnan at me.com> wrote:
>>> 
>>> Salut Marc,
>>> 
>>> I’m trying to integrate a Gambit-C program into the XCode workflow. I tried a minimal example:
>>> 
>>> ———— program.scm —————
>>> 
>>> (c-define (factorial n) (char-string) char-string "factorial" ""
>>>  	(number->string (fact (string->number n))))
>>> 
>>> 
>>> 
>>> (define (fact n)
>>> 	(if (= n 0)
>>> 		1
>>> 		(* n (fact (- n 1)))))
>>> 
>>> ———— program.scm —————
>>> 
>>> 
>>> 
>>> Then I call:
>>> 
>>> 	gsc -link program
>>> 
>>> and that generated program_.c and program.c
>>> 
>>> I then add those two files to my XCode project and then 
>>> 
>>> — Add the /usr/local/Gambit-C/include  to my headers search path
>>> — Add the /usr/local/Gambit-C/lib to my libraries search path
>>> — Add -lgambc as a linked flag
>>> — Add  gambit_setup() and gambit_cleanup() functions and call then at the appropriate time
>>> 
>>> But when I compile the project I get a series of errors:
>>> 
>>> /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/program.c:106:1: Variable '___result' is used uninitialized whenever 'if' condition is false
>>> /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/program.c:174:1: Unused variable '___u32_temp'
>>> /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/program.c:174:1: Unused variable '___s32_temp'
>>> /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/program.c:183:13: Unused label '___L__20_program'
>>> /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/program.c:174:1: Unused variable '___u64_temp'
>>> /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/program.c:174:1: Unused variable '___temp'
>>> /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/program.c:174:1: Unused variable '___s64_temp'
>>> /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/program.c:201:1: Unused variable '___s32_temp'
>>> /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/program.c:201:1: Unused variable '___u64_temp'
>>> /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/program.c:214:13: Unused label '___L_factorial'
>>> /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/program.c:201:1: Unused variable '___s64_temp'
>>> /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/program.c:201:1: Unused variable '___u32_temp'
>>> /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/program.c:266:13: Unused label '___L_fact'
>>> /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/program.c:244:1: Unused variable '___u64_temp'
>>> /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/program.c:244:1: Unused variable '___s64_temp'
>>> /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/program.c:244:1: Unused variable '___u32_temp'
>>> /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/program.c:244:1: Unused variable '___s32_temp'
>>> /Users/magnan/Desktop/cef_binary_3.2295.2032_macosx64/cefsimple/program.c:437:1: Unused variable ‘___ps'
>>> 
>>> 
>>> 
>>> What am I doing wrong? I used to do that technique for iOS apps before but now it broke. I am trying to build a MaxOSX app.
>>> 
>>> Thank you,
>>> Francois Magnan
>>> 
>>> 
>>> 
>> 
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4839 bytes
Desc: not available
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20150218/a74f1a00/attachment.bin>


More information about the Gambit-list mailing list