From bb39034405df7fb74b4687740281a15e51359a24 Mon Sep 17 00:00:00 2001 From: redfish Date: Tue, 21 Jun 2016 19:53:07 -0400 Subject: [PATCH 1/4] cmake: remove repetitive code in handling of NO_AES Minor eefactor only. No behavior or interface change in this commit. --- CMakeLists.txt | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9674404b..ab2c83a9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -329,16 +329,17 @@ else() set(STATIC_ASSERT_FLAG "-Dstatic_assert=_Static_assert") endif() + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11 -D_GNU_SOURCE ${MINGW_FLAG} ${STATIC_ASSERT_FLAG} ${WARNINGS} ${C_WARNINGS} ${ARCH_FLAG}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -D_GNU_SOURCE ${MINGW_FLAG} ${WARNINGS} ${CXX_WARNINGS} ${ARCH_FLAG}") + option(NO_AES "Explicitly disable AES support" ${NO_AES}) - if (NO_AES) - message(STATUS "Disabling AES support") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11 -D_GNU_SOURCE ${MINGW_FLAG} ${STATIC_ASSERT_FLAG} ${WARNINGS} ${C_WARNINGS} ${ARCH_FLAG}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -D_GNU_SOURCE ${MINGW_FLAG} ${WARNINGS} ${CXX_WARNINGS} ${ARCH_FLAG}") + if (NOT NO_AES) + message(STATUS "AES support enabled") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -maes") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -maes") else() - message(STATUS "Enabling AES support") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11 -D_GNU_SOURCE ${MINGW_FLAG} ${STATIC_ASSERT_FLAG} ${WARNINGS} ${C_WARNINGS} ${ARCH_FLAG} -maes") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -D_GNU_SOURCE ${MINGW_FLAG} ${WARNINGS} ${CXX_WARNINGS} ${ARCH_FLAG} -maes") + message(STATUS "AES support disabled") endif() if(ARM6) From 804b1bc1972a4b5b4f359335d7a74dac65256c42 Mon Sep 17 00:00:00 2001 From: redfish Date: Tue, 21 Jun 2016 20:07:19 -0400 Subject: [PATCH 2/4] cmake: initialize ARCH for native builds We need ARCH, because it needs to be set for ARM7, ARM6 to be initialized. Strangely, on different machines (both ARMv7, Arch), ${ARCH} var is either empty or 'native'. Handle both cases. --- CMakeLists.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ab2c83a9..1770b229 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,7 +45,12 @@ function (die msg) message(FATAL_ERROR "${BoldRed}${msg}${ColourReset}") endfunction () -if (NOT ${ARCH} STREQUAL "") +if ("${ARCH}" STREQUAL "" OR "${ARCH}" STREQUAL "native") + set(ARCH ${CMAKE_SYSTEM_PROCESSOR}) + message(STATUS "Building natively on ${ARCH}") +endif() + +if (NOT "${ARCH}" STREQUAL "") string(SUBSTRING ${ARCH} 0 3 IS_ARM) string(TOLOWER ${IS_ARM} IS_ARM) From c6501607f3ba712f10864192f1c3c62a5f25e7bf Mon Sep 17 00:00:00 2001 From: redfish Date: Tue, 21 Jun 2016 20:08:10 -0400 Subject: [PATCH 3/4] cmake: disable AES on ARM On ARM, gcc fails with 'unknown argument' if passed '-maes'. --- CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1770b229..f7c93258 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -339,10 +339,12 @@ else() option(NO_AES "Explicitly disable AES support" ${NO_AES}) - if (NOT NO_AES) + if(NOT NO_AES AND NOT (ARM6 OR ARM7)) message(STATUS "AES support enabled") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -maes") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -maes") + elseif(ARM7 OR ARM6) + message(STATUS "AES support disabled (not available on ARM)") else() message(STATUS "AES support disabled") endif() From ecd0f2dde7b2d8f3ff820d1190c00401c436384a Mon Sep 17 00:00:00 2001 From: redfish Date: Thu, 23 Jun 2016 17:01:31 -0400 Subject: [PATCH 4/4] makefile: remove unnecessary ARM-specific targets * NO_AES is determined automatically * BUILD_64 is determined automatically --- Makefile | 8 -------- 1 file changed, 8 deletions(-) diff --git a/Makefile b/Makefile index b02f92ad..69d1127d 100644 --- a/Makefile +++ b/Makefile @@ -58,14 +58,6 @@ release-all: mkdir -p build/release cd build/release && cmake -D BUILD_TESTS=ON -D CMAKE_BUILD_TYPE=release ../.. && $(MAKE) -release-arm6: - mkdir -p build/release - cd build/release && cmake -D BUILD_TESTS=OFF -D ARCH="armv6zk" -D BUILD_64=OFF -D NO_AES=ON -D CMAKE_BUILD_TYPE=release ../.. && $(MAKE) - -release-arm7: - mkdir -p build/release - cd build/release && cmake -D BUILD_TESTS=OFF -D ARCH="armv7-a" -D BUILD_64=OFF -D NO_AES=ON -D CMAKE_BUILD_TYPE=release ../.. && $(MAKE) - release-static: release-static-64 release-static-64: