Commit Graph

655 Commits

Author SHA1 Message Date
theraven
1002b5fd86 Remove the non-functional Makefile.clang 2012-12-13 14:04:54 +00:00
theraven
4c6f6dbdcf Updated WIP announcement for 1.7. 2012-12-13 13:44:12 +00:00
theraven
3081618c47 Add CMake build system for libobjc2. This will replace the existing build
systems after some further testing.

Currently, we have three build systems for libobjc2:

- GNUmakefile, which provides a number of options but not very cleanly (i.e.
  the only way of knowing what they are is to read the source) and doesn't
  correctly build the Objective-C++ runtime.
- Makefile, which works correctly for a single configuration, but requires
  tweaking by hand to build others.
- Makefile.clang, which is experimental, doesn't really work, and confuses
  people.

The new CMake system:

- Correctly installs in a GNUstep location if one exists, or in a system
  location otherwise.  This is configurable at build time.
- Provides inspectable options for all of the configuration choices (run ccmake
  to see them all)
- Easily supports cross-compilation and out-of-tree builds
- Is easy to extend and inspect
- Automatically builds the LLVM optimisations (which already use CMake, as it's
  the only clean way of building LLVM optimisations out of tree) and can be
  easily configured not to if they are not required.
- Will build a single libobjc.so for platforms that provide a separate C++
  runtime and a separate libobjcxx for ones that don't.
- Can generate build files for make, ninja, XCode, Eclipse, and Visual Studio

For those unfamiliar with CMake, the best way of building is an out-of-tree
build.  For the simplest case, it's just a matter of:

$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo -E make install

If you wish to edit any of the configuration options, the easiest way is to run
ccmake instead of cmake.  You can also run ccmake . from the build directory to
edit the options after initial configuration.

For faster builds , try using ninja instead of make.  Add -G Ninja to the
[c]cmake command line and then run ninja instead of make.
2012-12-13 11:08:07 +00:00
theraven
713957f9d2 Fix lookup of properties after getting their attributes. 2012-12-11 17:30:04 +00:00
theraven
85fd42dd5a Fix an infinite loop when first sending a message to a class that has a hidden class. 2012-12-11 17:12:08 +00:00
theraven
c7419155d5 Add some explicit NULL checks in property introspection code. 2012-12-10 16:38:15 +00:00
qmathe
e8c14d95b9 Fixed segfaults in programs compiled with Clang using -fobjc-nonfragile-abi on
Linux x86-32. 

If both -03 and -fobjc-nonfragile-abi are used, -march=i586 is required (at 
least on my Linux machine). This flag was lost during the recent GNUmakefile 
rewrite (see r35690).

In addition, I also added MinGW32 and pthread flags used previously in the 
GNUmakefile but missing in the Makefile.
2012-11-15 13:31:00 +00:00
rfm
aa98226a0c add diagnostics and warnings to cope better if in a partially set up gnustep 2012-11-02 20:27:38 +00:00
rfm
0d6f7bfdfa dd help on end of installation 2012-11-02 19:34:06 +00:00
rfm
9230241327 add a little informatrion/diagnostic 2012-11-02 19:11:51 +00:00
theraven
3649fe37ec Fix while -> if bug introduced when refactoring ARC code which caused infinite
loop.

