Files
eepp/projects/android-project/app/jni/eepp.mk
Martín Lucas Golini 99f4711408 Fix Android build.
2026-03-05 10:32:15 -03:00

586 lines
16 KiB
Makefile

LOCAL_PATH := $(call my-dir)
EEPP_BASE_PATH := $(LOCAL_PATH)/../../../../src
EEPP_PATH := $(LOCAL_PATH)/../../../../src/eepp
EEPP_INC_PATH := $(LOCAL_PATH)/../../../../include
EEPP_THIRD_PARTY_PATH := $(EEPP_BASE_PATH)/thirdparty
EEPP_MODULES_PATH := $(EEPP_BASE_PATH)/modules
SDL_PATH := $(EEPP_THIRD_PARTY_PATH)/SDL2
SDL_MAIN_PATH := $(SDL_PATH)/src/main/android/*.c
EEPP_C_INCLUDES := \
$(EEPP_THIRD_PARTY_PATH) \
$(EEPP_THIRD_PARTY_PATH)/freetype2/include \
$(EEPP_THIRD_PARTY_PATH)/libpng \
$(EEPP_THIRD_PARTY_PATH)/libwebp/src \
$(EEPP_THIRD_PARTY_PATH)/libyaml/include \
$(SDL_PATH)/include \
$(EEPP_THIRD_PARTY_PATH)/chipmunk \
$(EEPP_INC_PATH)/eepp/thirdparty \
$(EEPP_INC_PATH)/eepp/thirdparty/chipmunk \
$(EEPP_THIRD_PARTY_PATH)/SOIL2/src/SOIL2 \
$(EEPP_THIRD_PARTY_PATH)/stb_vorbis \
$(EEPP_THIRD_PARTY_PATH)/libvorbis/lib \
$(EEPP_THIRD_PARTY_PATH)/libvorbis/include \
$(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)/oniguruma \
$(EEPP_THIRD_PARTY_PATH)/SheenBidi/Headers \
$(EEPP_THIRD_PARTY_PATH)/efsw/include \
$(EEPP_BASE_PATH)/modules/eterm/include \
$(EEPP_BASE_PATH)/modules/eterm/src \
$(EEPP_BASE_PATH)/modules/maps/include \
$(EEPP_BASE_PATH)/modules/maps/src \
$(EEPP_BASE_PATH)/modules/physics/include \
$(EEPP_BASE_PATH)/modules/physics/src \
$(EEPP_BASE_PATH)/modules/physics/include/eepp/thirdparty/chipmunk \
$(EEPP_BASE_PATH)/modules/languages-syntax-highlighting/src
EEPP_C_FLAGS := \
-Wl,--undefined=Java_org_libsdl_app_SDLActivity_nativeInit \
-DANDROID \
-DANDROID_NDK \
-DZ_HAVE_UNISTD_H \
-DDISABLE_IMPORTGL \
-Wall \
-Wno-unknown-pragmas \
$(EE_GLES_VERSION) \
-DEE_NO_SNDFILE \
-DEE_SSL_SUPPORT \
-DEE_MBEDTLS \
-D$(EE_SDL_VERSION) \
-DAL_LIBTYPE_STATIC \
-DEE_MOJOAL \
-I$(EEPP_INC_PATH) \
-I$(EEPP_BASE_PATH) \
-DPCRE2_STATIC \
-DPCRE2_CODE_UNIT_WIDTH=8 \
-DONIG_STATIC \
-DEE_TEXT_SHAPER_ENABLED
EEPP_LDLIBS := $(APP_LDLIBS)
include $(call all-subdir-makefiles)
#*************** EEPP ***************
include $(CLEAR_VARS)
LOCAL_PATH := $(EEPP_PATH)
LOCAL_MODULE := eepp
LOCAL_CFLAGS := $(EEPP_C_FLAGS)
CODE_SRCS := \
../thirdparty/SOIL2/src/SOIL2/*.c \
../thirdparty/zlib/*.c \
../thirdparty/libzip/*.c \
../thirdparty/jpeg-compressor/*.cpp \
../thirdparty/imageresampler/*.cpp \
../thirdparty/pugixml/*.cpp \
../thirdparty/libogg/src/*.c \
../thirdparty/libvorbis/lib/*.c \
../thirdparty/mbedtls/library/*.c \
../thirdparty/mojoAL/*.c \
system/*.cpp \
system/platform/posix/*.cpp \
network/*.cpp \
network/http/*.cpp \
network/ssl/*.cpp \
network/ssl/backend/mbedtls/*.cpp \
network/platform/unix/*.cpp \
core/*.cpp \
math/*.cpp \
audio/*.cpp \
window/*.cpp \
window/backend/SDL2/*.cpp \
graphics/*.cpp \
graphics/renderer/*.cpp \
scene/*.cpp \
scene/actions/*.cpp \
ui/*.cpp \
ui/css/*.cpp \
ui/doc/*.cpp \
ui/doc/languages/*.cpp \
ui/abstract/*.cpp \
ui/models/*.cpp \
ui/tools/*.cpp
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 libwebp md4c pcre2 oniguruma harfbuzz sheenbidi
LOCAL_SHARED_LIBRARIES := SDL2
include $(BUILD_STATIC_LIBRARY)
#*************** EEPP ***************
#*************** CHIPMUNK ***************
include $(CLEAR_VARS)
LOCAL_PATH := $(EEPP_THIRD_PARTY_PATH)
LOCAL_MODULE := chipmunk
LOCAL_CFLAGS := \
-DANDROID_NDK \
-DDISABLE_IMPORTGL \
-std=gnu99 \
-Wall \
-Wno-unknown-pragmas
CHIPMUNK_SRCS := \
chipmunk/*.c \
chipmunk/constraints/*.c
LOCAL_C_INCLUDES := $(EEPP_C_INCLUDES)
LOCAL_SRC_FILES := $(foreach F, $(CHIPMUNK_SRCS), $(addprefix $(dir $(F)),$(notdir $(wildcard $(LOCAL_PATH)/$(F)))))
include $(BUILD_STATIC_LIBRARY)
#*************** CHIPMUNK ***************
#*************** FREETYPE ***************
include $(CLEAR_VARS)
LOCAL_PATH := $(EEPP_THIRD_PARTY_PATH)/freetype2
LOCAL_MODULE := freetype
APP_SUBDIRS := $(patsubst $(LOCAL_PATH)/%, %, $(shell find $(LOCAL_PATH)/src -type d))
LOCAL_C_INCLUDES := $(foreach D, $(APP_SUBDIRS), $(LOCAL_PATH)/$(D)) $(LOCAL_PATH)/include $(EEPP_THIRD_PARTY_PATH)/libpng
LOCAL_CFLAGS := -Os -DFT2_BUILD_LIBRARY
LOCAL_SRC_FILES += $(foreach F, $(APP_SUBDIRS), $(addprefix $(F)/,$(notdir $(wildcard $(LOCAL_PATH)/$(F)/*.c))))
include $(BUILD_STATIC_LIBRARY)
#*************** FREETYPE ***************
#*************** LIBPNG ***************
include $(CLEAR_VARS)
LOCAL_PATH := $(EEPP_THIRD_PARTY_PATH)
LOCAL_MODULE := libpng
LIBPNG_SRCS := \
libpng/*.c \
libpng/arm/*.c \
libpng/intel/*.c \
libpng/mips/*.c \
libpng/powerpc/*.c
LOCAL_C_INCLUDES := $(LOCAL_PATH)/libpng/
LOCAL_CFLAGS := -Os
LOCAL_SRC_FILES := $(foreach F, $(LIBPNG_SRCS), $(addprefix $(dir $(F)),$(notdir $(wildcard $(LOCAL_PATH)/$(F)))))
include $(BUILD_STATIC_LIBRARY)
#*************** LIBPNG ***************
#*************** LIBWEBP ***************
include $(CLEAR_VARS)
LOCAL_PATH := $(EEPP_THIRD_PARTY_PATH)
LOCAL_MODULE := libwebp
LIBWEBP_SRCS := \
libwebp/src/dec/*.c \
libwebp/src/demux/*.c \
libwebp/src/dsp/*.c \
libwebp/src/enc/*.c \
libwebp/src/mux/*.c \
libwebp/src/utils/*.c \
libwebp/src/webp/*.c \
libwebp/sharpyuv/*.c
LOCAL_C_INCLUDES := $(LOCAL_PATH)/libwebp $(LOCAL_PATH)/libwebp/src $(LOCAL_PATH)/sharpyuv
LOCAL_CFLAGS := -Os
LOCAL_SRC_FILES := $(foreach F, $(LIBWEBP_SRCS), $(addprefix $(dir $(F)),$(notdir $(wildcard $(LOCAL_PATH)/$(F)))))
include $(BUILD_STATIC_LIBRARY)
#*************** LIBWEBP ***************
#**************** 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 ***************
#**************** Oniguruma ***************
include $(CLEAR_VARS)
LOCAL_PATH := $(EEPP_THIRD_PARTY_PATH)
LOCAL_MODULE := oniguruma
LOCAL_C_INCLUDES := $(LOCAL_PATH)/oniguruma
LOCAL_CFLAGS := -Os -DONIG_STATIC
LOCAL_SRC_FILES := \
oniguruma/regcomp.c \
oniguruma/regenc.c \
oniguruma/regerror.c \
oniguruma/regext.c \
oniguruma/regexec.c \
oniguruma/regparse.c \
oniguruma/regsyntax.c \
oniguruma/regtrav.c \
oniguruma/regversion.c \
oniguruma/st.c \
oniguruma/reggnu.c \
oniguruma/regposerr.c \
oniguruma/regposix.c \
oniguruma/mktable.c \
oniguruma/ascii.c \
oniguruma/euc_jp.c \
oniguruma/euc_tw.c \
oniguruma/euc_kr.c \
oniguruma/sjis.c \
oniguruma/big5.c \
oniguruma/gb18030.c \
oniguruma/koi8.c \
oniguruma/koi8_r.c \
oniguruma/cp1251.c \
oniguruma/iso8859_1.c \
oniguruma/iso8859_2.c \
oniguruma/iso8859_3.c \
oniguruma/iso8859_4.c \
oniguruma/iso8859_5.c \
oniguruma/iso8859_6.c \
oniguruma/iso8859_7.c \
oniguruma/iso8859_8.c \
oniguruma/iso8859_9.c \
oniguruma/iso8859_10.c \
oniguruma/iso8859_11.c \
oniguruma/iso8859_13.c \
oniguruma/iso8859_14.c \
oniguruma/iso8859_15.c \
oniguruma/iso8859_16.c \
oniguruma/utf8.c \
oniguruma/utf16_be.c \
oniguruma/utf16_le.c \
oniguruma/utf32_be.c \
oniguruma/utf32_le.c \
oniguruma/unicode.c \
oniguruma/unicode_fold_data.c \
oniguruma/unicode_fold1_key.c \
oniguruma/unicode_fold2_key.c \
oniguruma/unicode_fold3_key.c \
oniguruma/onig_init.c \
oniguruma/unicode_unfold_key.c
include $(BUILD_STATIC_LIBRARY)
#**************** Oniguruma ***************
#*************** 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 *************
#*************** SHEENBIDI *************
include $(CLEAR_VARS)
LOCAL_PATH := $(EEPP_THIRD_PARTY_PATH)
LOCAL_MODULE := sheenbidi
SHEENBIDI_SRCS := SheenBidi/Source/**.c
LOCAL_C_INCLUDES := $(LOCAL_PATH)/SheenBidi/Headers
LOCAL_CFLAGS := -Os -I$(LOCAL_PATH)/freetype2/include
LOCAL_SRC_FILES := $(foreach F, $(SHEENBIDI_SRCS), $(addprefix $(dir $(F)),$(notdir $(wildcard $(LOCAL_PATH)/$(F)))))
include $(BUILD_STATIC_LIBRARY)
#*************** SHEENBIDI *************
#*************** LIBYAML ***************
include $(CLEAR_VARS)
LOCAL_PATH := $(EEPP_THIRD_PARTY_PATH)
LOCAL_MODULE := libyaml
LIBYAML_SRCS := libyaml/src/*.c
LOCAL_C_INCLUDES := $(LOCAL_PATH)/libyaml $(LOCAL_PATH)/libyaml/src $(LOCAL_PATH)/libyaml/include
LOCAL_CFLAGS := -Os -DHAVE_CONFIG_H -DYAML_DECLARE_STATIC
LOCAL_SRC_FILES := $(foreach F, $(LIBYAML_SRCS), $(addprefix $(dir $(F)),$(notdir $(wildcard $(LOCAL_PATH)/$(F)))))
include $(BUILD_STATIC_LIBRARY)
#*************** LIBYAML ***************
#*************** MD4C ***************
include $(CLEAR_VARS)
LOCAL_PATH := $(EEPP_THIRD_PARTY_PATH)
LOCAL_MODULE := md4c
MD4C_SRCS := md4c/*.c
LOCAL_C_INCLUDES := $(LOCAL_PATH)/md4c
LOCAL_CFLAGS := -Os
LOCAL_SRC_FILES := $(foreach F, $(MD4C_SRCS), $(addprefix $(dir $(F)),$(notdir $(wildcard $(LOCAL_PATH)/$(F)))))
include $(BUILD_STATIC_LIBRARY)
#*************** MD4C ***************
#**************** SDL 2 ***************
include $(CLEAR_VARS)
LOCAL_PATH := $(SDL_PATH)
LOCAL_MODULE := SDL2
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES)
LOCAL_SRC_FILES := \
$(subst $(LOCAL_PATH)/,, \
$(wildcard $(LOCAL_PATH)/src/*.c) \
$(wildcard $(LOCAL_PATH)/src/audio/*.c) \
$(wildcard $(LOCAL_PATH)/src/audio/android/*.c) \
$(wildcard $(LOCAL_PATH)/src/audio/dummy/*.c) \
$(wildcard $(LOCAL_PATH)/src/audio/openslES/*.c) \
$(LOCAL_PATH)/src/atomic/SDL_atomic.c.arm \
$(LOCAL_PATH)/src/atomic/SDL_spinlock.c.arm \
$(wildcard $(LOCAL_PATH)/src/core/android/*.c) \
$(wildcard $(LOCAL_PATH)/src/cpuinfo/*.c) \
$(wildcard $(LOCAL_PATH)/src/dynapi/*.c) \
$(wildcard $(LOCAL_PATH)/src/events/*.c) \
$(wildcard $(LOCAL_PATH)/src/file/*.c) \
$(wildcard $(LOCAL_PATH)/src/haptic/*.c) \
$(wildcard $(LOCAL_PATH)/src/haptic/android/*.c) \
$(wildcard $(LOCAL_PATH)/src/joystick/*.c) \
$(wildcard $(LOCAL_PATH)/src/joystick/android/*.c) \
$(wildcard $(LOCAL_PATH)/src/joystick/hidapi/*.c) \
$(wildcard $(LOCAL_PATH)/src/loadso/dlopen/*.c) \
$(wildcard $(LOCAL_PATH)/src/power/*.c) \
$(wildcard $(LOCAL_PATH)/src/power/android/*.c) \
$(wildcard $(LOCAL_PATH)/src/filesystem/android/*.c) \
$(wildcard $(LOCAL_PATH)/src/sensor/*.c) \
$(wildcard $(LOCAL_PATH)/src/sensor/android/*.c) \
$(wildcard $(LOCAL_PATH)/src/render/*.c) \
$(wildcard $(LOCAL_PATH)/src/render/*/*.c) \
$(wildcard $(LOCAL_PATH)/src/stdlib/*.c) \
$(wildcard $(LOCAL_PATH)/src/thread/*.c) \
$(wildcard $(LOCAL_PATH)/src/thread/pthread/*.c) \
$(wildcard $(LOCAL_PATH)/src/timer/*.c) \
$(wildcard $(LOCAL_PATH)/src/timer/unix/*.c) \
$(wildcard $(LOCAL_PATH)/src/video/*.c) \
$(wildcard $(LOCAL_PATH)/src/video/android/*.c) \
$(wildcard $(LOCAL_PATH)/src/video/yuv2rgb/*.c) \
$(wildcard $(LOCAL_PATH)/src/test/*.c))
LOCAL_SHARED_LIBRARIES := hidapi
LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES
LOCAL_CFLAGS += \
-Wall -Wextra \
-Wdocumentation \
-Wdocumentation-unknown-command \
-Wmissing-prototypes \
-Wunreachable-code-break \
-Wunneeded-internal-declaration \
-Wmissing-variable-declarations \
-Wfloat-conversion \
-Wshorten-64-to-32 \
-Wunreachable-code-return \
-Wshift-sign-overflow \
-Wstrict-prototypes \
-Wkeyword-macro \
# Warnings we haven't fixed (yet)
LOCAL_CFLAGS += -Wno-unused-parameter -Wno-sign-compare
LOCAL_LDLIBS := -ldl -lGLESv1_CM -lGLESv2 -lOpenSLES -llog -landroid
ifeq ($(NDK_DEBUG),1)
cmd-strip :=
endif
LOCAL_STATIC_LIBRARIES := cpufeatures
include $(BUILD_SHARED_LIBRARY)
###########################
#
# hidapi library
#
###########################
include $(CLEAR_VARS)
LOCAL_PATH := $(SDL_PATH)
LOCAL_CPPFLAGS += -std=c++11
LOCAL_SRC_FILES := src/hidapi/android/hid.cpp
LOCAL_MODULE := libhidapi
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/cpufeatures)
#**************** SDL 2 ***************
#*************** EFSW ***************
include $(CLEAR_VARS)
LOCAL_PATH := $(EEPP_THIRD_PARTY_PATH)
LOCAL_MODULE := efsw
LIBEFSW_SRCS := \
efsw/src/efsw/*.cpp \
efsw/src/efsw/platform/posix/*.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/efsw/include $(LOCAL_PATH)/efsw/src
LOCAL_CFLAGS := -Os -DEFSW_USE_CXX11
LOCAL_SRC_FILES := $(foreach F, $(LIBEFSW_SRCS), $(addprefix $(dir $(F)),$(notdir $(wildcard $(LOCAL_PATH)/$(F)))))
include $(BUILD_STATIC_LIBRARY)
#*************** EFSW ***************
#*************** MAPS ***************
include $(CLEAR_VARS)
LOCAL_PATH := $(EEPP_MODULES_PATH)
LOCAL_MODULE := eepp-maps
LIBMAPS_SRCS := \
maps/src/eepp/maps/*.cpp \
maps/src/eepp/maps/mapeditor/*.cpp
LOCAL_C_INCLUDES := $(EEPP_C_INCLUDES) $(EEPP_INC_PATH)
LOCAL_CFLAGS := -Os
LOCAL_SRC_FILES := $(foreach F, $(LIBMAPS_SRCS), $(addprefix $(dir $(F)),$(notdir $(wildcard $(LOCAL_PATH)/$(F)))))
include $(BUILD_STATIC_LIBRARY)
#*************** MAPS ***************
#*************** PHYSICS ***************
include $(CLEAR_VARS)
LOCAL_PATH := $(EEPP_MODULES_PATH)
LOCAL_MODULE := eepp-physics
LIBMAPS_SRCS := \
physics/src/eepp/physics/*.cpp \
physics/src/eepp/physics/constraints/*.cpp
LOCAL_C_INCLUDES := $(EEPP_C_INCLUDES) $(EEPP_INC_PATH)
LOCAL_CFLAGS := -Os
LOCAL_STATIC_LIBRARIES := chipmunk
LOCAL_SRC_FILES := $(foreach F, $(LIBMAPS_SRCS), $(addprefix $(dir $(F)),$(notdir $(wildcard $(LOCAL_PATH)/$(F)))))
include $(BUILD_STATIC_LIBRARY)
#*************** PHYSICS ***************
#*************** ETERM ***************
include $(CLEAR_VARS)
LOCAL_PATH := $(EEPP_MODULES_PATH)
LOCAL_MODULE := eterm
LIBETERM_SRCS := \
eterm/src/eterm/system/*.cpp \
eterm/src/eterm/terminal/*.cpp \
eterm/src/eterm/ui/*.cpp
LOCAL_C_INCLUDES := $(EEPP_C_INCLUDES) $(EEPP_INC_PATH)
LOCAL_CFLAGS := -Os
LOCAL_SRC_FILES := $(foreach F, $(LIBETERM_SRCS), $(addprefix $(dir $(F)),$(notdir $(wildcard $(LOCAL_PATH)/$(F)))))
include $(BUILD_STATIC_LIBRARY)
#*************** ETERM ***************
#*************** LANGUAGES SYNTAX HIGHLIGHTING ***************
include $(CLEAR_VARS)
LOCAL_PATH := $(EEPP_MODULES_PATH)
LOCAL_MODULE := languages-syntax-highlighting
LIBETERM_SRCS := \
languages-syntax-highlighting/src/eepp/ui/doc/*.cpp \
languages-syntax-highlighting/src/eepp/ui/doc/languages/*.cpp
LOCAL_C_INCLUDES := $(EEPP_C_INCLUDES) $(EEPP_INC_PATH)
LOCAL_CFLAGS := -Os
LOCAL_SRC_FILES := $(foreach F, $(LIBETERM_SRCS), $(addprefix $(dir $(F)),$(notdir $(wildcard $(LOCAL_PATH)/$(F)))))
include $(BUILD_STATIC_LIBRARY)
#*************** LANGUAGES SYNTAX HIGHLIGHTING ***************