Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: Add new custom built and test target to make in order to enable easy build or test single nim modules #2913

Merged
merged 3 commits into from
Jul 17, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ testcommon: | build deps
##########
## Waku ##
##########
.PHONY: testwaku wakunode2 testwakunode2 example2 chat2 chat2bridge
.PHONY: testwaku wakunode2 testwakunode2 example2 chat2 chat2bridge liteprotocoltester

# install anvil only for the testwaku target
testwaku: | build deps anvil librln
Expand Down Expand Up @@ -218,6 +218,13 @@ liteprotocoltester: | build deps librln
echo -e $(BUILD_MSG) "build/$@" && \
$(ENV_SCRIPT) nim liteprotocoltester $(NIM_PARAMS) waku.nims

build/%: | build deps librln
echo -e $(BUILD_MSG) "build/$*" && \
$(ENV_SCRIPT) nim buildone $(NIM_PARAMS) waku.nims $*

test/%: | build deps librln
echo -e $(BUILD_MSG) "test/$*" && \
$(ENV_SCRIPT) nim testone $(NIM_PARAMS) waku.nims $*

################
## Waku tools ##
Expand Down
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,22 @@ If everything went well, you should see your prompt suffixed with `[Nimbus env]$
make test
```

### Building single test files

During development it is handful to build and run a single test file.
To support this make has a specific target:

targets:
- `build/<relative path to your test file.nim>`
- `test/<relative path to your test file.nim>`

Binary will be created as `<path to your test file.nim>.bin` under the `build` directory .

```bash
# Build and run your test file separately
make test/tests/common/test_enr_builder.nim
```

### Examples

Examples can be found in the examples folder.
Expand Down
36 changes: 30 additions & 6 deletions waku.nimble
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,30 @@ requires "nim >= 2.0.8",
"db_connector"

### Helper functions
proc buildModule(filePath, params = "", lang = "c") =
if not dirExists "build":
mkDir "build"
# allow something like "nim nimbus --verbosity:0 --hints:off nimbus.nims"
var extra_params = params
for i in 2 ..< paramCount() - 1:
extra_params &= " " & paramStr(i)

if not fileExists(filePath):
echo "File to build not found: " & filePath
return

exec "nim " & lang & " --out:build/" & filepath & ".bin --mm:refc " & extra_params &
" " & filePath

proc buildBinary(name: string, srcDir = "./", params = "", lang = "c") =
if not dirExists "build":
mkDir "build"
# allow something like "nim nimbus --verbosity:0 --hints:off nimbus.nims"
var extra_params = params
for i in 2 ..< paramCount():
extra_params &= " " & paramStr(i)
exec "nim " & lang & " --out:build/" & name & " --mm:refc " & extra_params & " " & srcDir & name &
".nim"
exec "nim " & lang & " --out:build/" & name & " --mm:refc " & extra_params & " " &
srcDir & name & ".nim"

proc buildLibrary(name: string, srcDir = "./", params = "", `type` = "static") =
if not dirExists "build":
Expand All @@ -45,12 +60,12 @@ proc buildLibrary(name: string, srcDir = "./", params = "", `type` = "static") =
extra_params &= " " & paramStr(i)
if `type` == "static":
exec "nim c" & " --out:build/" & name &
".a --threads:on --app:staticlib --opt:size --noMain --mm:refc --header " & extra_params &
" " & srcDir & name & ".nim"
".a --threads:on --app:staticlib --opt:size --noMain --mm:refc --header " &
extra_params & " " & srcDir & name & ".nim"
else:
exec "nim c" & " --out:build/" & name &
".so --threads:on --app:lib --opt:size --noMain --mm:refc --header " & extra_params & " " &
srcDir & name & ".nim"
".so --threads:on --app:lib --opt:size --noMain --mm:refc --header " & extra_params &
" " & srcDir & name & ".nim"

proc buildMobileAndroid(srcDir = ".", params = "") =
let cpu = getEnv("CPU")
Expand Down Expand Up @@ -129,6 +144,15 @@ task liteprotocoltester, "Build liteprotocoltester":
let name = "liteprotocoltester"
buildBinary name, "apps/liteprotocoltester/"

task buildone, "Build custom target":
let filepath = paramStr(paramCount())
buildModule filepath

task testone, "Test custom target":
let filepath = paramStr(paramCount())
buildModule filepath
exec "build/" & filepath & ".bin"

### C Bindings
task libwakuStatic, "Build the cbindings waku node library":
let name = "libwaku"
Expand Down
Loading