Skip to content

cmake: add math library when compile wolfSSL and ngtcp2 - #14343

Closed
talregev wants to merge 1 commit into
curl:masterfrom
talregev:TalR/wolfssl_ngtcp2_math
Closed

talregev wants to merge 1 commit into
curl:masterfrom
talregev:TalR/wolfssl_ngtcp2_math

Conversation

@talregev

@talregev talregev commented Aug 1, 2024 •

Copy link
Copy Markdown
Contributor

Add math library when compile wolfSSL and ngtcp2 in non-Windows platforms.

When compile wolfSSL with ngtcp2 without this fix on linux:

FAILED: src/curl 
: && /usr/bin/cc -fPIC  -Werror-implicit-function-declaration -W -Wall -pedantic -Wbad-function-cast -Wconversion -Winline -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-long-long -Wno-multichar -Wpointer-arith -Wshadow -Wsign-compare -Wundef -Wunused -Wwrite-strings -Waddress -Wattributes -Wcast-align -Wdeclaration-after-statement -Wdiv-by-zero -Wempty-body -Wendif-labels -Wfloat-equal -Wformat-security -Wignored-qualifiers -Wmissing-field-initializers -Wmissing-noreturn -Wno-format-nonliteral -Wno-system-headers -Wold-style-definition -Wredundant-decls -Wsign-conversion -Wno-error=sign-conversion -Wstrict-prototypes -Wtype-limits -Wunreachable-code -Wunused-parameter -Wvla -Wclobbered -Wmissing-parameter-type -Wold-style-declaration -Wstrict-aliasing=3 -Wtrampolines -Wformat=2 -Warray-bounds=2 -ftree-vrp -Wduplicated-cond -Wnull-dereference -fdelete-null-pointer-checks -Wshift-negative-value -Wshift-overflow=2 -Walloc-zero -Wduplicated-branches -Wformat-overflow=2 -Wformat-truncation=2 -Wimplicit-fallthrough -Wrestrict -Warith-conversion -Wdouble-promotion -Wenum-conversion -Wpragmas -Wunused-const-variable -g  src/CMakeFiles/curl.dir/slist_wc.c.o src/CMakeFiles/curl.dir/terminal.c.o src/CMakeFiles/curl.dir/tool_binmode.c.o src/CMakeFiles/curl.dir/tool_bname.c.o src/CMakeFiles/curl.dir/tool_cb_dbg.c.o src/CMakeFiles/curl.dir/tool_cb_hdr.c.o src/CMakeFiles/curl.dir/tool_cb_prg.c.o src/CMakeFiles/curl.dir/tool_cb_rea.c.o src/CMakeFiles/curl.dir/tool_cb_see.c.o src/CMakeFiles/curl.dir/tool_cb_soc.c.o src/CMakeFiles/curl.dir/tool_cb_wrt.c.o src/CMakeFiles/curl.dir/tool_cfgable.c.o src/CMakeFiles/curl.dir/tool_dirhie.c.o src/CMakeFiles/curl.dir/tool_doswin.c.o src/CMakeFiles/curl.dir/tool_easysrc.c.o src/CMakeFiles/curl.dir/tool_filetime.c.o src/CMakeFiles/curl.dir/tool_findfile.c.o src/CMakeFiles/curl.dir/tool_formparse.c.o src/CMakeFiles/curl.dir/tool_getparam.c.o src/CMakeFiles/curl.dir/tool_getpass.c.o src/CMakeFiles/curl.dir/tool_help.c.o src/CMakeFiles/curl.dir/tool_helpers.c.o src/CMakeFiles/curl.dir/tool_hugehelp.c.o src/CMakeFiles/curl.dir/tool_ipfs.c.o src/CMakeFiles/curl.dir/tool_libinfo.c.o src/CMakeFiles/curl.dir/tool_listhelp.c.o src/CMakeFiles/curl.dir/tool_main.c.o src/CMakeFiles/curl.dir/tool_msgs.c.o src/CMakeFiles/curl.dir/tool_operate.c.o src/CMakeFiles/curl.dir/tool_operhlp.c.o src/CMakeFiles/curl.dir/tool_paramhlp.c.o src/CMakeFiles/curl.dir/tool_parsecfg.c.o src/CMakeFiles/curl.dir/tool_progress.c.o src/CMakeFiles/curl.dir/tool_setopt.c.o src/CMakeFiles/curl.dir/tool_sleep.c.o src/CMakeFiles/curl.dir/tool_stderr.c.o src/CMakeFiles/curl.dir/tool_strdup.c.o src/CMakeFiles/curl.dir/tool_urlglob.c.o src/CMakeFiles/curl.dir/tool_util.c.o src/CMakeFiles/curl.dir/tool_vms.c.o src/CMakeFiles/curl.dir/tool_writeout.c.o src/CMakeFiles/curl.dir/tool_writeout_json.c.o src/CMakeFiles/curl.dir/tool_xattr.c.o src/CMakeFiles/curl.dir/var.c.o src/CMakeFiles/curl.dir/__/lib/base64.c.o src/CMakeFiles/curl.dir/__/lib/dynbuf.c.o -o src/curl  lib/libcurl-d.a  /home/tal/vcpkg/installed/x64-linux/debug/lib/libwolfssl.a  /home/tal/vcpkg/installed/x64-linux/debug/lib/libz.a  /home/tal/vcpkg/installed/x64-linux/debug/lib/libngtcp2.a  /home/tal/vcpkg/installed/x64-linux/debug/lib/libngtcp2_crypto_wolfssl.a  /home/tal/vcpkg/installed/x64-linux/debug/lib/libnghttp3.a && :
/usr/bin/ld: /home/tal/vcpkg/installed/x64-linux/debug/lib/libwolfssl.a(dh.c.o): in function `DiscreteLogWorkFactor':
/home/tal/vcpkg/buildtrees/wolfssl/src/7.2-stable-e61253ad9d.clean/wolfcrypt/src/dh.c:1031: undefined reference to `pow'
/usr/bin/ld: /home/tal/vcpkg/buildtrees/wolfssl/src/7.2-stable-e61253ad9d.clean/wolfcrypt/src/dh.c:1032: undefined reference to `log'
/usr/bin/ld: /home/tal/vcpkg/buildtrees/wolfssl/src/7.2-stable-e61253ad9d.clean/wolfcrypt/src/dh.c:1032: undefined reference to `pow'