Reported by Tom Davie.
2012-10-23 08:27:42 +00:00
theraven
abc1d44c9c Fix handling of properties that refer to an instance variable other than the
default.
2012-10-17 09:02:45 +00:00
rfm
17b8ff43c9 added distclean targer ... calls clean 2012-10-15 10:37:50 +00:00
rfm
25962bc45e Update support for installation in correct location for GNUstep 2012-10-15 09:31:34 +00:00
theraven
7a232c68d6 Fix typo in .cxx_construct.
Reported by Luboš Doležel!
2012-10-09 21:39:33 +00:00
theraven
cdc31c6c0d Fix class_addProperty().
Reported by Luboš Doležel!
2012-10-09 12:35:54 +00:00
theraven
2410ca70e2 Made name() const to avoid missing symbol error with libobjcxx. 2012-10-01 12:24:25 +00:00
theraven
cdd2684f60 Small Makefile tweaks.
Patch by Kubilay Kocak!
2012-09-28 12:54:03 +00:00
theraven
3b5e00b995 Small improvements to class lookup cache pass. 2012-09-20 13:05:13 +00:00
theraven
31149afd20 Add CMake minimum version. 2012-09-19 12:30:54 +00:00
theraven
86d5f028a4 Don't remove ivar offset variables, even if we aren't using them. 2012-09-19 12:30:18 +00:00
theraven
304593924f Add missing unlock.
Patch by Philippe Roussel!
2012-09-15 11:19:21 +00:00
theraven
fe9801837c Archive 1.6.1 release announcement. 2012-09-04 14:58:30 +00:00
thebeing
0622b37c66 Respect user-specified LDFLAGS 2012-09-01 19:36:49 +00:00
thebeing
4fba0fcc88 Evaluate LD to find out which linker to use. 2012-08-24 21:52:25 +00:00
thebeing
1684283af0 Fix bug in protocol_copyMethodDescriptionList() where we were calling calloc()
with a wrong element size.
2012-08-22 21:25:11 +00:00
theraven
e7ab10611f ARC fix for blocks. 2012-08-19 09:17:12 +00:00
theraven
8cf5e0412f Update optimisation to work with LLVM trunk, remove the Makefile and use CMake for building the passes (out of tree builds are now easier). 2012-08-17 13:18:16 +00:00
theraven
2d835cffa6 Fix the lock order when sending +initialize, so that we don't hold a lock that
is meant to protect a runtime data structure while trying to acquire a lock
that must be held when running user code that may take an indeterminate amount
of time and may trigger deadlocks.
2012-08-13 14:58:58 +00:00
theraven
c6eede8179 GCC-compatibility tweak in EH. 2012-07-12 18:10:51 +00:00
theraven
8e023f0063 Fix case where more than 4 weak references to the same object would cause infinite loops.
Patch by Thomas Davie!
2012-06-18 16:01:40 +00:00
theraven
f059be5337 Add better handling of messages returning floating point values sent to nil. 2012-06-09 10:43:57 +00:00
theraven
0eeff38f1b Fix potential null pointer dereference.
Reported by: Riccardo Mottola
2012-05-17 14:49:28 +00:00
theraven
d8192c3a64 Always return 64-bit 0 in response to a message to nil on x86. 2012-05-04 13:28:08 +00:00
theraven
6950cb8e55 A couple of small bug fixes. 2012-04-15 17:46:10 +00:00
theraven
abff244ef9 Started 1.6.1 release announcement, updated LLVM optimisations to work with LLVM 3.1. 2012-04-06 17:46:55 +00:00
theraven
6f1589a841 Some bug fixes to ARC autorelease pools. Now provides all of the support required for implementing GNUstep autorelease pools. 2012-04-06 11:58:14 +00:00
theraven
4f51f9cd05 When using the runtime's internal autorelease pool implementation, just pop the
top object off when attempting to retain an autoreleased return value,
2012-04-05 16:37:48 +00:00
theraven
cec2be9431 Fix double-free when making C++ objects __block 2012-04-03 09:45:26 +00:00
theraven
26784adc0a Fix some warnings.
Remove the dependency on <typeinfo> containing the vtable layout for
std::type_info.  This allows libobjc2 to be built against libc++ and libcxxrt
and still provide working a unified exception model.

Note: This is broken on FreeBSD < 9.1, because it ships a libsupc++ with a
broken ABI.
2012-03-24 16:43:01 +00:00
thebeing
3df479e899 More robust compiler check. 2012-03-22 13:24:43 +00:00
thebeing
629b3bac4f Redo last change to the Makefiles in a portable fashion. 2012-03-22 12:51:39 +00:00
theraven
c0123c5be3 Revert commit that broke the build system. 2012-03-21 16:45:31 +00:00
thebeing
a106ba85af * Update Makefile.clang to the present state (and add deprecation notice).
* Store version info for the makefiles in one place (version.make).
* Update Makefile to build assembly correctly with GCC.
2012-03-21 16:09:40 +00:00
thebeing
3c30464c45 Make native code generated from LLVM bitcode relocatable. 2012-03-21 13:23:02 +00:00
theraven
66ee284bc7 Fix bug in unified exception model. 2012-03-20 16:30:07 +00:00
theraven
292600c46b Make symlinks relative when installing.
Patch by Richard Stonehouse!
2012-03-20 10:29:05 +00:00
theraven
434e963ea4 Set soname for libraries.
Patch by Richard Stonehouse!
2012-03-20 10:28:30 +00:00
thebeing
f845df37c1 Add objc/blocks_private.h header to expose some internals of the blocks runtime
that are accessed by libdispatch. Also rename the relevant structs to be
compatible with the BlocksRuntime from compiler-rt.
2012-03-11 21:45:08 +00:00
theraven
c3e4ea144d Fix the stripping on install. 2012-03-06 11:04:59 +00:00