Android.mk
author David Ludwig <dludwig@pobox.com>
Sat, 29 Nov 2014 10:09:30 -0500
changeset 9247 eddb899239fe
parent 9054 18d34edc79ac
child 9592 ba866f4ec675
permissions -rwxr-xr-x
WinRT: bug and data-integrity fixes for SDL_GetPrefPath()

This change does a few things, all with regards to the WinRT implementation of
SDL_GetPrefPath():

1. it fixes a bug whereby SDL_GetPrefPath() did not create the directory it
returned. On other SDL platforms, SDL_GetPrefPath() will create separate
directories for its 'org' and 'app' folders. Without this, attempts to create
files in the pref-path would fail, unless those directories were first created
by the app, or by some other library the app used. This change makes sure
that these directories get created, before SDL_GetPrefPath() returns to its
caller(s).


2. it defaults to having SDL_GetPrefPath() return a WinRT 'Local' folder
on all platforms. Previously, for Windows Store apps, it would have used a
different, 'Roaming' folder. Files in Roaming folders can be automatically,
and synchronized across multiple devices by Windows. This synchronization can
happen while the app runs, with new files being copied into a running app's
pref-path. Unless an app is specifically designed to handle this scenario,
there is a chance that save-data could be overwritten in unwanted or
unexpected ways.

The default is now to use a Local folder, which does not get synchronized, and
which is arguably a bit safer to use. Apps that wish to use Roaming folders
can do so by setting SDL_HINT_WINRT_PREF_PATH_ROOT to "roaming", however it
is recommended that one first read Microsoft's documentation for Roaming
files, a link to which is provided in README-winrt.md.

To preserve older pref-path selection behavior (found in SDL 2.0.3, as well as
many pre-2.0.4 versions of SDL from hg.libsdl.org), which uses a Roaming path
in Windows Store apps, and a Local path in Windows Phone, set
SDL_HINT_WINRT_PREF_PATH_ROOT to "old".

Please note that Roaming paths are not supported on Windows Phone 8.0, due to
limitations in the OS itself. Attempts to use this will fail.
(Windows Phone 8.1 does not have this limitation, however.)


3. It makes SDL_GetPrefPath(), when on Windows Phone 8.0, and when
SDL_HINT_WINRT_PREF_PATH_ROOT is set to "roaming", return NULL, rather than
silently defaulting to a Local path (then switching to a Roaming path if and
when the user upgraded to Windows Phone 8.1).
slouken@4964
     1
LOCAL_PATH := $(call my-dir)
slouken@4964
     2
slouken@4964
     3
###########################
slouken@4964
     4
#
slouken@4964
     5
# SDL shared library
slouken@4964
     6
#
slouken@4964
     7
###########################
slouken@4964
     8
slouken@4964
     9
include $(CLEAR_VARS)
slouken@4964
    10
slouken@6270
    11
LOCAL_MODULE := SDL2
slouken@4964
    12
slouken@4964
    13
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
slouken@4964
    14
slouken@7311
    15
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES)
slouken@7311
    16
slouken@5090
    17
LOCAL_SRC_FILES := \
slouken@4964
    18
	$(subst $(LOCAL_PATH)/,, \
slouken@4964
    19
	$(wildcard $(LOCAL_PATH)/src/*.c) \
slouken@4964
    20
	$(wildcard $(LOCAL_PATH)/src/audio/*.c) \
slouken@5090
    21
	$(wildcard $(LOCAL_PATH)/src/audio/android/*.c) \
slouken@5090
    22
	$(wildcard $(LOCAL_PATH)/src/audio/dummy/*.c) \
slouken@5003
    23
	$(LOCAL_PATH)/src/atomic/SDL_atomic.c \
slouken@5003
    24
	$(LOCAL_PATH)/src/atomic/SDL_spinlock.c.arm \
ewing@7501
    25
	$(wildcard $(LOCAL_PATH)/src/core/android/*.c) \
slouken@4964
    26
	$(wildcard $(LOCAL_PATH)/src/cpuinfo/*.c) \
icculus@8097
    27
	$(wildcard $(LOCAL_PATH)/src/dynapi/*.c) \
slouken@4964
    28
	$(wildcard $(LOCAL_PATH)/src/events/*.c) \
slouken@4964
    29
	$(wildcard $(LOCAL_PATH)/src/file/*.c) \
slouken@5090
    30
	$(wildcard $(LOCAL_PATH)/src/haptic/*.c) \
slouken@5090
    31
	$(wildcard $(LOCAL_PATH)/src/haptic/dummy/*.c) \
slouken@4964
    32
	$(wildcard $(LOCAL_PATH)/src/joystick/*.c) \
slouken@5090
    33
	$(wildcard $(LOCAL_PATH)/src/joystick/android/*.c) \
slouken@5092
    34
	$(wildcard $(LOCAL_PATH)/src/loadso/dlopen/*.c) \
slouken@5090
    35
	$(wildcard $(LOCAL_PATH)/src/power/*.c) \
slouken@6448
    36
	$(wildcard $(LOCAL_PATH)/src/power/android/*.c) \
slouken@9054
    37
	$(wildcard $(LOCAL_PATH)/src/filesystem/android/*.c) \
slouken@5161
    38
	$(wildcard $(LOCAL_PATH)/src/render/*.c) \
slouken@5204
    39
	$(wildcard $(LOCAL_PATH)/src/render/*/*.c) \
slouken@4964
    40
	$(wildcard $(LOCAL_PATH)/src/stdlib/*.c) \
slouken@4964
    41
	$(wildcard $(LOCAL_PATH)/src/thread/*.c) \
slouken@5090
    42
	$(wildcard $(LOCAL_PATH)/src/thread/pthread/*.c) \
slouken@4964
    43
	$(wildcard $(LOCAL_PATH)/src/timer/*.c) \
slouken@5090
    44
	$(wildcard $(LOCAL_PATH)/src/timer/unix/*.c) \
slouken@4964
    45
	$(wildcard $(LOCAL_PATH)/src/video/*.c) \
gabomdq@7793
    46
	$(wildcard $(LOCAL_PATH)/src/video/android/*.c) \
gabomdq@7793
    47
    $(wildcard $(LOCAL_PATH)/src/test/*.c))
slouken@4964
    48
slouken@6208
    49
LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES
gabomdq@7659
    50
LOCAL_LDLIBS := -ldl -lGLESv1_CM -lGLESv2 -llog -landroid
slouken@4964
    51
slouken@4964
    52
include $(BUILD_SHARED_LIBRARY)
slouken@7804
    53
slouken@7804
    54
###########################
slouken@7804
    55
#
slouken@7804
    56
# SDL static library
slouken@7804
    57
#
slouken@7804
    58
###########################
slouken@7804
    59
slouken@7804
    60
LOCAL_MODULE := SDL2_static
slouken@7804
    61
slouken@7804
    62
LOCAL_MODULE_FILENAME := libSDL2
slouken@7804
    63
slouken@8864
    64
LOCAL_SRC_FILES += $(subst $(LOCAL_PATH)/,,$(LOCAL_PATH)/src/main/android/SDL_android_main.c)
slouken@7804
    65
slouken@7804
    66
LOCAL_LDLIBS := 
slouken@7804
    67
LOCAL_EXPORT_LDLIBS := -Wl,--undefined=Java_org_libsdl_app_SDLActivity_nativeInit -ldl -lGLESv1_CM -lGLESv2 -llog -landroid
slouken@7804
    68
slouken@7804
    69
include $(BUILD_STATIC_LIBRARY)