mirror of
https://github.com/warmcat/libwebsockets.git
synced 2025-03-09 00:00:04 +01:00
docs: add READMEs/README.porting.md
This commit is contained in:
parent
9bcbefea26
commit
080a72669b
1 changed files with 60 additions and 0 deletions
60
READMEs/README.porting.md
Normal file
60
READMEs/README.porting.md
Normal file
|
@ -0,0 +1,60 @@
|
|||
# Guidance for porting to new platform
|
||||
|
||||
Where differences existed between the initial POSIX platform for lws and other
|
||||
supported platforms like Windows, `lws_plat_...()` apis were added to move
|
||||
handling to platform-specific code in `./lib/plat/`.
|
||||
|
||||
Depending o which platform is built, different platform-specific implementations
|
||||
of these `lws_plat...()` apis get built.
|
||||
|
||||
## 1) Prepare the cmake cross-build file if necessary
|
||||
|
||||
CMake isolates its settings for cross-build into a separate file, which can be
|
||||
used to different cmake projects for the same platform as well.
|
||||
|
||||
Find a similar examples already in `./contrib/cross-*` and copy and adapt it
|
||||
as needed,
|
||||
|
||||
All settings related to toolchain should go in there. For cross-toolchain,
|
||||
the convention is to pass the path to its installed directory in `CROSS_PATH`
|
||||
environment variable.
|
||||
|
||||
## 2) Copy the closest platform dir in ./lib/plat
|
||||
|
||||
Wholesale copy the closest existing platform dir to `/lib/plat/myplatform` and
|
||||
rename the files.
|
||||
|
||||
Remove stuff specific to the original platform.
|
||||
|
||||
## 3) Add a flag in CMakeLists.txt
|
||||
|
||||
Cut and paste a flag to select your platform, preferably `LWS_PLAT_MYPLATFORM` or so
|
||||
|
||||
## 4) Add a section to force-select and deselect other cmake options based on platform flag
|
||||
|
||||
Some options on by default may not make sense on your platform, and others off
|
||||
by default may be mandatory. After the options() section in CMakeLists.txt, you
|
||||
can use this kind of structure
|
||||
|
||||
```
|
||||
if (LWS_PLAT_MYPLATFORM)
|
||||
set(LWS_WITH_XXXX 0)
|
||||
endif()
|
||||
```
|
||||
|
||||
to enforce implicit requirements of your platform. Optional stuff should be set by
|
||||
running cmake commandline as usual.
|
||||
|
||||
## 5) Add building your platform files into CMakeLists.txt
|
||||
|
||||
Add entries in CMakeLists.txt for building stuff in `./lib/plat/myplatform` when
|
||||
`LWS_PLAT_MYPLATFORM` is enabled.
|
||||
|
||||
## 6) Adapt your copied ./lib/plat/myplatform/ files
|
||||
|
||||
You can now do test builds using the cross-build file, your platform flag in
|
||||
cmake, and your copied ./lib/plat content... this last part since it was
|
||||
copied from another platform will initially be a plentiful source of errors.
|
||||
|
||||
You can iteratively build and adapt the platform files.
|
||||
|
Loading…
Add table
Reference in a new issue