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

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

Closed
wants to merge 1 commit into from

Conversation

talregev
Copy link
Contributor

@talregev talregev commented Aug 1, 2024

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
Copy link
Member

@bagder bagder left a comment

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
Copy link
Member

bagder commented Aug 6, 2024

Thanks!

@dg0yt
Copy link
Contributor

dg0yt commented Aug 7, 2024

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 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.

None yet

4 participants