mirror of
https://github.com/libsdl-org/SDL.git
synced 2024-11-23 10:53:27 +08:00
1878674477
If a program built against one version of SDL is run in an environment where there is an earlier version of the SDL .so library installed, the result varies depending on platform configuration; in the best case, it won't start at all, at worst it aborts in the middle of the user doing "something important" (systems implementing lazy symbol resolution). verdefs on the other hand are always checked on startup. The dependency information present in programs and shared libraries is not only of value to the dynamic linker, but also to a distribution's package management. If the dynamic linker is able to tell that a program is not runnable per the above, a package manager is able to come to the same conclusion — and block the installation of a nonfunctional program+library ensemble. Because there are a lot more symbols than there are libraries (I am going to throw in "10^4 to 1 or worse"), package managers generally do not evaluate symbols, but only e.g. the SONAME, NEEDED and VERNEED fields/blocks. Because the SONAME is the same between two SDL versions like 2.0.24, and 2.0.26, everything rests on having verdefs. This patch proposes the addition of verdefs.
130 lines
3.6 KiB
Makefile
130 lines
3.6 KiB
Makefile
LOCAL_PATH := $(call my-dir)
|
|
|
|
###########################
|
|
#
|
|
# SDL shared library
|
|
#
|
|
###########################
|
|
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE := SDL3
|
|
|
|
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include $(LOCAL_PATH)/src
|
|
|
|
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/aaudio/*.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/hidapi/*.c) \
|
|
$(wildcard $(LOCAL_PATH)/src/hidapi/android/*.cpp) \
|
|
$(wildcard $(LOCAL_PATH)/src/joystick/*.c) \
|
|
$(wildcard $(LOCAL_PATH)/src/joystick/android/*.c) \
|
|
$(wildcard $(LOCAL_PATH)/src/joystick/hidapi/*.c) \
|
|
$(wildcard $(LOCAL_PATH)/src/joystick/virtual/*.c) \
|
|
$(wildcard $(LOCAL_PATH)/src/loadso/dlopen/*.c) \
|
|
$(wildcard $(LOCAL_PATH)/src/locale/*.c) \
|
|
$(wildcard $(LOCAL_PATH)/src/locale/android/*.c) \
|
|
$(wildcard $(LOCAL_PATH)/src/misc/*.c) \
|
|
$(wildcard $(LOCAL_PATH)/src/misc/android/*.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_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
|
|
|
|
LOCAL_LDFLAGS := -Wl,--no-undefined -Wl,--version-script=$(LOCAL_PATH)/src/dynapi/SDL_dynapi.sym
|
|
|
|
ifeq ($(NDK_DEBUG),1)
|
|
cmd-strip :=
|
|
endif
|
|
|
|
LOCAL_STATIC_LIBRARIES := cpufeatures
|
|
|
|
include $(BUILD_SHARED_LIBRARY)
|
|
|
|
|
|
###########################
|
|
#
|
|
# SDL static library
|
|
#
|
|
###########################
|
|
|
|
LOCAL_MODULE := SDL3_static
|
|
|
|
LOCAL_MODULE_FILENAME := libSDL3
|
|
|
|
LOCAL_LDLIBS :=
|
|
|
|
LOCAL_LDFLAGS :=
|
|
|
|
LOCAL_EXPORT_LDLIBS := -ldl -lGLESv1_CM -lGLESv2 -llog -landroid
|
|
|
|
include $(BUILD_STATIC_LIBRARY)
|
|
|
|
|
|
###########################
|
|
#
|
|
# SDL main static library
|
|
#
|
|
###########################
|
|
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
|
|
|
|
LOCAL_MODULE := SDL3_main
|
|
|
|
LOCAL_MODULE_FILENAME := libSDL3_main
|
|
|
|
include $(BUILD_STATIC_LIBRARY)
|
|
|
|
$(call import-module,android/cpufeatures)
|