noloader / cryptopp-cmake

CMake files for Crypto++ project
BSD 3-Clause "New" or "Revised" License
92 stars 68 forks source link

Problem compiling in ARM7 #43

Closed jmpinyol closed 5 years ago

jmpinyol commented 5 years ago

When compiling in ARM7 and these options CRYPTOPP_ARMV7A_HARD, CRYPTOPP_ARMV7A_SOFTFP are not applied, the AddCompileOption("-DCRYPTOPP_DISABLE_NEON") faild because there are an error in:

https://github.com/noloader/cryptopp-cmake/blob/b97d72f083fefa249e46ae3c15a2c294e615fca2/CMakeLists.txt#L264

It works with change to:

if (NOT "${COMMAND_OUTPUT}" STREQUAL "")
      list(APPEND CRYPTOPP_COMPILE_OPTIONS "${opt}")
endif ()
abdes commented 5 years ago

Thanks for reporting this.

I actually think that whole function should disappear and only the line list(APPEND CRYPTOPP_COMPILE_OPTIONS "${opt}") should be inserted inline to replace AddCompileOption("-DCRYPTOPP_DISABLE_NEON").

It should never be testing for COMMAND_OUTPUT...

@noloader

noloader commented 5 years ago

@abdes,

For the non-Windows paths we are using a clean compile as the gate. If the compile and link command produces any output then we consider the toolchain rejected the option. This was necessary on Solaris and PowerPC, where the toolchain would reject an option but CMake would report success.

To learn more we need to see the output of something like:

g++ ${opt} TestPrograms/test_arm_neon.cxx

The command above just runs the test manually.


Regarding:

 if ("${COMMAND_OUTPUT}" NOT STREQUAL "") 

Is that incorrect? If so, then we should probably make the suggested change:

if (NOT "${COMMAND_OUTPUT}" STREQUAL "")
jmpinyol commented 5 years ago

Dear @noloader ,

It doesn't work: if ("${COMMAND_OUTPUT}" NOT STREQUAL "").

Today I verify that is correct: if (NOT "${COMMAND_OUTPUT}" STREQUAL "")

Thank you