aws / s2n-tls

An implementation of the TLS/SSL protocols
https://aws.github.io/s2n-tls/usage-guide/
Apache License 2.0
4.52k stars 704 forks source link

CMake Cleanup #4792

Open jmayclin opened 1 week ago

jmayclin commented 1 week ago

Problem:

refactor to multiple files

Our CMakeLists.txt is nearly 750 lines long. Given that CMake syntax is quite difficult to read and parse (at least for me) we should consider splitting this into multiple CMakeLists.txt files.

My suggestion is that we add four new files

common cflags

We have a large collection of compile options that we use for libs2n. https://github.com/aws/s2n-tls/blob/24674164b0353662fd02f792f0c53a786b7720bd/CMakeLists.txt#L138-L141

These are general hygiene options that should be applied everywhere, but we don't have a good mechanism for doing that.

My suggestion is that we collect all of the compilation variables into S2N_COMMON_COMPILE_OPTIONS or something like that. Then we'd change the S2N_WERROR_ALL section

https://github.com/aws/s2n-tls/blob/24674164b0353662fd02f792f0c53a786b7720bd/CMakeLists.txt#L143-L147

if (S2N_WERROR_ALL)
    # because the options are public, all attached targets will inherit all of the compile options.
    # this includes unit and fuzz tests and the testlib
    target_compile_options(${PROJECT_NAME} PUBLIC -Werror ${S2N_COMMON_COMPILE_OPTIONS})
elseif (UNSAFE_TREAT_WARNINGS_AS_ERRORS)
    target_compile_options(${PROJECT_NAME} PRIVATE -Werror ${S2N_COMMON_COMPILE_OPTIONS})
endif ()