115 Commits (9206f48bce61478c6fb845a0e30d7dd68930175e)

Author SHA1 Message Date
theraven be2ee54190 Default building the LLVM optimisations to off if the LLVM CMake module is not
found.
13 years ago
theraven 150aa4ef19 Fix linkage in libobjc. 13 years ago
theraven db3cbec65a Make sure that the asm files are built. Add a configuration option for the include headers so OpenBSD can put them in include/gnustep/objc/ 13 years ago
theraven a5cc173310 Correctly handle the case of GNUstep config not existing. 13 years ago
theraven 651962702a Add uninstall target to CMake. 13 years ago
theraven bfc1a2ed11 Add a flag for setting the library name. 13 years ago
theraven 501d5b9828 Set the C++ runtime to nothing if it is not found. 13 years ago
theraven 2841400e0c Add CPack configuration to CMakeLists.txt. RPMs, DEBs and tarballs can now be built directly from the build system. 13 years ago
theraven a5b4ab9937 Specify the current runtime version to target if the compiler supports this
flag.  This means that the .m files in the runtime will take advantage of
features of this runtime when compiled with a recent clang.
13 years ago
theraven 3c7d6f8fd9 Fix merging CFLAGS. 13 years ago
theraven 01bf761766 Target i586 on i686 with clang. 13 years ago
theraven 7afed09286 Change how installation location is detected, as per Quentin's suggestion. 13 years ago
theraven 94570d9895 Actually fix header install locations... 13 years ago
theraven 6c131e2eb7 Fix header installation location. 13 years ago
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.
13 years ago