summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--android/CMakeLists.txt21
-rwxr-xr-xandroid/compile.sh2
-rw-r--r--src/LoggerListeners.cpp2
-rw-r--r--src/OSSupport/StackTrace.cpp4
-rw-r--r--src/OSSupport/UDPEndpointImpl.cpp19
-rw-r--r--src/main.cpp14
6 files changed, 17 insertions, 45 deletions
diff --git a/android/CMakeLists.txt b/android/CMakeLists.txt
index 51df60cdc..408c416d1 100644
--- a/android/CMakeLists.txt
+++ b/android/CMakeLists.txt
@@ -1,28 +1,15 @@
-cmake_minimum_required (VERSION 3.7)
+cmake_minimum_required (VERSION 3.12.4)
project(Cuberite)
# Set up Android parameters
-add_definitions(-DANDROID)
set(ANDROID TRUE)
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fPIE -pie")
# We're crosscompiling for Android
set(NO_NATIVE_OPTIMIZATION TRUE)
-# SYSTEM flag to silence warnings for external headers
-include_directories(SYSTEM
- ../lib/
- ../src/
- ../lib/jsoncpp/include/
- ../lib/polarssl/include/
- ../lib/sqlitecpp/include/
- ../lib/sqlitecpp/sqlite3/
- ../lib/libevent/include/
-)
-
-# Disable some compiler warnings (the lazy way out)
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-double-promotion -Wno-sign-conversion -Wno-unused-command-line-argument -s")
-
# Build the rest of the server
add_subdirectory(../ Cuberite)
+
+# Strip debug symbols to reduce binary size
+set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE -s)
diff --git a/android/compile.sh b/android/compile.sh
index 0fee304cf..632026d40 100755
--- a/android/compile.sh
+++ b/android/compile.sh
@@ -4,7 +4,7 @@ set -e
# This script cross-compiles cuberite for the android platform. It uses
# the following enviroment variables
-# CMAKE: Should be the path to a cmake executable of version 3.7+
+# CMAKE: Should be the path to a cmake executable of version 3.12.4+
# NDK: Should be the path to the android ndk root
# (optional) TYPE: either Release or Debug, sets the build type
# (optional) THREADS: The number of threads to use, default 4
diff --git a/src/LoggerListeners.cpp b/src/LoggerListeners.cpp
index ffb141a9c..995cc4b20 100644
--- a/src/LoggerListeners.cpp
+++ b/src/LoggerListeners.cpp
@@ -230,7 +230,7 @@ std::unique_ptr<cLogger::cListener> MakeConsoleListener(bool a_IsService)
{
return cpp14::make_unique<cVanillaCPPConsoleListener>();
}
- #elif (defined (__linux) && !defined(ANDROID)) || defined (__APPLE__)
+ #elif defined (__linux) || defined (__APPLE__)
// TODO: lookup terminal in terminfo
if (isatty(fileno(stdout)))
{
diff --git a/src/OSSupport/StackTrace.cpp b/src/OSSupport/StackTrace.cpp
index b8f80f5f3..d252e1e83 100644
--- a/src/OSSupport/StackTrace.cpp
+++ b/src/OSSupport/StackTrace.cpp
@@ -7,7 +7,7 @@
#include "StackTrace.h"
#ifdef _WIN32
#include "WinStackWalker.h"
-#elif !defined(ANDROID) // The Android NDK has no execinfo header
+#else
#ifdef __GLIBC__
#include <execinfo.h>
#endif
@@ -30,7 +30,7 @@ void PrintStackTrace(void)
}
} sw;
sw.ShowCallstack();
- #elif !defined(ANDROID)
+ #else
#ifdef __GLIBC__
// Use the backtrace() function to get and output the stackTrace:
// Code adapted from https://stackoverflow.com/questions/77005/how-to-generate-a-stacktrace-when-my-gcc-c-app-crashes
diff --git a/src/OSSupport/UDPEndpointImpl.cpp b/src/OSSupport/UDPEndpointImpl.cpp
index 3235ff91f..5984bc4e2 100644
--- a/src/OSSupport/UDPEndpointImpl.cpp
+++ b/src/OSSupport/UDPEndpointImpl.cpp
@@ -134,20 +134,20 @@ protected:
{
if (m_HasIPv6)
{
- sendto(m_MainSock, m_Data.data(), static_cast<socklen_t>(m_Data.size()), 0, reinterpret_cast<const sockaddr *>(&m_AddrIPv6), static_cast<socklen_t>(sizeof(m_AddrIPv6)));
+ sendto(m_MainSock, m_Data.data(), m_Data.size(), 0, reinterpret_cast<const sockaddr *>(&m_AddrIPv6), static_cast<socklen_t>(sizeof(m_AddrIPv6)));
}
else if (m_HasIPv4)
{
// If the secondary socket is valid, it is an IPv4 socket, so use that:
if (m_SecondSock != -1)
{
- sendto(m_SecondSock, m_Data.data(), static_cast<socklen_t>(m_Data.size()), 0, reinterpret_cast<const sockaddr *>(&m_AddrIPv4), static_cast<socklen_t>(sizeof(m_AddrIPv4)));
+ sendto(m_SecondSock, m_Data.data(), m_Data.size(), 0, reinterpret_cast<const sockaddr *>(&m_AddrIPv4), static_cast<socklen_t>(sizeof(m_AddrIPv4)));
}
else
{
// Need an address conversion from IPv4 to IPv6-mapped-IPv4:
ConvertIPv4ToMappedIPv6(m_AddrIPv4, m_AddrIPv6);
- sendto(m_MainSock, m_Data.data(), static_cast<socklen_t>(m_Data.size()), 0, reinterpret_cast<const sockaddr *>(&m_AddrIPv6), static_cast<socklen_t>(sizeof(m_AddrIPv6)));
+ sendto(m_MainSock, m_Data.data(), m_Data.size(), 0, reinterpret_cast<const sockaddr *>(&m_AddrIPv6), static_cast<socklen_t>(sizeof(m_AddrIPv6)));
}
}
else
@@ -164,7 +164,7 @@ protected:
LOGD("UDP endpoint queued sendto: Name not resolved to IPv4 for an IPv4-only socket");
return;
}
- sendto(m_MainSock, m_Data.data(), static_cast<socklen_t>(m_Data.size()), 0, reinterpret_cast<const sockaddr *>(&m_AddrIPv4), static_cast<socklen_t>(sizeof(m_AddrIPv4)));
+ sendto(m_MainSock, m_Data.data(), m_Data.size(), 0, reinterpret_cast<const sockaddr *>(&m_AddrIPv4), static_cast<socklen_t>(sizeof(m_AddrIPv4)));
}
}
@@ -284,19 +284,19 @@ bool cUDPEndpointImpl::Send(const AString & a_Payload, const AString & a_Host, U
if (IsValidSocket(m_SecondarySock))
{
// The secondary socket, which is always IPv4, is present:
- NumSent = static_cast<int>(sendto(m_SecondarySock, a_Payload.data(), static_cast<socklen_t>(a_Payload.size()), 0, reinterpret_cast<const sockaddr *>(&sa), static_cast<socklen_t>(salen)));
+ NumSent = static_cast<int>(sendto(m_SecondarySock, a_Payload.data(), a_Payload.size(), 0, reinterpret_cast<const sockaddr *>(&sa), static_cast<socklen_t>(salen)));
}
else
{
// Need to convert IPv4 to IPv6 address before sending:
sockaddr_in6 IPv6;
ConvertIPv4ToMappedIPv6(*reinterpret_cast<sockaddr_in *>(&sa), IPv6);
- NumSent = static_cast<int>(sendto(m_MainSock, a_Payload.data(), static_cast<socklen_t>(a_Payload.size()), 0, reinterpret_cast<const sockaddr *>(&IPv6), static_cast<socklen_t>(sizeof(IPv6))));
+ NumSent = static_cast<int>(sendto(m_MainSock, a_Payload.data(), a_Payload.size(), 0, reinterpret_cast<const sockaddr *>(&IPv6), static_cast<socklen_t>(sizeof(IPv6))));
}
}
else
{
- NumSent = static_cast<int>(sendto(m_MainSock, a_Payload.data(), static_cast<socklen_t>(a_Payload.size()), 0, reinterpret_cast<const sockaddr *>(&sa), static_cast<socklen_t>(salen)));
+ NumSent = static_cast<int>(sendto(m_MainSock, a_Payload.data(), a_Payload.size(), 0, reinterpret_cast<const sockaddr *>(&sa), static_cast<socklen_t>(salen)));
}
break;
}
@@ -304,7 +304,7 @@ bool cUDPEndpointImpl::Send(const AString & a_Payload, const AString & a_Host, U
case AF_INET6:
{
reinterpret_cast<sockaddr_in6 *>(&sa)->sin6_port = htons(a_Port);
- NumSent = static_cast<int>(sendto(m_MainSock, a_Payload.data(), static_cast<socklen_t>(a_Payload.size()), 0, reinterpret_cast<const sockaddr *>(&sa), static_cast<socklen_t>(salen)));
+ NumSent = static_cast<int>(sendto(m_MainSock, a_Payload.data(), a_Payload.size(), 0, reinterpret_cast<const sockaddr *>(&sa), static_cast<socklen_t>(salen)));
break;
}
default:
@@ -563,10 +563,9 @@ void cUDPEndpointImpl::Callback(evutil_socket_t a_Socket, short a_What)
{
// Receive datagram from the socket:
char buf[64 KiB];
- socklen_t buflen = static_cast<socklen_t>(sizeof(buf));
sockaddr_storage sa;
socklen_t salen = static_cast<socklen_t>(sizeof(sa));
- auto len = recvfrom(a_Socket, buf, buflen, 0, reinterpret_cast<sockaddr *>(&sa), &salen);
+ auto len = recvfrom(a_Socket, buf, sizeof(buf), 0, reinterpret_cast<sockaddr *>(&sa), &salen);
if (len >= 0)
{
// Convert the remote IP address to a string:
diff --git a/src/main.cpp b/src/main.cpp
index 1df96663a..7411b410e 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -10,20 +10,6 @@
-#ifdef ANDROID
- // Workaround for Android NDK builds that do not support std::to_string
- namespace std
- {
- template <typename T>
- std::string to_string(T Value)
- {
- std::ostringstream TempStream;
- TempStream << Value;
- return TempStream.str();
- }
- }
-#endif
-
#ifdef _MSC_VER
#include <dbghelp.h>
#endif // _MSC_VER