Index: README.md ================================================================== --- README.md +++ README.md @@ -92,13 +92,14 @@ macOS (Homebrew) | `brew install objfw` macOS (pkgsrc) | `cd $PKGSRCDIR/devel/objfw && make install` NetBSD | `cd /usr/pkgsrc/devel/objfw && make install` OpenBSD | `doas pkg_add objfw` OpenIndiana | `sudo pkg install developer/objfw` - Windows (MSYS2/MINGW32) | `pacman -S mingw-w64-i686-objfw` Windows (MSYS2/CLANG64) | `pacman -S mingw-w64-clang-x86_64-objfw` Windows (MSYS2/CLANGARM64) | `pacman -S mingw-w64-clang-aarch64-objfw` + Windows (MSYS2/UCRT64) | `pacman -S mingw-w64-ucrt-x86_64-objfw` + Windows (MSYS2/MINGW32) | `pacman -S mingw-w64-i686-objfw` If your operating system is not listed, you can build ObjFW from source. @@ -134,22 +135,22 @@

Fossil

Clone the Fossil repository like this: - $ fossil clone https://objfw.nil.im + fossil clone https://objfw.nil.im You can then use Fossil's web interface to browse the timeline, tickets, wiki pages, etc.: - $ cd objfw - $ fossil ui + cd objfw + fossil ui In order to verify the signature of the currently checked out checkin, you can use: - $ fossil artifact current | gpg --verify + fossil artifact current | gpg --verify Please note that not all checkins are signed, as the signing key only resides on trusted systems. This means that checkins I perform on e.g. Windows are unsigned. However, usually it should not take long until there is another signed checkin. Alternatively, you can go back until the last signed checkin @@ -157,28 +158,28 @@

Git

To clone the Git repository, use the following: - $ git clone https://github.com/ObjFW/ObjFW + git clone https://github.com/ObjFW/ObjFW Git commits are not signed, so if you want to check the signature of an individual commit, branch head or tag, please use Fossil.

Building from source

To build ObjFW from source and install it, just run the following commands: - $ ./configure - $ make - $ make check - $ sudo make install + ./configure + make + make check + sudo make install In case you checked out ObjFW from the Fossil or Git repository, you need to run the following command first: - $ ./autogen.sh + ./autogen.sh

macOS and iOS

Building as a framework

@@ -190,23 +191,23 @@ regular instructions above. To build for iOS, follow the regular instructions, but instead of `./configure` do something like this: - $ clang="xcrun --sdk iphoneos clang" - $ export OBJC="$clang -arch arm64e -arch arm64" - $ export OBJCPP="$clang -arch arm64e -E" - $ export IPHONEOS_DEPLOYMENT_TARGET="10.0" - $ ./configure --prefix=/usr/local/ios --host=arm64-apple-darwin + clang="xcrun --sdk iphoneos clang" + export OBJC="$clang -arch arm64e -arch arm64" + export OBJCPP="$clang -arch arm64e -E" + export IPHONEOS_DEPLOYMENT_TARGET="10.0" + ./configure --prefix=/usr/local/ios --host=arm64-apple-darwin To build for the iOS simulator, follow the regular instructions, but instead of `./configure` use something like this: - $ clang="xcrun --sdk iphonesimulator clang" - $ export OBJC="$clang -arch $(uname -m)" - $ export IPHONEOS_DEPLOYMENT_TARGET="10.0" - $ ./configure --prefix=/usr/local/iossim --host=$(uname -m)-apple-darwin + clang="xcrun --sdk iphonesimulator clang" + export OBJC="$clang -arch $(uname -m)" + export IPHONEOS_DEPLOYMENT_TARGET="10.0" + ./configure --prefix=/usr/local/iossim --host=$(uname -m)-apple-darwin

Using the macOS or iOS framework in Xcode

