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
