[SYCL][E2E] Stop CMAKE_CXX_FLAGS cache variable passing to clang++ (#20039)
Before #9075 the value of CMAKE_CXX_FLAGS was passed to SYCL E2E
compilations. In #9075 the variable was explicitly unset in
non-standalone (in-tree) builds of the tests. Unsetting a normal
variable however exposes the cmake cache variable of the same name.
I believe this was not the intent, rather the intent was to not pass any
CMAKE_CXX_FLAGS to the E2E tests in non-standalone builds. It is weird
to pass the user's CMAKE_CXX_FLAGS to the E2E tests, as these flags are
for the SYCL toolchain, not tests.
Passing `CMAKE_CXX_FLAGS` to the E2E tests can cause problems, for
example a test might wish to override options such as setting
`-ffp-model=fast`, but this fails with a warning/error if
`CMAKE_CXX_FLAGS` contains `-ffp-model=precise`: `error: overriding
'-ffp-model=precise' option with '-ffp-model=fast'
[-Werror,-Woverriding-option]`.
While the error could be worked around in the test by appending
`-Wno-overriding-option` to the test flags, I don't believe this is the
right solution.
It is possible that the user is running on a system where some flags
have to be passed to clang++ to make it produce working executables. For
this reason, allow setting `SYCL_E2E_CLANG_CXX_FLAGS` by the user if
needed in in-tree builds, but do not pass `CMAKE_CXX_FLAGS` by default.
Contains a drive-by fix to make sure `-Werror` is passed to clang++ even
when the c++ flags are overriden by the lit parameter `--param
cxx_flags=...` (it can still be disabled using `-Wno-error` explicitly).