Skip to content

Commit 5c38a53

Browse files
feat: libwaku dll for status go (#3460)
1 parent 15025fe commit 5c38a53

File tree

5 files changed

+45
-36
lines changed

5 files changed

+45
-36
lines changed

.github/workflows/windows-build.yml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,13 @@ jobs:
8181
make CC="gcc -fPIC -D_WIN32_WINNT=0x0600 -DNATPMP_STATICLIB" libnatpmp.a V=1
8282
cd ../../../../
8383
84-
- name: Building wakunode2
84+
- name: Building wakunode2.exe
8585
run: |
8686
make wakunode2 LOG_LEVEL=DEBUG V=3 -j8
87+
88+
- name: Building libwaku.dll
89+
run: |
90+
make libwaku STATIC=0 LOG_LEVEL=DEBUG V=1 -j
8791
8892
- name: Check Executable
8993
run: |
@@ -93,3 +97,9 @@ jobs:
9397
echo "Build failed: wakunode2.exe not found"
9498
exit 1
9599
fi
100+
if [ -f "./build/libwaku.dll" ]; then
101+
echo "libwaku.dll build successful"
102+
else
103+
echo "Build failed: libwaku.dll not found"
104+
exit 1
105+
fi

Makefile

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -398,14 +398,16 @@ docker-liteprotocoltester-push:
398398

399399
STATIC ?= 0
400400

401+
401402
libwaku: | build deps librln
402-
rm -f build/libwaku*
403+
rm -f build/libwaku*
404+
403405
ifeq ($(STATIC), 1)
404-
echo -e $(BUILD_MSG) "build/$@.a" && \
405-
$(ENV_SCRIPT) nim libwakuStatic $(NIM_PARAMS) waku.nims
406+
echo -e $(BUILD_MSG) "build/$@.a" && $(ENV_SCRIPT) nim libwakuStatic $(NIM_PARAMS) waku.nims
407+
else ifeq ($(detected_OS),Windows)
408+
echo -e $(BUILD_MSG) "build/$@.dll" && $(ENV_SCRIPT) nim libwakuDynamic $(NIM_PARAMS) waku.nims
406409
else
407-
echo -e $(BUILD_MSG) "build/$@.so" && \
408-
$(ENV_SCRIPT) nim libwakuDynamic $(NIM_PARAMS) waku.nims
410+
echo -e $(BUILD_MSG) "build/$@.so" && $(ENV_SCRIPT) nim libwakuDynamic $(NIM_PARAMS) waku.nims
409411
endif
410412

411413
#####################

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ pacman -S --noconfirm --needed mingw-w64-x86_64-python
8787
#### 3. Build Wakunode
8888
- Open Git Bash as administrator
8989
- clone nwaku and cd nwaku
90-
- Execute: `./scripts/build_wakunode_windows.sh`
90+
- Execute: `./scripts/build_windows.sh`
9191

9292
#### 4. Troubleshooting
9393
If `wakunode2.exe` isn't generated:

scripts/build_wakunode_windows.sh renamed to scripts/build_windows.sh

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,25 +36,28 @@ cd ../../../..
3636

3737
echo "6. -.-.-.- Building libunwind -.-.-.-"
3838
cd vendor/nim-libbacktrace
39-
execute_command "make all V=1"
40-
execute_command "make install/usr/lib/libunwind.a V=1"
39+
execute_command "make all V=1 -j8"
40+
execute_command "make install/usr/lib/libunwind.a V=1 -j8"
4141
cp ./vendor/libunwind/build/lib/libunwind.a install/usr/lib
4242
cd ../../
4343

4444
echo "7. -.-.-.- Building miniupnpc -.-.-.- "
4545
cd vendor/nim-nat-traversal/vendor/miniupnp/miniupnpc
4646
execute_command "git checkout little_chore_windows_support"
47-
execute_command "make -f Makefile.mingw CC=gcc CXX=g++ libminiupnpc.a V=1"
47+
execute_command "make -f Makefile.mingw CC=gcc CXX=g++ libminiupnpc.a V=1 -j8"
4848
cd ../../../../..
4949

5050
echo "8. -.-.-.- Building libnatpmp -.-.-.- "
5151
cd ./vendor/nim-nat-traversal/vendor/libnatpmp-upstream
52-
make CC="gcc -fPIC -D_WIN32_WINNT=0x0600 -DNATPMP_STATICLIB" libnatpmp.a V=1
52+
make CC="gcc -fPIC -D_WIN32_WINNT=0x0600 -DNATPMP_STATICLIB" libnatpmp.a V=1 -j8
5353
cd ../../../../
5454

5555
echo "9. -.-.-.- Building wakunode2 -.-.-.- "
5656
execute_command "make wakunode2 LOG_LEVEL=DEBUG V=1 -j8"
5757

58+
echo "10. -.-.-.- Building libwaku -.-.-.- "
59+
execute_command "make libwaku STATIC=0 LOG_LEVEL=DEBUG V=1 -j8"
60+
5861
echo "Windows setup completed successfully!"
5962
echo "✓ Successful commands: $success_count"
6063
echo "✗ Failed commands: $failure_count"

waku.nimble

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import os
12
mode = ScriptMode.Verbose
23

34
### Package
@@ -69,9 +70,15 @@ proc buildLibrary(name: string, srcDir = "./", params = "", `type` = "static") =
6970
".a --threads:on --app:staticlib --opt:size --noMain --mm:refc --header -d:metrics --nimMainPrefix:libwaku --skipParentCfg:on -d:discv5_protocol_id=d5waku " &
7071
extra_params & " " & srcDir & name & ".nim"
7172
else:
72-
exec "nim c" & " --out:build/" & name &
73-
".so --threads:on --app:lib --opt:size --noMain --mm:refc --header -d:metrics --nimMainPrefix:libwaku --skipParentCfg:on -d:discv5_protocol_id=d5waku " &
74-
extra_params & " " & srcDir & name & ".nim"
73+
var lib_name = toDll("libwaku")
74+
when defined(windows):
75+
exec "nim c" & " --out:build/" & lib_name &
76+
" --threads:on --app:lib --opt:size --noMain --mm:refc --header -d:metrics --nimMainPrefix:libwaku --skipParentCfg:off -d:discv5_protocol_id=d5waku " &
77+
extra_params & " " & srcDir & name & ".nim"
78+
else:
79+
exec "nim c" & " --out:build/" & lib_name &
80+
" --threads:on --app:lib --opt:size --noMain --mm:refc --header -d:metrics --nimMainPrefix:libwaku --skipParentCfg:on -d:discv5_protocol_id=d5waku " &
81+
extra_params & " " & srcDir & name & ".nim"
7582

7683
proc buildMobileAndroid(srcDir = ".", params = "") =
7784
let cpu = getEnv("CPU")
@@ -160,33 +167,20 @@ task testone, "Test custom target":
160167
exec "build/" & filepath & ".bin"
161168

162169
### C Bindings
170+
let chroniclesParams =
171+
"-d:chronicles_line_numbers " & "-d:chronicles_runtime_filtering=on " &
172+
"""-d:chronicles_sinks="textlines,json" """ &
173+
"-d:chronicles_default_output_device=Dynamic " &
174+
"""-d:chronicles_disabled_topics="eth,dnsdisc.client" """ & "--warning:Deprecated:off " &
175+
"--warning:UnusedImport:on " & "-d:chronicles_log_level=TRACE"
176+
163177
task libwakuStatic, "Build the cbindings waku node library":
164178
let name = "libwaku"
165-
buildLibrary name,
166-
"library/",
167-
"""-d:chronicles_line_numbers \
168-
-d:chronicles_runtime_filtering=on \
169-
-d:chronicles_sinks="textlines,json" \
170-
-d:chronicles_default_output_device=Dynamic \
171-
-d:chronicles_disabled_topics="eth,dnsdisc.client" \
172-
--warning:Deprecated:off \
173-
--warning:UnusedImport:on \
174-
-d:chronicles_log_level=TRACE """,
175-
"static"
179+
buildLibrary name, "library/", chroniclesParams, "static"
176180

177181
task libwakuDynamic, "Build the cbindings waku node library":
178182
let name = "libwaku"
179-
buildLibrary name,
180-
"library/",
181-
"""-d:chronicles_line_numbers \
182-
-d:chronicles_runtime_filtering=on \
183-
-d:chronicles_sinks="textlines,json" \
184-
-d:chronicles_default_output_device=Dynamic \
185-
-d:chronicles_disabled_topics="eth,dnsdisc.client" \
186-
--warning:Deprecated:off \
187-
--warning:UnusedImport:on \
188-
-d:chronicles_log_level=TRACE """,
189-
"dynamic"
183+
buildLibrary name, "library/", chroniclesParams, "dynamic"
190184

191185
### Mobile Android
192186
task libWakuAndroid, "Build the mobile bindings for Android":

0 commit comments

Comments
 (0)