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

Add VS2022 DLL Release options.h build configuration #8112

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

gojimmypi
Copy link
Contributor

Description

Building on #8090 and #8104, this PR adds a new DLL Release (config.h) Build Configuration to the Visual Studio 2022 Project file that instead of using the user_settings.h from the IDE/WIN directory, uses the generated wolfssl config.h file.

Let's say, for whatever reason, you'd like to used the same wolfssl options.h created by a Linux ./configure command, also for a Windows build of a DLL.

One place that this might be useful is a NodeJS/NPM module such as my wolfcrypt_nodejs branch used in both Windows and Linux. See also wolfSSL/wolfcrypt_nodejs#8

Without the capability added in this PR, one would need to know both the Linux ./configure command-line options, as well as the respective settings to exactly match in the Windows user_settings.h.

Alternatively, the option of course exists for use a user_settings.h in the Linux environment. This PR is only for using config.h for a Windows build.

We'll assume that the respective ./configure options in WSL are provided to give compatibility in both Windows and Linux.

Otherwise, for an example here, if in WSL on 64bit Windows 11 using the --enable-all:

./autogen.sh
./configure --enable-all

Add this to the respective generated options.h to also use in Windows to address incompatibilities observed for this PR.

/* Disable some items from Ubuntu (WSL) ./configure --enable-all that were
 * observed to cause problems in Windows when sharing the same options.h */

#undef HAVE___UINT128_T
#undef WOLFSSL_QUIC

#undef HAVE_HPKE
#undef HAVE_ECH

#undef WOLFSSL_SP_X86_64_ASM
#undef WOLFSSL_SP_X86_64
#undef WOLFSSL_SP_ASM

#undef HAVE_INTEL_AVX2
#undef HAVE_INTEL_AVX1
#undef USE_INTEL_SPEEDUP

#define WOLFSSL_UINT128_T_DEFINED
#define WOLFSSL_NO_ATOMICS
#ifndef INT32_MAX
    /* Maximum value for a 32-bit signed integer, used in evp.c */
    #define INT32_MAX 2147483647
#endif

/* WOLFSSL_DLL is typically defined in the project build config.
 * undef here to avoid "Duplicate definition" warnings. */
#undef WOLFSSL_DLL

Fixes zd# n/a

Testing

Tested on Windows 11, Visual Studio 17.11.5, Platform Toolset v143

Checklist

  • added tests
  • updated/added doxygen
  • updated appropriate READMEs
  • Updated manual and documentation

@gojimmypi
Copy link
Contributor Author

Jenkins retest this please

@dgarske dgarske removed their request for review October 28, 2024 17:27
@dgarske dgarske assigned wolfSSL-Bot and unassigned dgarske Oct 28, 2024
@@ -16,6 +16,7 @@ config.*
!cmake/config.in
*Debug/
*Release/
*Release (options.h)/
Copy link
Contributor

Choose a reason for hiding this comment

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

Why only for release? Where is the README to go along with these new VS 2022 projects? Would be nice to explain the various configuration options and where the user_settings.h is coming from.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Why only for release?

The initial settings for only release build was as related to wolfSSL/wolfcrypt_nodejs#8 where debugging was unlikely.

It was also an exploratory PR, to see if there was interest in an options.h build for Windows.

But you are right; there should be a debug option. Potentially also options.h configs for 32bit debug and release, too.

Where is the README to go along with these new VS 2022 projects?

I neglected that, as I was documenting in an upcoming blog that I would have referred to.

I'll add some README info, as well.

Would be nice to explain the various configuration options and where the user_settings.h is coming from.

That's also in the upcoming blog, but you ae correct it should also be in the README.

Copy link
Contributor

Choose a reason for hiding this comment

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

Seems like documentation needs to be added similar to PR description?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants