From 3e6a483df30c9b78e6e327e29fc6892b142a7ec0 Mon Sep 17 00:00:00 2001 From: Peter Osterlund Date: Wed, 7 Jan 2015 20:42:18 +0000 Subject: [PATCH] DroidFish: Made stockfish engine work in android 5. --- DroidFish/build_copy_exe.xml | 4 ++++ DroidFish/jni/stockfish/Android.mk | 16 ++++++++++----- .../petero/droidfish/engine/EngineUtil.java | 20 ++++++++++++------- 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/DroidFish/build_copy_exe.xml b/DroidFish/build_copy_exe.xml index dcff08f..58788c0 100644 --- a/DroidFish/build_copy_exe.xml +++ b/DroidFish/build_copy_exe.xml @@ -3,10 +3,14 @@ + + + + diff --git a/DroidFish/jni/stockfish/Android.mk b/DroidFish/jni/stockfish/Android.mk index c7b8595..de55270 100644 --- a/DroidFish/jni/stockfish/Android.mk +++ b/DroidFish/jni/stockfish/Android.mk @@ -1,13 +1,19 @@ LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_MODULE := stockfish -LOCAL_SRC_FILES := \ +SF_SRC_FILES := \ benchmark.cpp main.cpp movegen.cpp pawns.cpp thread.cpp uci.cpp \ bitbase.cpp endgame.cpp material.cpp movepick.cpp position.cpp timeman.cpp ucioption.cpp \ bitboard.cpp evaluate.cpp misc.cpp notation.cpp search.cpp tt.cpp tbprobe.cpp +include $(CLEAR_VARS) +LOCAL_MODULE := stockfish-nopie +LOCAL_SRC_FILES := $(SF_SRC_FILES) LOCAL_CFLAGS := -std=c++11 -O2 - +include $(BUILD_EXECUTABLE) + +include $(CLEAR_VARS) +LOCAL_MODULE := stockfish +LOCAL_SRC_FILES := $(SF_SRC_FILES) +LOCAL_CFLAGS := -std=c++11 -O2 -fPIE +LOCAL_LDFLAGS += -FPIE -pie include $(BUILD_EXECUTABLE) diff --git a/DroidFish/src/org/petero/droidfish/engine/EngineUtil.java b/DroidFish/src/org/petero/droidfish/engine/EngineUtil.java index d63817c..6299a36 100644 --- a/DroidFish/src/org/petero/droidfish/engine/EngineUtil.java +++ b/DroidFish/src/org/petero/droidfish/engine/EngineUtil.java @@ -39,14 +39,20 @@ public class EngineUtil { /** Return file name of the internal stockfish executable. */ public static String internalStockFishName() { String abi = Build.CPU_ABI; - if (!abi.equals("x86") && - !abi.equals("x86_64") && - !abi.equals("armeabi-v7a") && - !abi.equals("arm64-v8a") && - !abi.equals("mips") && - !abi.equals("mips64")) + boolean noPIE = Build.VERSION.SDK_INT < 21; + if (abi.equals("x86")) { + } else if (abi.equals("x86_64")) { + noPIE = false; + } else if (abi.equals("armeabi-v7a")) { + } else if (abi.equals("arm64-v8a")) { + noPIE = false; + } else if (abi.equals("mips")) { + } else if (abi.equals("mips64")) { + noPIE = false; + } else { abi = "armeabi"; // Unknown ABI, assume original ARM - return "stockfish-" + abi; + } + return "stockfish-" + abi + (noPIE ? "-nopie" : ""); } /** Return true if file "engine" is a network engine. */