Doc updates
This commit is contained in:
parent
aa813bdf32
commit
44f335c87f
3 changed files with 29 additions and 3 deletions
14
CHANGES.md
14
CHANGES.md
|
|
@ -15,7 +15,7 @@ Refer to the documentation for `getHeader()` for details on how to use this new
|
||||||
|
|
||||||
See the full list of changes here:
|
See the full list of changes here:
|
||||||
|
|
||||||
https://github.com/nimterop/nimterop/compare/v0.5.9...v0.6.3
|
https://github.com/nimterop/nimterop/compare/v0.5.9...v0.6.5
|
||||||
|
|
||||||
### Breaking changes
|
### Breaking changes
|
||||||
|
|
||||||
|
|
@ -27,6 +27,8 @@ https://github.com/nimterop/nimterop/compare/v0.5.9...v0.6.3
|
||||||
|
|
||||||
- Nameless enum values are no longer typed to the made-up enum type name, they are instead typed as `cint` to match the underlying type. This allows using such enums without having to depend on the made-up name which could change if enum ordering changes upstream. [#236][i236] (since v0.6.1)
|
- Nameless enum values are no longer typed to the made-up enum type name, they are instead typed as `cint` to match the underlying type. This allows using such enums without having to depend on the made-up name which could change if enum ordering changes upstream. [#236][i236] (since v0.6.1)
|
||||||
|
|
||||||
|
- Static libraries installed and linked with `getHeader()` now have their `{.passL.}` pragmas forwarded to the generated wrapper. This might lead to link errors in existing wrappers if other dependencies are specified with `{.passL.}` calls and the order of linking is wrong. This can be fixed by changing such explicit `{.passL.}` calls with `cPassL()` which will forward the link call to the generated wrapper as well. (since v0.6.5)
|
||||||
|
|
||||||
### New functionality
|
### New functionality
|
||||||
|
|
||||||
- `getHeader()` now detects and links against `.lib` files as part of enabling Conan.io. Not all `.lib` files are compatible with MinGW as already stated above but for those that work, this is a required capability.
|
- `getHeader()` now detects and links against `.lib` files as part of enabling Conan.io. Not all `.lib` files are compatible with MinGW as already stated above but for those that work, this is a required capability.
|
||||||
|
|
@ -43,6 +45,12 @@ https://github.com/nimterop/nimterop/compare/v0.5.9...v0.6.3
|
||||||
|
|
||||||
- It is now possible to exclude the contents of specific files or entire directories from the wrapped output using `--exclude | -X` with `toast` or `cExclude()` from a wrapper. This might be required when a header uses `#include` to pull in external dependencies. E.g. `sciter` has a `#include <gtk/gtk.h>` which pulls in the entire GTK ecosystem which is needed for successful preprocessing but we do not want to include those headers in the wrapped output when using `--recurse | -r`. (since v0.6.4)
|
- It is now possible to exclude the contents of specific files or entire directories from the wrapped output using `--exclude | -X` with `toast` or `cExclude()` from a wrapper. This might be required when a header uses `#include` to pull in external dependencies. E.g. `sciter` has a `#include <gtk/gtk.h>` which pulls in the entire GTK ecosystem which is needed for successful preprocessing but we do not want to include those headers in the wrapped output when using `--recurse | -r`. (since v0.6.4)
|
||||||
|
|
||||||
|
- All `cDefine()`, `cIncludeDir()` and `cCompile()` calls now forward relevant pragmas into the generated wrapper further enabling standalone wrappers. [#239][i239]
|
||||||
|
|
||||||
|
- Added `cPassC()` and `cPassL()` to forward C/C++ compilation pragmas into the generated wrapper. (since v0.6.5)
|
||||||
|
|
||||||
|
- Added `--compile`, `--passC` and `--passL` flags to `toast` to enable the previous two improvements. (since v0.6.5)
|
||||||
|
|
||||||
### Other improvements
|
### Other improvements
|
||||||
|
|
||||||
- Generated wrappers no longer depend on nimterop being present - no more `import nimterop/types`. Supporting code is directly included in the wrapper output and only when required. E.g. enum macro is only included if wrapper contains enums. [#125][i125] (since v0.6.1)
|
- Generated wrappers no longer depend on nimterop being present - no more `import nimterop/types`. Supporting code is directly included in the wrapper output and only when required. E.g. enum macro is only included if wrapper contains enums. [#125][i125] (since v0.6.1)
|
||||||
|
|
@ -51,6 +59,7 @@ https://github.com/nimterop/nimterop/compare/v0.5.9...v0.6.3
|
||||||
|
|
||||||
- `cIncludeDir()` can now accept a `seq[string]` of directories and an optional `exclude` param which sets those include directories to not be included in the wrapped output. (since v0.6.4)
|
- `cIncludeDir()` can now accept a `seq[string]` of directories and an optional `exclude` param which sets those include directories to not be included in the wrapped output. (since v0.6.4)
|
||||||
|
|
||||||
|
- `cDefine()` can now accept a `seq[string]` of values. (since v0.6.5)
|
||||||
|
|
||||||
## Version 0.5.0
|
## Version 0.5.0
|
||||||
|
|
||||||
|
|
@ -140,4 +149,5 @@ https://github.com/nimterop/nimterop/compare/v0.4.4...v0.5.4
|
||||||
[i197]: https://github.com/nimterop/nimterop/issues/197
|
[i197]: https://github.com/nimterop/nimterop/issues/197
|
||||||
[i200]: https://github.com/nimterop/nimterop/issues/200
|
[i200]: https://github.com/nimterop/nimterop/issues/200
|
||||||
[i236]: https://github.com/nimterop/nimterop/issues/236
|
[i236]: https://github.com/nimterop/nimterop/issues/236
|
||||||
[i237]: https://github.com/nimterop/nimterop/issues/237
|
[i237]: https://github.com/nimterop/nimterop/issues/237
|
||||||
|
[i239]: https://github.com/nimterop/nimterop/issues/239
|
||||||
|
|
@ -218,10 +218,12 @@ Options:
|
||||||
-h, --help print this cligen-erated help
|
-h, --help print this cligen-erated help
|
||||||
--help-syntax advanced: prepend,plurals,..
|
--help-syntax advanced: prepend,plurals,..
|
||||||
-k, --check bool false check generated wrapper with compiler
|
-k, --check bool false check generated wrapper with compiler
|
||||||
|
--compile= strings {} create {.compile.} entries in generated wrapper
|
||||||
-C=, --convention= string "cdecl" calling convention for wrapped procs
|
-C=, --convention= string "cdecl" calling convention for wrapped procs
|
||||||
-d, --debug bool false enable debug output
|
-d, --debug bool false enable debug output
|
||||||
-D=, --defines= strings {} definitions to pass to preprocessor
|
-D=, --defines= strings {} definitions to pass to preprocessor
|
||||||
-l=, --dynlib= string "" {.dynlib.} pragma to import symbols - Nim const string or file path
|
-l=, --dynlib= string "" {.dynlib.} pragma to import symbols - Nim const string or
|
||||||
|
file path
|
||||||
-X=, --exclude= strings {} files or directories to exclude from the wrapped output
|
-X=, --exclude= strings {} files or directories to exclude from the wrapped output
|
||||||
-f=, --feature= Features {} flags to enable experimental features
|
-f=, --feature= Features {} flags to enable experimental features
|
||||||
-I=, --includeDirs= strings {} include directory to pass to preprocessor
|
-I=, --includeDirs= strings {} include directory to pass to preprocessor
|
||||||
|
|
@ -230,6 +232,8 @@ Options:
|
||||||
-c, --noComments bool false exclude top-level comments from output
|
-c, --noComments bool false exclude top-level comments from output
|
||||||
-H, --noHeader bool false skip {.header.} pragma in wrapper
|
-H, --noHeader bool false skip {.header.} pragma in wrapper
|
||||||
-o=, --output= string "" file to output content - default: stdout
|
-o=, --output= string "" file to output content - default: stdout
|
||||||
|
--passC= strings {} create {.passC.} entries in generated wrapper
|
||||||
|
--passL= strings {} create {.passL.} entries in generated wrapper
|
||||||
-a, --past bool false print AST output
|
-a, --past bool false print AST output
|
||||||
--pluginSourcePath= string "" nim file to build and load as a plugin
|
--pluginSourcePath= string "" nim file to build and load as a plugin
|
||||||
-n, --pnim bool false print Nim output
|
-n, --pnim bool false print Nim output
|
||||||
|
|
|
||||||
|
|
@ -368,6 +368,8 @@ macro cDefine*(name: static[string], val: static[string] = ""): untyped =
|
||||||
## `#define` an identifer that is forwarded to the C/C++ preprocessor if
|
## `#define` an identifer that is forwarded to the C/C++ preprocessor if
|
||||||
## called within `cImport()` or `c2nImport()` as well as to the C/C++
|
## called within `cImport()` or `c2nImport()` as well as to the C/C++
|
||||||
## compiler during Nim compilation using `{.passC: "-DXXX".}`
|
## compiler during Nim compilation using `{.passC: "-DXXX".}`
|
||||||
|
##
|
||||||
|
## This needs to be called before `cImport()` to take effect.
|
||||||
var str = name
|
var str = name
|
||||||
if val.nBl:
|
if val.nBl:
|
||||||
str &= &"={val.quoteShell}"
|
str &= &"={val.quoteShell}"
|
||||||
|
|
@ -379,6 +381,8 @@ macro cDefine*(values: static seq[string]): untyped =
|
||||||
## `#define` multiple identifers that are forwarded to the C/C++ preprocessor
|
## `#define` multiple identifers that are forwarded to the C/C++ preprocessor
|
||||||
## if called within `cImport()` or `c2nImport()` as well as to the C/C++
|
## if called within `cImport()` or `c2nImport()` as well as to the C/C++
|
||||||
## compiler during Nim compilation using `{.passC: "-DXXX".}`
|
## compiler during Nim compilation using `{.passC: "-DXXX".}`
|
||||||
|
##
|
||||||
|
## This needs to be called before `cImport()` to take effect.
|
||||||
for value in values:
|
for value in values:
|
||||||
let
|
let
|
||||||
spl = value.split("=", maxsplit = 1)
|
spl = value.split("=", maxsplit = 1)
|
||||||
|
|
@ -390,11 +394,15 @@ macro cDefine*(values: static seq[string]): untyped =
|
||||||
macro cPassC*(value: static string): untyped =
|
macro cPassC*(value: static string): untyped =
|
||||||
## Create a `{.passC.}` entry that gets forwarded to the C/C++ compiler
|
## Create a `{.passC.}` entry that gets forwarded to the C/C++ compiler
|
||||||
## during Nim compilation.
|
## during Nim compilation.
|
||||||
|
##
|
||||||
|
## This needs to be called before `cImport()` to take effect.
|
||||||
gStateCT.passC.add value
|
gStateCT.passC.add value
|
||||||
|
|
||||||
macro cPassL*(value: static string): untyped =
|
macro cPassL*(value: static string): untyped =
|
||||||
## Create a `{.passL.}` entry that gets forwarded to the C/C++ compiler
|
## Create a `{.passL.}` entry that gets forwarded to the C/C++ compiler
|
||||||
## during Nim compilation.
|
## during Nim compilation.
|
||||||
|
##
|
||||||
|
## This needs to be called before `cImport()` to take effect.
|
||||||
gStateCT.passL.add value
|
gStateCT.passL.add value
|
||||||
|
|
||||||
proc cAddSearchDir*(dir: string) {.compileTime.} =
|
proc cAddSearchDir*(dir: string) {.compileTime.} =
|
||||||
|
|
@ -416,6 +424,8 @@ macro cIncludeDir*(dirs: static seq[string], exclude: static[bool] = false): unt
|
||||||
##
|
##
|
||||||
## Set `exclude = true` if the contents of these include directories should
|
## Set `exclude = true` if the contents of these include directories should
|
||||||
## not be included in the wrapped output.
|
## not be included in the wrapped output.
|
||||||
|
##
|
||||||
|
## This needs to be called before `cImport()` to take effect.
|
||||||
for dir in dirs:
|
for dir in dirs:
|
||||||
let fullpath = findPath(dir)
|
let fullpath = findPath(dir)
|
||||||
if fullpath notin gStateCT.includeDirs:
|
if fullpath notin gStateCT.includeDirs:
|
||||||
|
|
@ -430,6 +440,8 @@ macro cIncludeDir*(dir: static[string], exclude: static[bool] = false): untyped
|
||||||
##
|
##
|
||||||
## Set `exclude = true` if the contents of this include directory should
|
## Set `exclude = true` if the contents of this include directory should
|
||||||
## not be included in the wrapped output.
|
## not be included in the wrapped output.
|
||||||
|
##
|
||||||
|
## This needs to be called before `cImport()` to take effect.
|
||||||
return quote do:
|
return quote do:
|
||||||
cIncludeDir(@[`dir`], `exclude` == 1)
|
cIncludeDir(@[`dir`], `exclude` == 1)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue