diff --git a/.github/workflows/ecode-nightly.yml b/.github/workflows/ecode-nightly.yml index 2bb1d031b..22ee2b89c 100644 --- a/.github/workflows/ecode-nightly.yml +++ b/.github/workflows/ecode-nightly.yml @@ -70,9 +70,19 @@ jobs: run: | sudo add-apt-repository -y universe sudo add-apt-repository -y multiverse + sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test sudo apt-get update - name: Install dependencies run: | + sudo apt-get install -y gcc-11 g++-11 + sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 10 + sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 10 + sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30 + sudo update-alternatives --set cc /usr/bin/gcc + sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30 + sudo update-alternatives --set c++ /usr/bin/g++ + sudo update-alternatives --config gcc + sudo update-alternatives --config g++ sudo apt-get install -y libfuse2 fuse premake4 mesa-common-dev libgl1-mesa-dev bash projects/linux/scripts/install_sdl2.sh - name: Build ecode diff --git a/include/eepp/system/iostream.hpp b/include/eepp/system/iostream.hpp index 6961c372d..513d52818 100644 --- a/include/eepp/system/iostream.hpp +++ b/include/eepp/system/iostream.hpp @@ -4,7 +4,7 @@ #include namespace EE { -using ios_size = long; +using ios_size = long long; } namespace EE { namespace System { diff --git a/projects/android-project/app/build.gradle b/projects/android-project/app/build.gradle index c09fe8075..ae04b021a 100644 --- a/projects/android-project/app/build.gradle +++ b/projects/android-project/app/build.gradle @@ -13,11 +13,11 @@ def getProcessesCountArg() { } android { - compileSdkVersion 33 - buildToolsVersion "33.0.0" + namespace "com.ensoft.eepp" defaultConfig { applicationId "com.ensoft.eepp" minSdk 27 + compileSdk 34 targetSdkVersion 33 versionCode 1 versionName "1.0" @@ -33,7 +33,8 @@ android { } signingConfig signingConfigs.debug } - flavorDimensions "eepp" + flavorDimensions += "eepp" + buildFeatures { buildConfig true } productFlavors { ecode { buildConfigField "String", "SO_NAME", "\"ecode\"" @@ -99,14 +100,14 @@ android { path 'jni/Android.mk' } } - lintOptions { - abortOnError false - } compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } - ndkVersion '25.1.8937393' + ndkVersion "27.2.12479018" + lint { + abortOnError false + } } dependencies { diff --git a/projects/android-project/app/jni/Android.mk b/projects/android-project/app/jni/Android.mk index dbf4aa3f7..ec9712533 100644 --- a/projects/android-project/app/jni/Android.mk +++ b/projects/android-project/app/jni/Android.mk @@ -62,6 +62,7 @@ LOCAL_C_INCLUDES := $(EEPP_C_INCLUDES) CORE_SRCS := tools/ecode/*.cpp \ tools/ecode/plugins/*.cpp \ tools/ecode/plugins/autocomplete/*.cpp \ + tools/ecode/plugins/git/*.cpp \ tools/ecode/plugins/linter/*.cpp \ tools/ecode/plugins/formatter/*.cpp \ tools/ecode/plugins/lsp/*.cpp \ diff --git a/projects/android-project/app/jni/eepp.mk b/projects/android-project/app/jni/eepp.mk index 120325672..2472d60ac 100644 --- a/projects/android-project/app/jni/eepp.mk +++ b/projects/android-project/app/jni/eepp.mk @@ -22,6 +22,7 @@ EEPP_C_INCLUDES := \ $(EEPP_THIRD_PARTY_PATH)/libogg/include \ $(EEPP_THIRD_PARTY_PATH)/mbedtls/include \ $(EEPP_THIRD_PARTY_PATH)/mojoAL \ + $(EEPP_THIRD_PARTY_PATH)/pcre2/src \ $(EEPP_THIRD_PARTY_PATH)/efsw/include \ $(EEPP_BASE_PATH)/modules/eterm/include \ $(EEPP_BASE_PATH)/modules/eterm/src \ @@ -45,7 +46,9 @@ EEPP_C_FLAGS := \ -D$(EE_SDL_VERSION) \ -DAL_LIBTYPE_STATIC \ -I$(EEPP_INC_PATH) \ - -I$(EEPP_BASE_PATH) + -I$(EEPP_BASE_PATH) \ + -DPCRE2_STATIC \ + -DPCRE2_CODE_UNIT_WIDTH=8 EEPP_LDLIBS := $(APP_LDLIBS) @@ -99,7 +102,7 @@ LOCAL_C_INCLUDES := $(EEPP_C_INCLUDES) LOCAL_SRC_FILES := $(foreach F, $(CODE_SRCS), $(addprefix $(dir $(F)),$(notdir $(wildcard $(LOCAL_PATH)/$(F))))) -LOCAL_STATIC_LIBRARIES := freetype libpng +LOCAL_STATIC_LIBRARIES := freetype libpng pcre2 harfbuzz LOCAL_SHARED_LIBRARIES := SDL2 @@ -170,6 +173,66 @@ LOCAL_SRC_FILES := $(foreach F, $(LIBPNG_SRCS), $(addprefix $(dir $(F)),$(notd include $(BUILD_STATIC_LIBRARY) #*************** LIBPNG *************** +#**************** PCRE2 *************** +include $(CLEAR_VARS) + +LOCAL_PATH := $(EEPP_THIRD_PARTY_PATH) + +LOCAL_MODULE := pcre2 + +LOCAL_C_INCLUDES := $(LOCAL_PATH)/pcre2/src +LOCAL_CFLAGS := -Os -DHAVE_CONFIG_H -DPCRE2_STATIC -DPCRE2_CODE_UNIT_WIDTH=8 + +LOCAL_SRC_FILES := \ + pcre2/src/pcre2_auto_possess.c \ + pcre2/src/pcre2_chartables.c \ + pcre2/src/pcre2_chkdint.c \ + pcre2/src/pcre2_compile.c \ + pcre2/src/pcre2_config.c \ + pcre2/src/pcre2_context.c \ + pcre2/src/pcre2_convert.c \ + pcre2/src/pcre2_dfa_match.c \ + pcre2/src/pcre2_error.c \ + pcre2/src/pcre2_extuni.c \ + pcre2/src/pcre2_find_bracket.c \ + pcre2/src/pcre2_maketables.c \ + pcre2/src/pcre2_match.c \ + pcre2/src/pcre2_match_data.c \ + pcre2/src/pcre2_newline.c \ + pcre2/src/pcre2_ord2utf.c \ + pcre2/src/pcre2_pattern_info.c \ + pcre2/src/pcre2_script_run.c \ + pcre2/src/pcre2_serialize.c \ + pcre2/src/pcre2_string_utils.c \ + pcre2/src/pcre2_study.c \ + pcre2/src/pcre2_substitute.c \ + pcre2/src/pcre2_substring.c \ + pcre2/src/pcre2_tables.c \ + pcre2/src/pcre2_ucd.c \ + pcre2/src/pcre2_valid_utf.c \ + pcre2/src/pcre2_xclass.c \ + pcre2/src/pcre2_jit_compile.c + +include $(BUILD_STATIC_LIBRARY) +#**************** PCRE2 *************** + +#*************** HARFBUZZ ************* +include $(CLEAR_VARS) + +LOCAL_PATH := $(EEPP_THIRD_PARTY_PATH) + +LOCAL_MODULE := harfbuzz + +HARFBUZZ_SRCS := harfbuzz/**.cc + +LOCAL_C_INCLUDES := $(LOCAL_PATH)/harfbuzz/ +LOCAL_CFLAGS := -Os -DHAVE_CONFIG_H -I$(LOCAL_PATH)/freetype2/include + +LOCAL_SRC_FILES := $(foreach F, $(HARFBUZZ_SRCS), $(addprefix $(dir $(F)),$(notdir $(wildcard $(LOCAL_PATH)/$(F))))) + +include $(BUILD_STATIC_LIBRARY) +#*************** HARFBUZZ ************* + #**************** SDL 2 *************** include $(CLEAR_VARS) diff --git a/projects/android-project/build.gradle b/projects/android-project/build.gradle index d0b4a62a0..3b55e2610 100644 --- a/projects/android-project/build.gradle +++ b/projects/android-project/build.gradle @@ -6,7 +6,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:7.4.0' + classpath 'com.android.tools.build:gradle:8.4.2' } } diff --git a/projects/android-project/build.sh b/projects/android-project/build.sh index ab66ada47..4037422a6 100755 --- a/projects/android-project/build.sh +++ b/projects/android-project/build.sh @@ -1,11 +1,11 @@ #!/bin/sh -adb devices +adb devices || exit -cd $(dirname "$0") +cd "$(dirname "$0")" || exit -./assets.sh +./assets.sh || exit -./gradlew build +./gradlew build || exit adb install -r app/build/outputs/apk/debug/app-debug.apk diff --git a/projects/android-project/gradle/wrapper/gradle-wrapper.properties b/projects/android-project/gradle/wrapper/gradle-wrapper.properties index 070cb702f..df7bb99a4 100644 --- a/projects/android-project/gradle/wrapper/gradle-wrapper.properties +++ b/projects/android-project/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#Tue Oct 22 20:55:49 ART 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/eepp/core/string.cpp b/src/eepp/core/string.cpp index f458c0695..537273e61 100644 --- a/src/eepp/core/string.cpp +++ b/src/eepp/core/string.cpp @@ -14,6 +14,14 @@ #include #include +#if __GNUC__ >= 11 || ( __clang__ && __clang_major__ >= 12 ) +#define STD_SUPPORTS_FIXED_TO_CHARS +#endif + +#ifndef STD_SUPPORTS_FIXED_TO_CHARS +#include +#endif + namespace EE { template static bool _fromString( T& t, const std::string& s, int base = 10 ) { @@ -55,9 +63,15 @@ template static bool _fromString( T& t, const std::string& s, int b template static std::string _toString( const T& value, size_t digitsAfterComma = 2 ) { char buffer[32]; if constexpr ( (std::is_same_v || std::is_same_v)) { +#ifdef STD_SUPPORTS_FIXED_TO_CHARS auto [ptr, ec] = std::to_chars( buffer, buffer + sizeof( buffer ), value, std::chars_format::fixed, digitsAfterComma ); return ec == std::errc() ? std::string( buffer, ptr ) : std::string{}; +#else + std::ostringstream ss; + ss << std::fixed << value; + return ss.str(); +#endif } else { auto [ptr, ec] = std::to_chars( buffer, buffer + sizeof( buffer ), value ); return ec == std::errc() ? std::string( buffer, ptr ) : std::string{}; diff --git a/src/eepp/system/pak.cpp b/src/eepp/system/pak.cpp index bd6baaf6c..9e1652a4e 100644 --- a/src/eepp/system/pak.cpp +++ b/src/eepp/system/pak.cpp @@ -265,7 +265,7 @@ bool Pak::addFile( const Uint8* data, const Uint32& dataSize, const std::string& // Update the new pakEntrys on pakFile mPak.fs->write( reinterpret_cast( &pakE[0] ), - ( std::streamsize )( sizeof( pakEntry ) * pakE.size() ) ); + (ios_size)( sizeof( pakEntry ) * pakE.size() ) ); mPakFiles.push_back( pakE[mPak.pakFilesNum] ); mPak.pakFilesNum += 1; @@ -357,12 +357,11 @@ bool Pak::eraseFiles( const std::vector& paths ) { if ( extractFileToMemory( std::string( uEntry[i].filename ), data ) ) { uEntry[i].file_position = nPf.fs->tell(); uEntry[i].file_length = (Uint32)data.size(); - nPf.fs->write( reinterpret_cast( &data[0] ), - (std::streamsize)data.size() ); + nPf.fs->write( reinterpret_cast( &data[0] ), (ios_size)data.size() ); } nPf.fs->write( reinterpret_cast( &uEntry[0] ), - ( std::streamsize )( sizeof( pakEntry ) * uEntry.size() ) ); + (ios_size)( sizeof( pakEntry ) * uEntry.size() ) ); eeSAFE_DELETE( nPf.fs ); diff --git a/src/thirdparty/SDL2/src/sensor/android/SDL_androidsensor.c b/src/thirdparty/SDL2/src/sensor/android/SDL_androidsensor.c index d7c0a7e2d..0c63b3652 100644 --- a/src/thirdparty/SDL2/src/sensor/android/SDL_androidsensor.c +++ b/src/thirdparty/SDL2/src/sensor/android/SDL_androidsensor.c @@ -154,7 +154,7 @@ SDL_ANDROID_SensorOpen(SDL_Sensor *sensor, int device_index) sensor->hwdata = hwdata; return 0; } - + static void SDL_ANDROID_SensorUpdate(SDL_Sensor *sensor) { @@ -162,7 +162,7 @@ SDL_ANDROID_SensorUpdate(SDL_Sensor *sensor) ASensorEvent event; struct android_poll_source* source; - if (ALooper_pollAll(0, NULL, &events, (void**)&source) == LOOPER_ID_USER) { + if (ALooper_pollOnce(0, NULL, &events, (void **)&source) == LOOPER_ID_USER) { SDL_zero(event); while (ASensorEventQueue_getEvents(sensor->hwdata->eventqueue, &event, 1) > 0) { SDL_PrivateSensorUpdate(sensor, event.data, SDL_arraysize(event.data)); diff --git a/src/thirdparty/imageresampler/resampler.cpp b/src/thirdparty/imageresampler/resampler.cpp index 3eb8fc3c1..4ea623f11 100644 --- a/src/thirdparty/imageresampler/resampler.cpp +++ b/src/thirdparty/imageresampler/resampler.cpp @@ -330,7 +330,7 @@ static double bessel0(double x) return sum; } -static const Resample_Real KAISER_ALPHA = 4.0; +//static const Resample_Real KAISER_ALPHA = 4.0; static double kaiser(double alpha, double half_width, double x) { const double ratio = (x / half_width); diff --git a/src/thirdparty/pcre2/src/config.h b/src/thirdparty/pcre2/src/config.h index 708cbe2fa..56d2da325 100644 --- a/src/thirdparty/pcre2/src/config.h +++ b/src/thirdparty/pcre2/src/config.h @@ -319,7 +319,7 @@ sure both macros are undefined; an emulation function will then be used. */ /* Define to any non-zero number to enable support for SELinux compatible executable memory allocator in JIT. Note that this will have no effect unless SUPPORT_JIT is also defined. */ -#if defined( linux ) || defined( __linux__ ) || defined( __ANDROID__ ) || defined( ANDROID ) +#if (defined( linux ) || defined( __linux__ )) && !(defined( __ANDROID__ ) || defined( ANDROID )) #define SLJIT_PROT_EXECUTABLE_ALLOCATOR 1 #endif