[LLVMdev] [PATCH] BlocksRuntime updates for Linux

Jean-Daniel Dupas devlists at shadowlab.org
Fri Sep 18 12:03:52 PDT 2009

Le 18 sept. 2009 à 20:14, Shantonu Sen a écrit :

> The attached diff cleans up the BlocksRuntime/ directory of compiler- 
> rt for better portability, eliminates compiler warnings, and adds  
> support to the cmake build to install the results.
> More specifically, the changes:
> 1) Remove cmake-specific #define usage from the exported Block.h/ 
> Block_private.h headers, since clients won't know what to set. These  
> are moved into runtime.c as appropriate
> 2) Use cmake checks for CAS builtins, instead of guessing based on  
> GCC #defines (which aren't set by clang and llvm-gcc anyway)
> 3) "#pragma mark" isn't supported by FSF gcc, so "#if 0" it out. It  
> should still show up in IDEs that support it

FWIW, Xcode supports the following syntax instead of pragma mark:

// MARK: Your Label
// MARK:-
to create a separator.

If there is no other IDE that uses this pragma, it may be cleaner to  
replace them by this equivalent syntax.

> 4) Fix some compiler warnings. GCC 4.3.3 seems super strict about  
> %p. function pointers can't be cast to void * either.
> 5) Avoid a warning for apple_versioning.c that "ISO C does not allow  
> empty files"
> Tested on Ubuntu Linux 9.04 with clang and llvm-gcc and -fblocks to  
> define and copy some blocks (and invoke them, obviously). Also  
> tested on Mac OS X 10.6 and linking against -lBlocksRuntime ahead of  
> -lSystem.
> <blocks-linux.diff>
> Shantonu Sen
> ssen at apple.com
> Sent from my Mac Pro

-- Jean-Daniel

More information about the llvm-dev mailing list