@vszakats vszakats changed the title cmake: Add math library when compile WolfSSL and ngtcp2 cmake: Add math library when compile wolfSSL and ngtcp2 Aug 2, 2024
@vszakats vszakats changed the title cmake: Add math library when compile wolfSSL and ngtcp2 cmake: add math library when compile wolfSSL and ngtcp2 Aug 2, 2024

@bagder bagder left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Matches what's done in the configure script

@bagder bagder closed this in 8577f4c Aug 6, 2024
@bagder

bagder commented Aug 6, 2024

Copy link
Copy Markdown
Member

Thanks!

@dg0yt

dg0yt commented Aug 7, 2024 •

Copy link
Copy Markdown
Contributor

There are two issues here:

  • Please don't link m with full path.
  • If if m is a transitve usage requirement of wolfssl, it must be taken care of by the wolfssl cmake package. (Or of ngtcp2 component wolfssl.)

@talregev
talregev deleted the TalR/wolfssl_ngtcp2_math branch August 7, 2024 13:21
vszakats added a commit to vszakats/curl that referenced this pull request Aug 17, 2024
It's required by wolfSSL:
```
FAILED: src/curl
: && /usr/bin/cc -fPIC  -Werror-implicit-function-declaration -W -Wall -pedantic -Wbad-function-cast -Wconversion -Winline -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-long-long -Wno-multichar -Wpointer-arith -Wshadow -Wsign-compare -Wundef -Wunused -Wwrite-strings -Waddress -Wattributes -Wcast-align -Wdeclaration-after-statement -Wdiv-by-zero -Wempty-body -Wendif-labels -Wfloat-equal -Wformat-security -Wignored-qualifiers -Wmissing-field-initializers -Wmissing-noreturn -Wno-format-nonliteral -Wno-system-headers -Wold-style-definition -Wredundant-decls -Wsign-conversion -Wno-error=sign-conversion -Wstrict-prototypes -Wtype-limits -Wunreachable-code -Wunused-parameter -Wvla -Wclobbered -Wmissing-parameter-type -Wold-style-declaration -Wstrict-aliasing=3 -Wtrampolines -Wformat=2 -Warray-bounds=2 -ftree-vrp -Wduplicated-cond -Wnull-dereference -fdelete-null-pointer-checks -Wshift-negative-value -Wshift-overflow=2 -Walloc-zero -Wduplicated-branches -Wformat-overflow=2 -Wformat-truncation=2 -Wimplicit-fallthrough -Wrestrict -Warith-conversion -Wdouble-promotion -Wenum-conversion -Wpragmas -Wunused-const-variable -g  src/CMakeFiles/curl.dir/slist_wc.c.o src/CMakeFiles/curl.dir/terminal.c.o src/CMakeFiles/curl.dir/tool_binmode.c.o src/CMakeFiles/curl.dir/tool_bname.c.o src/CMakeFiles/curl.dir/tool_cb_dbg.c.o src/CMakeFiles/curl.dir/tool_cb_hdr.c.o src/CMakeFiles/curl.dir/tool_cb_prg.c.o src/CMakeFiles/curl.dir/tool_cb_rea.c.o src/CMakeFiles/curl.dir/tool_cb_see.c.o src/CMakeFiles/curl.dir/tool_cb_soc.c.o src/CMakeFiles/curl.dir/tool_cb_wrt.c.o src/CMakeFiles/curl.dir/tool_cfgable.c.o src/CMakeFiles/curl.dir/tool_dirhie.c.o src/CMakeFiles/curl.dir/tool_doswin.c.o src/CMakeFiles/curl.dir/tool_easysrc.c.o src/CMakeFiles/curl.dir/tool_filetime.c.o src/CMakeFiles/curl.dir/tool_findfile.c.o src/CMakeFiles/curl.dir/tool_formparse.c.o src/CMakeFiles/curl.dir/tool_getparam.c.o src/CMakeFiles/curl.dir/tool_getpass.c.o src/CMakeFiles/curl.dir/tool_help.c.o src/CMakeFiles/curl.dir/tool_helpers.c.o src/CMakeFiles/curl.dir/tool_hugehelp.c.o src/CMakeFiles/curl.dir/tool_ipfs.c.o src/CMakeFiles/curl.dir/tool_libinfo.c.o src/CMakeFiles/curl.dir/tool_listhelp.c.o src/CMakeFiles/curl.dir/tool_main.c.o src/CMakeFiles/curl.dir/tool_msgs.c.o src/CMakeFiles/curl.dir/tool_operate.c.o src/CMakeFiles/curl.dir/tool_operhlp.c.o src/CMakeFiles/curl.dir/tool_paramhlp.c.o src/CMakeFiles/curl.dir/tool_parsecfg.c.o src/CMakeFiles/curl.dir/tool_progress.c.o src/CMakeFiles/curl.dir/tool_setopt.c.o src/CMakeFiles/curl.dir/tool_sleep.c.o src/CMakeFiles/curl.dir/tool_stderr.c.o src/CMakeFiles/curl.dir/tool_strdup.c.o src/CMakeFiles/curl.dir/tool_urlglob.c.o src/CMakeFiles/curl.dir/tool_util.c.o src/CMakeFiles/curl.dir/tool_vms.c.o src/CMakeFiles/curl.dir/tool_writeout.c.o src/CMakeFiles/curl.dir/tool_writeout_json.c.o src/CMakeFiles/curl.dir/tool_xattr.c.o src/CMakeFiles/curl.dir/var.c.o src/CMakeFiles/curl.dir/__/lib/base64.c.o src/CMakeFiles/curl.dir/__/lib/dynbuf.c.o -o src/curl  lib/libcurl-d.a  /home/tal/vcpkg/installed/x64-linux/debug/lib/libwolfssl.a  /home/tal/vcpkg/installed/x64-linux/debug/lib/libz.a  /home/tal/vcpkg/installed/x64-linux/debug/lib/libngtcp2.a  /home/tal/vcpkg/installed/x64-linux/debug/lib/libngtcp2_crypto_wolfssl.a  /home/tal/vcpkg/installed/x64-linux/debug/lib/libnghttp3.a && :
/usr/bin/ld: /home/tal/vcpkg/installed/x64-linux/debug/lib/libwolfssl.a(dh.c.o): in function `DiscreteLogWorkFactor':
/home/tal/vcpkg/buildtrees/wolfssl/src/7.2-stable-e61253ad9d.clean/wolfcrypt/src/dh.c:1031: undefined reference to `pow'
/usr/bin/ld: /home/tal/vcpkg/buildtrees/wolfssl/src/7.2-stable-e61253ad9d.clean/wolfcrypt/src/dh.c:1032: undefined reference to `log'
/usr/bin/ld: /home/tal/vcpkg/buildtrees/wolfssl/src/7.2-stable-e61253ad9d.clean/wolfcrypt/src/dh.c:1032: undefined reference to `pow'
```
Ref: curl#14343
vszakats added a commit that referenced this pull request Aug 18, 2024
- fix to add the `m` library without path.
  Follow-up to 8577f4c #14343
  Authored-by: Tal Regev
  Fixes #14549

- move `m` library detection to wolfSSL Find module.
  `m` is necessary for wolfSSL (wolfcrypt) library functions called by
  `libngtcp2_crypto_wolfssl`.
  Follow-up to 8577f4c #14343

- fix comment header about supported `COMPONENT` names.

- quote strings.

- lowercase local variables.

Closes #14576
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

4 participants