mirror of
https://github.com/obgm/libcoap.git
synced 2025-10-14 02:19:34 +08:00

Move the MinGW #if tests to after where mswsock.h is included. Tidy up documentation. Tested against MSYS2 UCRT64, CLANG64, MINGW32 and MINGW64 on Windows 11. Fixed a couple of minor build issues found.
232 lines
6.5 KiB
Plaintext
232 lines
6.5 KiB
Plaintext
For Windows builds - see the Windows Section
|
|
|
|
Obtaining the Libcoap Source
|
|
============================
|
|
|
|
To get the libcoap library source, you need to do either the following
|
|
|
|
* Obtain the latest distribution package file from
|
|
https://github.com/obgm/libcoap/archive/develop.zip
|
|
[There is a stable version at
|
|
https://github.com/obgm/libcoap/archive/main.zip]
|
|
* Change to the directory that you want to install the libcoap sub-directory
|
|
into
|
|
* Unpack the distribution package file
|
|
* Change into the top level directory of the unpackaged files
|
|
|
|
or alternatively, clone the libcoap git repository from github
|
|
|
|
* Change to the directory that you want to install the libcoap sub-directory
|
|
into.
|
|
* Then clone the latest (develop) version of the code:-
|
|
git clone https://github.com/obgm/libcoap.git
|
|
* Change into the top level directory of the cloned files
|
|
* Optionally, change the branch from develop to the stable main branch:-
|
|
git checkout main
|
|
|
|
Building Libcoap Libraries and Examples
|
|
=======================================
|
|
|
|
Follow the appropriate sections below
|
|
|
|
|
|
TinyDTLS Only
|
|
=============
|
|
|
|
It is possible that you may need to execute the following two commands once to
|
|
get the TinyDTLS code into your project, so the TinyDTLS library can be used.
|
|
|
|
git submodule init
|
|
git submodule update
|
|
|
|
General Building with cmake for linux/windows/macos/android (not for RIOT, LwIP or Contiki-NG - see below)
|
|
================
|
|
|
|
cmake -E remove_directory build
|
|
cmake -E make_directory build
|
|
cd build
|
|
cmake .. -DENABLE_TESTS=ON
|
|
cmake --build .
|
|
[sudo] cmake --build . -- install
|
|
cd ..
|
|
|
|
Note: to see possible options (TLS lib, doc, tests, examples etc.):
|
|
cmake -LH build
|
|
|
|
Note: For Windows, this is supported by Visual Studio Code with CMake extension
|
|
Note: You must use cmake version >=3.10.
|
|
|
|
Note: you can use cmake's find package after installation: find_package(libcoap-3 REQUIRED),
|
|
and target_link_libraries(myTarget PRIVATE libcoap::coap-2)
|
|
|
|
Note: Shared Library support is not currently available for Windows.
|
|
|
|
General Building with autoconf (not for RIOT, LwIP or Contiki-NG - see below)
|
|
================
|
|
|
|
./autogen.sh
|
|
./configure
|
|
make
|
|
sudo make install
|
|
|
|
./autogen.sh will fail if there is a required package for buildling libcoap
|
|
that is missing. Install the missing package and try ./autogen.sh again.
|
|
|
|
It is possible that you may need to provide some options to ./configure
|
|
to customize your installation.
|
|
|
|
In particular you may need to define which (D)TLS library to use as well as
|
|
disable some building of documentation.
|
|
|
|
General configure instructions can be found in INSTALL, which is built
|
|
by ./autogen.sh
|
|
|
|
./configure --help
|
|
gives the specific options available to libcoap.
|
|
|
|
Some examples are:-
|
|
|
|
# No DTLS
|
|
./configure --enable-tests --disable-documentation --enable-examples --disable-dtls --enable-shared
|
|
|
|
# With TinyDTLS
|
|
./configure --enable-tests --disable-documentation --enable-examples --with-tinydtls --enable-shared
|
|
|
|
Note: FreeBSD requires gmake instead of make when building TinyDTLS - i.e.
|
|
gmake
|
|
sudo gmake install
|
|
|
|
# With OpenSSL
|
|
./configure --with-openssl --enable-tests --enable-shared
|
|
|
|
# With wolfSSL
|
|
./configure --with-wolfssl --enable-tests --enable-shared
|
|
|
|
# With GnuTLS
|
|
./configure --with-gnutls --enable-tests --enable-shared
|
|
|
|
Note: --disable-documentation disables the building of doxygen and man page
|
|
files. If you want to only disable one of them, use --disable-doxygen or
|
|
--disable-manpages. Doxygen requires the program doxygen and man pages require
|
|
the program a2x to build the appropriate files.
|
|
|
|
If you need to rebuild the libcoap-*.{map,sym} files to update any exposed
|
|
function changes, run
|
|
|
|
make update-map-file
|
|
|
|
prior to running 'make'.
|
|
|
|
RIOT
|
|
====
|
|
|
|
cd examples/riot
|
|
make
|
|
|
|
See examples/riot/README for further information.
|
|
|
|
LwIP
|
|
====
|
|
|
|
cd examples/lwip
|
|
make
|
|
|
|
Executable is ./server. See examples/lwip/README for further information.
|
|
|
|
Contiki-NG
|
|
==========
|
|
|
|
cd examples/contiki
|
|
make
|
|
|
|
Executable is ./server.native. See examples/contiki/README for further
|
|
information.
|
|
|
|
Zephyr
|
|
======
|
|
|
|
cd examples/zephyr
|
|
make
|
|
|
|
See examples/zephyr/README for further information.
|
|
|
|
Windows
|
|
=======
|
|
|
|
Install OpenSSL (minimum version 1.1.0) including the development libraries if
|
|
not already installed.
|
|
|
|
Within Visual Studio, "Clone or check out code" using the repository
|
|
https://github.com/obgm/libcoap.git
|
|
|
|
You may need to update the SDK version of the libcoap Windows Project files to
|
|
match that of the SDK version of the Visual Studio you are using. In Solution
|
|
Explorer with the view set to libcoap.sln, right click "Solution 'libcoap'"
|
|
and then "Retarget solution".
|
|
|
|
You may need to edit win32\libcoap.props to update the OpenSSLRootDir and
|
|
OpenSSLRootDirDbg variables to point to the top level directory where OpenSSL
|
|
is installed so that the include, lib etc. directories are correctly set up.
|
|
Note: Make sure that you include a trailing \ in the variable definitions.
|
|
|
|
Alternatively you can build everything in Visual Studio with CMake.
|
|
|
|
MinGW
|
|
=====
|
|
|
|
As there are many ways to install MinGW, depending on the different
|
|
installed packages, random failures can occur (usually because of conflicts
|
|
with cygwin based packages). Below is a way known to work with libcoap
|
|
on a Windows host.
|
|
|
|
Remove any old copy of MSYS2 using Windows program remove.
|
|
|
|
Download https://repo.msys2.org/distrib/x86_64/msys2-x86_64-20230318.exe or
|
|
later and run the executable, accepting the defaults.
|
|
|
|
In a UCRT64 window, add in the following packages
|
|
|
|
pacman -S git
|
|
pacman -S vim
|
|
pacman -S mingw-w64-ucrt-x86_64-cmake
|
|
pacman -S mingw-w64-ucrt-x86_64-gcc
|
|
pacman -S mingw-w64-ucrt-x86_64-openssl
|
|
|
|
Alternatively, in a MINGW64 window, add in the following packages
|
|
|
|
pacman -S git
|
|
pacman -S vim
|
|
pacman -S mingw-w64-x86_64-cmake
|
|
pacman -S mingw-w64-x86_64-gcc
|
|
pacman -S mingw-w64-x86_64-openssl
|
|
|
|
Alternatively, in a MINGW32 window, add in the following packages
|
|
|
|
pacman -S git
|
|
pacman -S vim
|
|
pacman -S mingw-w64-i686-cmake
|
|
pacman -S mingw-w64-i686-gcc
|
|
pacman -S mingw-w64-i686-openssl
|
|
|
|
Alternatively, in a CLANG64 window, add in the following packages
|
|
|
|
pacman -S git
|
|
pacman -S vim
|
|
pacman -S mingw-w64-clang-x86_64-cmake
|
|
pacman -S mingw-w64-clang-x86_64-gcc
|
|
pacman -S mingw-w64-clang-x86_64-openssl
|
|
|
|
Then clone a copy of the github libcoap repository in a UCRT64 or MINGW64 window
|
|
|
|
git clone https://github.com/obgm/libcoap.git
|
|
cd libcoap
|
|
|
|
Then build the libcoap library and example executables (which will be in the
|
|
build directory)
|
|
|
|
cmake -E remove_directory build
|
|
cmake -E make_directory build
|
|
cd build
|
|
cmake .. -DENABLE_DOCS=OFF -DDTLS_BACKEND=openssl
|
|
cmake --build .
|