0. Building on *nix from git repository Run the autogen script to generate configure, then proceed to step 1. Prerequisites: You'll need autoconf, automake and libtool installed. $ ./autogen.sh 1. Building on *nix from a release $ ./configure $ make $ make check # (optional, but highly recommended) $ sudo make install 2. Building on iOS Use on the xcode project in IDE/iOS/wolfssl.xcodeproj There is a README in IDE/iOS with more information 3. Building for Apple ARM64 When building for an Apple ARM64 platform, ensure the host CPU type is detected as "aarch64" during configure, if not, pass --host=aarch64-apple-darwin to configure. 4. Building on Windows Use the Visual Studio Solution wolfssl64.sln 5. Building with IAR Please see the README in IDE/IAR-EWARM for detailed instructions 6. Building with Keil Please see the Keil Projects in IDE/MDK5-ARM/Projects 7. Building with Microchip tools Please see the README in mplabx 8. Building with Freescale MQX Please see the README in mqx 9. Building with Rowley CrossWorks for ARM Use the CrossWorks project in IDE/ROWLEY-CROSSWORKS-ARM/wolfssl.hzp There is a README.md in IDE/ROWLEY-CROSSWORKS-ARM with more information 10. Building with Arduino Use the script IDE/ARDUINO/wolfssl-arduino.sh to reformat the wolfSSL library for compatibility with the Arduino IDE. There is a README.md in IDE/ARDUINO for detailed instructions. 11. Building for Android with Visual Studio 2017 Please see the README in IDE/VS-ARM. Use the Visual Studio solution IDE/VS-ARM/wolfssl.sln. 12. Building for Yocto Project or OpenEmbedded Please see the README in the "meta-wolfssl" repository. This repository holds wolfSSL's Yocto and OpenEmbedded layer, which contains recipes for wolfSSL, wolfSSH, wolfMQTT, wolfTPM, wolfCrypt examples, and OSS project bbappend files. https://github.com/wolfssl/meta-wolfssl The wolfSSL recipe can also be found in the OpenEmbedded "meta-openembedded/meta-networking/recipes-connectivity" layer: https://github.com/openembedded/meta-openembedded 13. Porting to a new platform Please see section 2.4 in the manual: http://www.wolfssl.com/yaSSL/Docs-cyassl-manual-2-building-cyassl.html 14. Building with CMake Note: Primary development uses automake (./configure). The support for CMake is still under development. For configuring wolfssl using CMake, we recommend downloading the CMake GUI (https://cmake.org/download/). This tool allows you to see all of wolfssl's configuration variables, set them, and view their descriptions. Looking at the GUI or CMakeCache.txt (generated after running cmake once) is the best way to find out what configuration options are available and what they do. You can also invoke CMake from the GUI, which is described in the Windows instructions below. For Unix-based systems, we describe the command line work flow. Regardless of your chosen workflow, cmake will generate a header options.h in the wolfssl directory that contains the options used to configure the build. Unix-based Platforms --- 1) Navigate to the wolfssl root directory containing "CMakeLists.txt". 2) Create a directory called "build" and change into it. This is where CMake will store build files. 3) Run `cmake ..` to generate the target build files (e.g. UNIX Makefiles). To enable or disable features, set them using -D