Okay, I need to double-check my scripts but I have managed to build everything.

What is REALLY BAD is the inconsistent configure flags - if it is nonfragile, 
then they ALL need to be the same flag, not one enable-objc-nonfragile-abi and 
another being disable-mixedabi. At best it is confusing at worst a nightmare to 
figure out.

So once I get the script all nice and purty, I'll update the WIKI.

On Oct 21, 2013, at 15:47 , Lloyd Sargent <[email protected]> wrote:

> Hi Patryk,
> 
> I will.
> 
> I need the GUI for a program used for testing. And rather than reinvent the 
> wheel, I THOUGHT I would just build GNUstep and be done. Little did I know it 
> was not as trivial as it seemed...
> 
> Cheers,
> 
> Lloyd
> 
> On Oct 21, 2013, at 15:09 , Patryk Laurent <[email protected]> wrote:
> 
>> Hi Lloyd,
>> 
>> If you do find out how to build the GUI packages, if would be great if you 
>> could update the wiki with some optional instructions.  I was not interested 
>> in GUI stuff at the time.
>> 
>> Thank you,
>> Patryk
>> 
>> 
>> On Oct 21, 2013, at 01:01 PM, Lloyd Sargent <[email protected]> wrote:
>> 
>>> Okay, much of you answer is clear as mud to me as I don't know what they 
>>> mean:
>>> 
>>> 1. non-fragile ABI is indicated by the -fobjc-nonfragile-abi if I'm not 
>>> correct. I have compiled the sample program and get the same issue.
>>> 
>>> 2. If the issue is that EVERYTHING needs to be compiled with the 
>>> -objc-nonfragile-abi, then I'm at a loss at how to do this - nor does the 
>>> GNUstep website indicate how to do so.
>>> 
>>> 3. What does gnustep-1.7 mean? Is that the legacy (non-ARC) or the (ARC) or 
>>> GC or something altogether different?
>>> 
>>> 4. I appreciate your answer, but it still doesn't suggest a way for me to 
>>> get from where I am (code not running) to where I want to be. BTW, 
>>> libdispatch and base appear to work just fine, it is the gui that crashes 
>>> and burns.
>>> 
>>> 5. It's not that I don't appreciate you answer, but I fail to see how it 
>>> gets me any closer to where I want to be. Yes, I'm quite aware that things 
>>> are not working and there is an ABI mismatch. I think the question is more 
>>> "how do I get from this mismatch" to something that is NOT a mismatch.
>>> 
>>> Cheers,
>>> 
>>> Lloyd
>>> 
>>> On Oct 21, 2013, at 10:06 , David Chisnall <[email protected]> wrote:
>>> 
>>>> ARC is only supported with the non-fragile ABI. If you specify 
>>>> -fobjc-runtime=gnustep and -fobjc-arc, then it should default to the 
>>>> equivalent of -fobjc-runtime=gnustep-1.7. The rest of your code appears to 
>>>> be compiled with the legacy (GCC-compatible) ABI (-fobjc-runtime=gnustep, 
>>>> with no version, which is strongly discouraged).
>>>> I'd recommend copying how the packages are built on FreeBSD. The GNUstep 
>>>> and libdispatch ports work out of the box in this configuration.
>>>> David
>>>> On 21 Oct 2013, at 15:16, Lloyd Sargent <[email protected]> wrote:
>>>>> Basically, I followed the instructions here: 
>>>>> http://wiki.gnustep.org/index.php/GNUstep_under_Ubuntu_Linux
>>>>> With the extra step of building the gui and back.
>>>>> If I build and run a non-gui program, all works well. Only when I add 
>>>>> something that uses the gui, like the following:
>>>>> // Created by Tobias Lensing on 2/22/13.
>>>>> #import <Foundation/Foundation.h>
>>>>> #import <AppKit/AppKit.h>
>>>>> #import <dispatch/dispatch.h>
>>>>> int main(int argc, const char * argv[])
>>>>> {
>>>>> @autoreleasepool {
>>>>> int multiplier = 7;
>>>>> int (^myBlock)(int) = ^(int num) {
>>>>> return num * multiplier;
>>>>> };
>>>>> NSLog(@"%d", myBlock(3));
>>>>> dispatch_queue_t queue = dispatch_queue_create(NULL, NULL);
>>>>> dispatch_sync(queue, ^{
>>>>> printf("Hello, world from a dispatch queue!\n");
>>>>> });
>>>>> // dispatch_release(queue); // ARC takes care of this
>>>>> }
>>>>> @autoreleasepool {
>>>>> [NSApplication sharedApplication];
>>>>> NSRunAlertPanel(@"Test", @"Wow it works!", @"OK", nil, nil);
>>>>> }
>>>>> return 0;
>>>>> }
>>>>> I compile this with the following:
>>>>> clang `gnustep-config --objc-flags` `gnustep-config --objc-libs` 
>>>>> -fobjc-arc -fobjc-runtime=gnustep -fblocks -lobjc -ldispatch 
>>>>> -lgnustep-gui test.m
>>>>> It compiles and links with no errors.
>>>>> When I run it, however, it spits out the following ugly-gram:
>>>>> Hello, world from a dispatch queue!
>>>>> Objective-C ABI Error: Loading modules from incompatible ABI's while 
>>>>> loading .GSBackend.m
>>>>> a.out: /home/lloyd/projects/ThirdParty/BuildGnuStep/libobjc2/loader.c:53: 
>>>>> void __objc_exec_class(struct objc_module_abi_8 *): Assertion 
>>>>> `objc_check_abi_verion(module)' failed.
>>>>> Aborted (core dumped)
>>>>> I have assured myself that there is no other version of libobjc (this is 
>>>>> on a virtual machine so I can go back redo my steps).
>>>>> Commenting out the following:
>>>>> // [NSApplication sharedApplication];
>>>>> // NSRunAlertPanel(@"Test", @"Wow it works!", @"OK", nil, nil);
>>>>> and everything compiles and runs, aside from the GUI obviously.
>>>>> How can I have two ABI's when I build everything from scratch? Do I need 
>>>>> to configure the GUI differently? I've been puzzling over this for a 
>>>>> couple of weeks.
>>>>> My goal is to have ARC, the GUI and (optionally) blocks.
>>>>> _______________________________________________
>>>>> Discuss-gnustep mailing list
>>>>> [email protected]
>>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnustep
>>>> -- Sent from my brain
>>> 
>>> 
>>> _______________________________________________
>>> Discuss-gnustep mailing list
>>> [email protected]
>>> https://lists.gnu.org/mailman/listinfo/discuss-gnustep
> 
> _______________________________________________
> Discuss-gnustep mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/discuss-gnustep

_______________________________________________
Discuss-gnustep mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnustep

Reply via email to