To use the macOS framework in Xcode, you need to add the `.framework`s to your project and add the following flags to `Other C Flags`: @@ -258,31 +259,41 @@ target Windows 10 and newer, the CLANG64 and CLANG32 environments are the recommended ones. For CLANG64, use: - $ pacman -Syu mingw-w64-clang-x86_64-clang mingw-w64-clang-x86_64-fossil + pacman -Syu mingw-w64-clang-x86_64-clang \ + mingw-w64-clang-x86_64-fossil \ + mingw-w64-clang-x86_64-openssl For CLANG32, use: - $ pacman -Syu mingw-w64-clang-i686-clang mingw-w64-clang-i686-fossil + pacman -Syu mingw-w64-clang-i686-clang \ + mingw-w64-clang-i686-fossil \ + mingw-w64-clang-i686-openssl For CLANGARM64, use (you need to use Fossil via another environment): - $ pacman -Syu mingw-w64-clang-aarch64-clang + pacman -Syu mingw-w64-clang-aarch64-clang mingw-w64-clang-aarch64-openssl For MINGW64, use: - $ pacman -Syu mingw-w64-x86_64-clang mingw-w64-x86_64-fossil + pacman -Syu mingw-w64-x86_64-clang \ + mingw-w64-x86_64-fossil \ + mingw-w64-x86_64-openssl For MINGW32, use: - $ pacman -Syu mingw-w64-i686-clang mingw-w64-i686-fossil + pacman -Syu mingw-w64-i686-clang \ + mingw-w64-i686-fossil \ + mingw-w64-i686-openssl For UCRT64, use: - $ pacman -Syu mingw-w64-ucrt-x86_64-clang mingw-w64-ucrt-x86_64-fossil + pacman -Syu mingw-w64-ucrt-x86_64-clang \ + mingw-w64-ucrt-x86_64-fossil \ + mingw-w64-ucrt-x86_64-openssl When using `pacman` to install the packages, `pacman` might tell you to close the window. If it does so, close the window, restart MSYS2 and execute the `pacman` command again. @@ -290,23 +301,23 @@ created shortcuts for each of them in your start menu. Just make sure to use the correct shortcut for the environment you want to use. Finally, install a few more things that are common between all environments: - $ pacman -S autoconf automake make + pacman -S autoconf automake make

Getting, building and installing ObjFW

Start the MSYS2 using the shortcut for the environment you want to use and check out ObjFW: - $ fossil clone https://objfw.nil.im + fossil clone https://objfw.nil.im You can also download a release tarball if you want. Now `cd` to the newly checked out repository and build and install it: - $ ./autogen.sh && ./configure && make -j16 install + ./autogen.sh && ./configure && make -j16 install If everything was successful, you can now build projects using ObjFW for Windows using the normal `objfw-compile` and friends.

Nintendo DS, Nintendo 3DS and Wii

@@ -315,37 +326,37 @@

Nintendo DS

Follow the normal process, but instead of `./configure` run: - $ ./configure --host=arm-none-eabi --with-nds + ./configure --host=arm-none-eabi --with-nds

Nintendo 3DS

Follow the normal process, but instead of `./configure` run: - $ ./configure --host=arm-none-eabi --with-3ds + ./configure --host=arm-none-eabi --with-3ds

Wii

Follow the normal process, but instead of `./configure` run: - $ ./configure --host=powerpc-eabi --with-wii + ./configure --host=powerpc-eabi --with-wii

Amiga

Install [amiga-gcc](https://github.com/bebbo/amiga-gcc). Then follow the normal process, but instead of `./configure` run: - $ ./configure --host=m68k-amigaos + ./configure --host=m68k-amigaos

Writing your first application with ObjFW

To create your first, empty application, you can use `objfw-new`: - $ objfw-new --app MyFirstApp + objfw-new --app MyFirstApp This creates a file `MyFirstApp.m`. The `-[applicationDidFinishLaunching:]` method is called as soon as ObjFW finished all initialization. Use this as the entry point to your own code. For example, you could add the following line there to create a "Hello World": @@ -352,11 +363,11 @@ [OFStdOut writeLine: @"Hello World!"]; You can compile your new app using `objfw-compile`: - $ objfw-compile -o MyFirstApp MyFirstApp.m + objfw-compile -o MyFirstApp MyFirstApp.m `objfw-compile` is a tool that allows building applications and libraries using ObjFW without needing a full-blown build system. If you want to use your own build system, you can get the necessary flags from `objfw-config`. @@ -369,11 +380,11 @@ In order to build the documentation yourself (necessary to have documentation for trunk / master), you need to have [Doxygen](https://www.doxygen.nl) installed. Once installed, you can build the documentation from the root directory of the repository: - $ make docs + make docs

Bugs and feature requests

If you find any bugs or have feature requests, please