[Android] Rewrote CMake scripts to compile SFML with our new toolchain
This commit is contained in:
parent
f9e80e1a3b
commit
60894d1c1a
28 changed files with 260 additions and 327 deletions
|
@ -2,51 +2,56 @@ LOCAL_PATH := $(call my-dir)
|
|||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := sfml-system
|
||||
LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libsfml-system.a
|
||||
LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libsfml-system.so
|
||||
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
|
||||
LOCAL_EXPORT_LDLIBS := -llog -landroid
|
||||
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
include $(PREBUILT_SHARED_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := sfml-window
|
||||
LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libsfml-window.a
|
||||
LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libsfml-window.so
|
||||
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
|
||||
LOCAL_EXPORT_LDLIBS := -lEGL
|
||||
LOCAL_SHARED_LIBRARIES := sfml-system
|
||||
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
include $(PREBUILT_SHARED_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := sfml-graphics
|
||||
LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libsfml-graphics.a
|
||||
LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libsfml-graphics.so
|
||||
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
|
||||
LOCAL_EXPORT_LDLIBS := -lGLESv1_CM
|
||||
#LOCAL_EXPORT_LDLIBS := -lGLESv1_CM
|
||||
|
||||
LOCAL_EXPORT_C_INCLUDES += $(LOCAL_PATH)/extlibs/include
|
||||
LOCAL_STATIC_LIBRARIES := jpeg freetype
|
||||
LOCAL_SHARED_LIBRARIES := freetype jpeg
|
||||
LOCAL_SHARED_LIBRARIES += sfml-system sfml-window
|
||||
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
include $(PREBUILT_SHARED_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := sfml-audio
|
||||
LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libsfml-audio.a
|
||||
LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libsfml-audio.so
|
||||
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
|
||||
#LOCAL_EXPORT_LDLIBS := -lOpenSLES
|
||||
LOCAL_SHARED_LIBRARIES := openal sndfile
|
||||
LOCAL_SHARED_LIBRARIES += sfml-system sfml-window
|
||||
|
||||
LOCAL_EXPORT_C_INCLUDES += $(LOCAL_PATH)/extlibs/include
|
||||
LOCAL_WHOLE_STATIC_LIBRARIES := ogg vorbis vorbisenc flac sndfile openal
|
||||
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
include $(PREBUILT_SHARED_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := sfml-network
|
||||
LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libsfml-network.a
|
||||
LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libsfml-network.so
|
||||
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
|
||||
LOCAL_SHARED_LIBRARIES := sfml-system
|
||||
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
include $(PREBUILT_SHARED_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := sfml-main
|
||||
LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libsfml-main.a
|
||||
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
|
||||
LOCAL_SHARED_LIBRARIES := sfml-system sfml-window
|
||||
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
|
|
|
@ -31,13 +31,8 @@
|
|||
#include <SFML/Config.hpp>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#ifndef SFML_SYSTEM_ANDROID
|
||||
#include <al.h>
|
||||
#include <alc.h>
|
||||
#else
|
||||
#include <AL/al.h>
|
||||
#include <AL/alc.h>
|
||||
#endif
|
||||
#include <al.h>
|
||||
#include <alc.h>
|
||||
|
||||
|
||||
namespace sf
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
LOCAL_PATH := $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE := sfml-audio
|
||||
|
||||
LOCAL_SRC_FILES := ALCheck.cpp
|
||||
LOCAL_SRC_FILES += AudioDevice.cpp
|
||||
LOCAL_SRC_FILES += Listener.cpp
|
||||
LOCAL_SRC_FILES += Music.cpp
|
||||
LOCAL_SRC_FILES += Sound.cpp
|
||||
LOCAL_SRC_FILES += SoundBuffer.cpp
|
||||
LOCAL_SRC_FILES += SoundBufferRecorder.cpp
|
||||
LOCAL_SRC_FILES += SoundFile.cpp
|
||||
LOCAL_SRC_FILES += SoundRecorder.cpp
|
||||
LOCAL_SRC_FILES += SoundSource.cpp
|
||||
LOCAL_SRC_FILES += SoundStream.cpp
|
||||
|
||||
include $(BUILD_STATIC_LIBRARY)
|
||||
|
||||
$(call import-module,extlibs)
|
|
@ -29,7 +29,7 @@ set(SRC
|
|||
${INCROOT}/SoundStream.hpp
|
||||
)
|
||||
source_group("" FILES ${SRC})
|
||||
if(NOT ANDROID)
|
||||
|
||||
# let CMake know about our additional audio libraries paths (on Windows and OSX)
|
||||
if(SFML_OS_WINDOWS)
|
||||
set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "${PROJECT_SOURCE_DIR}/extlibs/headers/AL")
|
||||
|
@ -40,14 +40,37 @@ elseif(SFML_OS_MACOSX)
|
|||
endif()
|
||||
|
||||
# find external libraries
|
||||
find_package(OpenAL REQUIRED)
|
||||
find_package(Sndfile REQUIRED)
|
||||
if(NOT ANDROID)
|
||||
find_package(OpenAL REQUIRED)
|
||||
find_package(Sndfile REQUIRED)
|
||||
set(AUDIO_EXT_LIBS ${OPENAL_LIBRARY} ${SNDFILE_LIBRARY})
|
||||
else()
|
||||
set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "${PROJECT_SOURCE_DIR}/extlibs/android/extlibs/include/AL")
|
||||
find_host_package(OpenAL REQUIRED)
|
||||
find_host_package(Sndfile REQUIRED)
|
||||
set(AUDIO_EXT_INCLUDE_PATHS ${OPENAL_INCLUDE_DIRS} ${SNDFILE_INCLUDE_DIR})
|
||||
set(AUDIO_EXT_LIBS -landroid
|
||||
-lOpenSLES
|
||||
${OPENAL_LIBRARY}
|
||||
${SNDFILE_LIBRARY}
|
||||
${PROJECT_SOURCE_DIR}/extlibs/android/extlibs/lib/${ANDROID_ABI}/libvorbisenc.so
|
||||
${PROJECT_SOURCE_DIR}/extlibs/android/extlibs/lib/${ANDROID_ABI}/libvorbis.so
|
||||
${PROJECT_SOURCE_DIR}/extlibs/android/extlibs/lib/${ANDROID_ABI}/libFLAC.so
|
||||
${PROJECT_SOURCE_DIR}/extlibs/android/extlibs/lib/${ANDROID_ABI}/libogg.so)
|
||||
endif()
|
||||
|
||||
# add include paths of external libraries
|
||||
include_directories(${OPENAL_INCLUDE_DIR} ${SNDFILE_INCLUDE_DIR})
|
||||
endif()
|
||||
|
||||
# define the sfml-audio target
|
||||
if(NOT ANDROID)
|
||||
sfml_add_library(sfml-audio
|
||||
SOURCES ${SRC}
|
||||
DEPENDS sfml-system
|
||||
EXTERNAL_LIBS ${OPENAL_LIBRARY} ${SNDFILE_LIBRARY})
|
||||
else()
|
||||
sfml_add_library(sfml-audio
|
||||
SOURCES ${SRC}
|
||||
DEPENDS sfml-system sfml-window
|
||||
EXTERNAL_LIBS ${AUDIO_EXT_LIBS})
|
||||
endif()
|
||||
|
|
|
@ -26,12 +26,12 @@
|
|||
// Headers
|
||||
////////////////////////////////////////////////////////////
|
||||
#include <SFML/Audio/SoundFile.hpp>
|
||||
#ifdef SFML_SYSTEM_ANDROID
|
||||
#include <SFML/Window/Android/Activity.hpp>
|
||||
#include <SFML/System/Lock.hpp>
|
||||
#endif
|
||||
#include <SFML/System/InputStream.hpp>
|
||||
#include <SFML/System/Err.hpp>
|
||||
#ifdef SFML_SYSTEM_ANDROID
|
||||
#include <SFML/System/Lock.hpp>
|
||||
#include <SFML/Main/activity.hpp>
|
||||
#endif
|
||||
#include <cstring>
|
||||
#include <cctype>
|
||||
|
||||
|
@ -118,7 +118,7 @@ bool SoundFile::openRead(const std::string& filename)
|
|||
|
||||
#else
|
||||
|
||||
priv::ActivityStates* states = priv::getActivityStates(NULL);
|
||||
priv::ActivityStates* states = priv::getActivity(NULL);
|
||||
Lock lock(states->mutex);
|
||||
|
||||
// Open the file
|
||||
|
|
|
@ -26,6 +26,9 @@ elseif(SFML_OS_MACOSX)
|
|||
elseif(IOS)
|
||||
set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "${PROJECT_SOURCE_DIR}/extlibs/headers")
|
||||
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "${PROJECT_SOURCE_DIR}/extlibs/libs-ios/")
|
||||
elseif(ANDROID)
|
||||
set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "${PROJECT_SOURCE_DIR}/extlibs/android/extlibs/include")
|
||||
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "${PROJECT_SOURCE_DIR}/extlibs/android/extlibs/lib/${ANDROID_ABI}")
|
||||
endif()
|
||||
|
||||
# add the SFML sources path
|
||||
|
@ -40,9 +43,11 @@ set(LIBRARY_OUTPUT_PATH "${PROJECT_BINARY_DIR}/lib")
|
|||
# add the modules subdirectories
|
||||
add_subdirectory(System)
|
||||
add_subdirectory(Window)
|
||||
add_subdirectory(Network)
|
||||
add_subdirectory(Graphics)
|
||||
if(NOT SFML_OS_IOS)
|
||||
add_subdirectory(Audio)
|
||||
if(SFML_OS_WINDOWS OR SFML_OS_ANDROID OR SFML_OS_IOS)
|
||||
add_subdirectory(Main)
|
||||
endif()
|
||||
add_subdirectory(Main)
|
||||
add_subdirectory(Network)
|
||||
add_subdirectory(Graphics)
|
||||
if(NOT SFML_OS_IOS OR NOT (SFML_OS_ANDROID AND ${ANDROID_ABI} MATCHES "mips"))
|
||||
add_subdirectory(Audio)
|
||||
endif()
|
||||
|
|
|
@ -1,38 +0,0 @@
|
|||
LOCAL_PATH := $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE := sfml-graphics
|
||||
|
||||
LOCAL_SRC_FILES := Color.cpp
|
||||
LOCAL_SRC_FILES += GLCheck.cpp
|
||||
LOCAL_SRC_FILES += GLExtensions.cpp
|
||||
LOCAL_SRC_FILES += Image.cpp
|
||||
LOCAL_SRC_FILES += ImageLoader.cpp
|
||||
LOCAL_SRC_FILES += RenderStates.cpp
|
||||
LOCAL_SRC_FILES += RenderTexture.cpp
|
||||
LOCAL_SRC_FILES += RenderTarget.cpp
|
||||
LOCAL_SRC_FILES += RenderWindow.cpp
|
||||
LOCAL_SRC_FILES += Shader.cpp
|
||||
LOCAL_SRC_FILES += Texture.cpp
|
||||
LOCAL_SRC_FILES += TextureSaver.cpp
|
||||
LOCAL_SRC_FILES += Transform.cpp
|
||||
LOCAL_SRC_FILES += Transformable.cpp
|
||||
LOCAL_SRC_FILES += View.cpp
|
||||
LOCAL_SRC_FILES += Vertex.cpp
|
||||
LOCAL_SRC_FILES += Shape.cpp
|
||||
LOCAL_SRC_FILES += CircleShape.cpp
|
||||
LOCAL_SRC_FILES += RectangleShape.cpp
|
||||
LOCAL_SRC_FILES += ConvexShape.cpp
|
||||
LOCAL_SRC_FILES += Sprite.cpp
|
||||
LOCAL_SRC_FILES += Font.cpp
|
||||
LOCAL_SRC_FILES += Text.cpp
|
||||
LOCAL_SRC_FILES += VertexArray.cpp
|
||||
LOCAL_SRC_FILES += RenderTextureImpl.cpp
|
||||
LOCAL_SRC_FILES += RenderTextureImplFBO.cpp
|
||||
LOCAL_SRC_FILES += RenderTextureImplDefault.cpp
|
||||
|
||||
LOCAL_CPPFLAGS := -DGL_GLEXT_PROTOTYPES -DSFML_OPENGL_ES
|
||||
|
||||
include $(BUILD_STATIC_LIBRARY)
|
||||
|
||||
$(call import-module,extlibs)
|
|
@ -127,7 +127,13 @@ if(IOS)
|
|||
find_package(JPEG REQUIRED)
|
||||
find_package(Freetype REQUIRED)
|
||||
set(GRAPHICS_EXT_INCLUDE_PATHS ${FREETYPE_INCLUDE_DIRS} ${JPEG_INCLUDE_DIR})
|
||||
set(GRAPHICS_EXT_LIBS "-framework OpenGLES ${FREETYPE_LIBRARY} ${JPEG_LIBRARY}")
|
||||
set(GRAPHICS_EXT_LIBS "-framework OpenGLES ${FREETYPE_LIBRARY} ${JPEG_LIBRARY}")
|
||||
elseif(ANDROID)
|
||||
find_host_package(JPEG REQUIRED)
|
||||
find_host_package(Freetype REQUIRED)
|
||||
set(GRAPHICS_EXT_INCLUDE_PATHS ${FREETYPE_INCLUDE_DIRS} ${JPEG_INCLUDE_DIR})
|
||||
set(GRAPHICS_EXT_LIBS -lz ${FREETYPE_LIBRARY} ${JPEG_LIBRARY})
|
||||
add_definitions(-DGL_GLEXT_PROTOTYPES)
|
||||
endif()
|
||||
|
||||
# add include paths of external libraries
|
||||
|
|
|
@ -27,12 +27,12 @@
|
|||
////////////////////////////////////////////////////////////
|
||||
#include <SFML/Graphics/Font.hpp>
|
||||
#include <SFML/Graphics/GLCheck.hpp>
|
||||
#ifdef SFML_SYSTEM_ANDROID
|
||||
#include <SFML/Window/Android/Activity.hpp>
|
||||
#include <SFML/System/Lock.hpp>
|
||||
#endif
|
||||
#include <SFML/System/InputStream.hpp>
|
||||
#include <SFML/System/Err.hpp>
|
||||
#ifdef SFML_SYSTEM_ANDROID
|
||||
#include <SFML/System/Lock.hpp>
|
||||
#include <SFML/Main/activity.hpp>
|
||||
#endif
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include FT_GLYPH_H
|
||||
|
@ -149,7 +149,7 @@ bool Font::loadFromFile(const std::string& filename)
|
|||
|
||||
#else
|
||||
|
||||
priv::ActivityStates* states = priv::getActivityStates(NULL);
|
||||
priv::ActivityStates* states = priv::getActivity(NULL);
|
||||
Lock lock(states->mutex);
|
||||
|
||||
// Open the file
|
||||
|
|
|
@ -27,11 +27,11 @@
|
|||
////////////////////////////////////////////////////////////
|
||||
#include <SFML/Graphics/Image.hpp>
|
||||
#include <SFML/Graphics/ImageLoader.hpp>
|
||||
#include <SFML/System/Err.hpp>
|
||||
#ifdef SFML_SYSTEM_ANDROID
|
||||
#include <SFML/Window/Android/Activity.hpp>
|
||||
#include <SFML/System/Lock.hpp>
|
||||
#include <SFML/Main/activity.hpp>
|
||||
#endif
|
||||
#include <SFML/System/Err.hpp>
|
||||
#include <algorithm>
|
||||
#include <cstring>
|
||||
|
||||
|
@ -112,7 +112,7 @@ bool Image::loadFromFile(const std::string& filename)
|
|||
|
||||
#else
|
||||
|
||||
priv::ActivityStates* states = priv::getActivityStates(NULL);
|
||||
priv::ActivityStates* states = priv::getActivity(NULL);
|
||||
Lock lock(states->mutex);
|
||||
|
||||
// Open the file
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
LOCAL_PATH := $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE := sfml-main
|
||||
LOCAL_SRC_FILES := SFML_Main.cpp
|
||||
|
||||
include $(BUILD_STATIC_LIBRARY)
|
|
@ -14,22 +14,17 @@ else()
|
|||
endif()
|
||||
source_group("" FILES ${SRC})
|
||||
|
||||
if(NOT ANDROID)
|
||||
# define the sfml-main target
|
||||
add_library(sfml-main STATIC ${SRC})
|
||||
# define the sfml-main target
|
||||
add_library(sfml-main STATIC ${SRC})
|
||||
|
||||
# set the debug suffix
|
||||
set_target_properties(sfml-main PROPERTIES DEBUG_POSTFIX -d)
|
||||
# set the debug suffix
|
||||
set_target_properties(sfml-main PROPERTIES DEBUG_POSTFIX -d)
|
||||
|
||||
# insert the major version number in the output filename
|
||||
set_target_properties(sfml-main PROPERTIES OUTPUT_NAME "sfml-main")
|
||||
# insert the major version number in the output filename
|
||||
set_target_properties(sfml-main PROPERTIES OUTPUT_NAME "sfml-main")
|
||||
|
||||
# set the target's folder (for IDEs that support it, e.g. Visual Studio)
|
||||
set_target_properties(sfml-main PROPERTIES FOLDER "SFML")
|
||||
# set the target's folder (for IDEs that support it, e.g. Visual Studio)
|
||||
set_target_properties(sfml-main PROPERTIES FOLDER "SFML")
|
||||
|
||||
# setup the install rule
|
||||
install(TARGETS sfml-main ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT devel)
|
||||
else()
|
||||
# define the sfml-main target
|
||||
sfml_add_library(sfml-main SOURCES ${SRC} DEPENDS sfml-window sfml-system)
|
||||
endif()
|
||||
# setup the install rule
|
||||
install(TARGETS sfml-main ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT devel)
|
||||
|
|
|
@ -27,15 +27,15 @@
|
|||
|
||||
#ifdef SFML_SYSTEM_ANDROID
|
||||
|
||||
#include <SFML/Window/Android/Activity.hpp>
|
||||
#include <SFML/Window/EGLCheck.hpp>
|
||||
#include <SFML/Window/Keyboard.hpp>
|
||||
#include <SFML/System/Sleep.hpp>
|
||||
#include <SFML/System/Thread.hpp>
|
||||
#include <SFML/System/Lock.hpp>
|
||||
#include <SFML/Main/activity.hpp>
|
||||
|
||||
|
||||
extern int main(int argc, char *argv[]);
|
||||
JavaVM* javaVM;
|
||||
|
||||
|
||||
namespace sf
|
||||
{
|
||||
|
@ -292,16 +292,6 @@ void processSensorEvents(ActivityStates* states)
|
|||
}
|
||||
}
|
||||
|
||||
ActivityStates* getActivityStates(ActivityStates* initializedStates)
|
||||
{
|
||||
static ActivityStates* states = NULL;
|
||||
|
||||
if (!states)
|
||||
states = initializedStates;
|
||||
|
||||
return states;
|
||||
}
|
||||
|
||||
ActivityStates* retrieveStates(ANativeActivity* activity)
|
||||
{
|
||||
// Hide the ugly cast we find in each callback function
|
||||
|
@ -578,9 +568,6 @@ static void onLowMemory(ANativeActivity* activity)
|
|||
|
||||
void ANativeActivity_onCreate(ANativeActivity* activity, void* savedState, size_t savedStateSize)
|
||||
{
|
||||
// Feed OpenAL-Soft's javaVM to make so he can function
|
||||
javaVM = activity->vm;
|
||||
|
||||
// Create an activity states (will keep us in the know, about events we care)
|
||||
sf::priv::ActivityStates* states = NULL;
|
||||
states = new sf::priv::ActivityStates;
|
||||
|
@ -610,7 +597,7 @@ void ANativeActivity_onCreate(ANativeActivity* activity, void* savedState, size_
|
|||
states->terminated = false;
|
||||
|
||||
// Share it across the SFML modules
|
||||
sf::priv::getActivityStates(states);
|
||||
sf::priv::getActivity(states);
|
||||
|
||||
// These functions will update the activity states and therefore, will allow
|
||||
// SFML to be kept in the know
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
LOCAL_PATH := $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE := sfml-network
|
||||
|
||||
LOCAL_SRC_FILES := Ftp.cpp
|
||||
LOCAL_SRC_FILES += Http.cpp
|
||||
LOCAL_SRC_FILES += IpAddress.cpp
|
||||
LOCAL_SRC_FILES += Packet.cpp
|
||||
LOCAL_SRC_FILES += Socket.cpp
|
||||
LOCAL_SRC_FILES += SocketSelector.cpp
|
||||
LOCAL_SRC_FILES += TcpListener.cpp
|
||||
LOCAL_SRC_FILES += TcpSocket.cpp
|
||||
LOCAL_SRC_FILES += UdpSocket.cpp
|
||||
LOCAL_SRC_FILES += Unix/SocketImpl.cpp
|
||||
|
||||
include $(BUILD_STATIC_LIBRARY)
|
|
@ -1,21 +0,0 @@
|
|||
LOCAL_PATH := $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE := sfml-system
|
||||
|
||||
LOCAL_SRC_FILES := Clock.cpp
|
||||
LOCAL_SRC_FILES += Err.cpp
|
||||
LOCAL_SRC_FILES += Lock.cpp
|
||||
LOCAL_SRC_FILES += Mutex.cpp
|
||||
LOCAL_SRC_FILES += Sleep.cpp
|
||||
LOCAL_SRC_FILES += String.cpp
|
||||
LOCAL_SRC_FILES += Thread.cpp
|
||||
LOCAL_SRC_FILES += ThreadLocal.cpp
|
||||
LOCAL_SRC_FILES += Time.cpp
|
||||
LOCAL_SRC_FILES += Unix/ClockImpl.cpp
|
||||
LOCAL_SRC_FILES += Unix/MutexImpl.cpp
|
||||
LOCAL_SRC_FILES += Unix/SleepImpl.cpp
|
||||
LOCAL_SRC_FILES += Unix/ThreadImpl.cpp
|
||||
LOCAL_SRC_FILES += Unix/ThreadLocalImpl.cpp
|
||||
|
||||
include $(BUILD_STATIC_LIBRARY)
|
|
@ -70,8 +70,8 @@ else()
|
|||
endif()
|
||||
|
||||
# build the list of external libraries to link
|
||||
set(SYSTEM_EXT_LIBS)
|
||||
if(SFML_OS_LINUX OR SFML_OS_FREEBSD OR SFML_OS_MACOSX)
|
||||
set(SYSTEM_EXT_LIBS)
|
||||
if(SFML_OS_LINUX OR SFML_OS_FREEBSD OR SFML_OS_MACOSX)
|
||||
set(SYSTEM_EXT_LIBS ${SYSTEM_EXT_LIBS} pthread)
|
||||
endif()
|
||||
if(SFML_OS_LINUX)
|
||||
|
@ -81,6 +81,11 @@ if(SFML_OS_WINDOWS)
|
|||
set(SYSTEM_EXT_LIBS ${SYSTEM_EXT_LIBS} winmm)
|
||||
endif()
|
||||
|
||||
# pthread is implicitly linked by the NDK
|
||||
if(ANDROID)
|
||||
set(SYSTEM_EXT_LIBS "")
|
||||
endif()
|
||||
|
||||
# define the sfml-system target
|
||||
sfml_add_library(sfml-system
|
||||
SOURCES ${SRC} ${PLATFORM_SRC}
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
LOCAL_PATH := $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE := sfml-window
|
||||
|
||||
LOCAL_SRC_FILES := Context.cpp
|
||||
LOCAL_SRC_FILES += GlContext.cpp
|
||||
LOCAL_SRC_FILES += GlResource.cpp
|
||||
LOCAL_SRC_FILES += Joystick.cpp
|
||||
LOCAL_SRC_FILES += JoystickManager.cpp
|
||||
LOCAL_SRC_FILES += Keyboard.cpp
|
||||
LOCAL_SRC_FILES += Mouse.cpp
|
||||
LOCAL_SRC_FILES += VideoMode.cpp
|
||||
LOCAL_SRC_FILES += Window.cpp
|
||||
LOCAL_SRC_FILES += WindowImpl.cpp
|
||||
LOCAL_SRC_FILES += EGLCheck.cpp
|
||||
LOCAL_SRC_FILES += Android/WindowImplAndroid.cpp
|
||||
LOCAL_SRC_FILES += Android/EglContext.cpp
|
||||
LOCAL_SRC_FILES += Android/VideoModeImpl.cpp
|
||||
LOCAL_SRC_FILES += Android/InputImpl.cpp
|
||||
LOCAL_SRC_FILES += Android/JoystickImpl.cpp
|
||||
|
||||
include $(BUILD_STATIC_LIBRARY)
|
41
src/SFML/Window/Android/Activity.cpp
Normal file
41
src/SFML/Window/Android/Activity.cpp
Normal file
|
@ -0,0 +1,41 @@
|
|||
////////////////////////////////////////////////////////////
|
||||
//
|
||||
// SFML - Simple and Fast Multimedia Library
|
||||
// Copyright (C) 2013 Jonathan De Wachter (dewachter.jonathan@gmail.com)
|
||||
//
|
||||
// This software is provided 'as-is', without any express or implied warranty.
|
||||
// In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
//
|
||||
// Permission is granted to anyone to use this software for any purpose,
|
||||
// including commercial applications, and to alter it and redistribute it freely,
|
||||
// subject to the following restrictions:
|
||||
//
|
||||
// 1. The origin of this software must not be misrepresented;
|
||||
// you must not claim that you wrote the original software.
|
||||
// If you use this software in a product, an acknowledgment
|
||||
// in the product documentation would be appreciated but is not required.
|
||||
//
|
||||
// 2. Altered source versions must be plainly marked as such,
|
||||
// and must not be misrepresented as being the original software.
|
||||
//
|
||||
// 3. This notice may not be removed or altered from any source distribution.
|
||||
//
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
#include <SFML/Window/Android/Activity.hpp>
|
||||
|
||||
namespace sf
|
||||
{
|
||||
namespace priv
|
||||
{
|
||||
ActivityStates* getActivity(ActivityStates* initializedStates)
|
||||
{
|
||||
static ActivityStates* states = NULL;
|
||||
|
||||
if (!states)
|
||||
states = initializedStates;
|
||||
|
||||
return states;
|
||||
}
|
||||
}
|
||||
}
|
78
src/SFML/Window/Android/Activity.hpp
Normal file
78
src/SFML/Window/Android/Activity.hpp
Normal file
|
@ -0,0 +1,78 @@
|
|||
////////////////////////////////////////////////////////////
|
||||
//
|
||||
// SFML - Simple and Fast Multimedia Library
|
||||
// Copyright (C) 2013 Jonathan De Wachter (dewachter.jonathan@gmail.com)
|
||||
//
|
||||
// This software is provided 'as-is', without any express or implied warranty.
|
||||
// In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
//
|
||||
// Permission is granted to anyone to use this software for any purpose,
|
||||
// including commercial applications, and to alter it and redistribute it freely,
|
||||
// subject to the following restrictions:
|
||||
//
|
||||
// 1. The origin of this software must not be misrepresented;
|
||||
// you must not claim that you wrote the original software.
|
||||
// If you use this software in a product, an acknowledgment
|
||||
// in the product documentation would be appreciated but is not required.
|
||||
//
|
||||
// 2. Altered source versions must be plainly marked as such,
|
||||
// and must not be misrepresented as being the original software.
|
||||
//
|
||||
// 3. This notice may not be removed or altered from any source distribution.
|
||||
//
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef SFML_ACTIVITY_HPP
|
||||
#define SFML_ACTIVITY_HPP
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
// Headers
|
||||
////////////////////////////////////////////////////////////
|
||||
#include <SFML/Window/Event.hpp>
|
||||
#include <SFML/System/Mutex.hpp>
|
||||
#include <android/native_activity.h>
|
||||
#include <android/configuration.h>
|
||||
#include <android/sensor.h>
|
||||
#include <vector>
|
||||
#include <EGL/egl.h>
|
||||
|
||||
namespace sf
|
||||
{
|
||||
namespace priv
|
||||
{
|
||||
struct ActivityStates
|
||||
{
|
||||
ANativeActivity* activity;
|
||||
ANativeWindow* window;
|
||||
|
||||
ALooper* looper;
|
||||
AInputQueue* inputQueue;
|
||||
AConfiguration* config;
|
||||
|
||||
ASensorManager* sensorManager;
|
||||
const ASensor* accelerometerSensor;
|
||||
ASensorEventQueue* sensorEventQueue;
|
||||
|
||||
EGLDisplay display;
|
||||
|
||||
void* savedState;
|
||||
size_t savedStateSize;
|
||||
|
||||
sf::Mutex mutex;
|
||||
|
||||
std::vector<sf::Event> pendingEvents;
|
||||
|
||||
bool mainOver;
|
||||
|
||||
bool initialized;
|
||||
bool terminated;
|
||||
|
||||
bool updated;
|
||||
};
|
||||
|
||||
SFML_WINDOW_API ActivityStates* getActivity(ActivityStates* initializedStates=NULL);
|
||||
} // namespace priv
|
||||
} // namespace sf
|
||||
|
||||
|
||||
#endif // SFML_ACTIVITY_HPP
|
|
@ -27,12 +27,12 @@
|
|||
// Headers
|
||||
////////////////////////////////////////////////////////////
|
||||
#include <SFML/Window/Android/EglContext.hpp>
|
||||
#include <SFML/Window/Android/Activity.hpp>
|
||||
#include <SFML/OpenGL.hpp>
|
||||
#include <SFML/System/Err.hpp>
|
||||
#include <SFML/System/Sleep.hpp>
|
||||
#include <SFML/System/Mutex.hpp>
|
||||
#include <SFML/System/Lock.hpp>
|
||||
#include <SFML/Main/activity.hpp>
|
||||
|
||||
#include <android/native_window.h>
|
||||
|
||||
|
@ -47,7 +47,7 @@ m_context (EGL_NO_CONTEXT),
|
|||
m_surface (EGL_NO_SURFACE)
|
||||
{
|
||||
// Get the activity states and protect it from concurent access
|
||||
ActivityStates* states = getActivityStates(NULL);
|
||||
ActivityStates* states = getActivity(NULL);
|
||||
sf::Lock lock(states->mutex);
|
||||
|
||||
// Get the intialized EGL display
|
||||
|
@ -84,7 +84,7 @@ m_context (EGL_NO_CONTEXT),
|
|||
m_surface (EGL_NO_SURFACE)
|
||||
{
|
||||
// Get the activity states and protect it from concurent access
|
||||
ActivityStates* states = getActivityStates(NULL);
|
||||
ActivityStates* states = getActivity(NULL);
|
||||
sf::Lock lock(states->mutex);
|
||||
|
||||
// Get the intialized EGL display
|
||||
|
|
|
@ -26,8 +26,8 @@
|
|||
// Headers
|
||||
////////////////////////////////////////////////////////////
|
||||
#include <SFML/Window/Android/InputImpl.hpp>
|
||||
#include <SFML/Window/Android/Activity.hpp>
|
||||
#include <SFML/System/Lock.hpp>
|
||||
#include <SFML/Main/activity.hpp>
|
||||
#include <jni.h>
|
||||
|
||||
|
||||
|
@ -47,7 +47,7 @@ void InputImpl::setVirtualKeyboardVisible(bool visible)
|
|||
{
|
||||
// TODO: Check if the window is active
|
||||
|
||||
ActivityStates* states = getActivityStates(NULL);
|
||||
ActivityStates* states = getActivity(NULL);
|
||||
sf::Lock lock(states->mutex);
|
||||
|
||||
jint lResult;
|
||||
|
|
|
@ -26,11 +26,10 @@
|
|||
// Headers
|
||||
////////////////////////////////////////////////////////////
|
||||
#include <SFML/Window/VideoModeImpl.hpp>
|
||||
#include <SFML/Window/Android/Activity.hpp>
|
||||
#include <SFML/System/Vector2.hpp>
|
||||
#include <SFML/System/Sleep.hpp>
|
||||
#include <SFML/System/Lock.hpp>
|
||||
#include <SFML/Main/activity.hpp>
|
||||
|
||||
|
||||
namespace sf
|
||||
{
|
||||
|
@ -53,7 +52,7 @@ std::vector<VideoMode> VideoModeImpl::getFullscreenModes()
|
|||
VideoMode VideoModeImpl::getDesktopMode()
|
||||
{
|
||||
// Get the activity states
|
||||
priv::ActivityStates* states = priv::getActivityStates(NULL);
|
||||
priv::ActivityStates* states = priv::getActivity(NULL);
|
||||
Lock lock(states->mutex);
|
||||
|
||||
// Wait for a window if there's none
|
||||
|
|
|
@ -29,12 +29,10 @@
|
|||
#include <SFML/Window/WindowStyle.hpp> // important to be included first (conflict with None)
|
||||
#include <SFML/Window/Android/WindowImplAndroid.hpp>
|
||||
#include <SFML/Window/Event.hpp>
|
||||
#include <SFML/Window/Android/Activity.hpp>
|
||||
#include <SFML/System/Lock.hpp>
|
||||
#include <SFML/Main/activity.hpp>
|
||||
|
||||
|
||||
#include <android/log.h>
|
||||
#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "sfml_app", __VA_ARGS__))
|
||||
////////////////////////////////////////////////////////////
|
||||
// Private data
|
||||
////////////////////////////////////////////////////////////
|
||||
|
@ -72,7 +70,7 @@ WindowHandle WindowImplAndroid::getSystemHandle() const
|
|||
////////////////////////////////////////////////////////////
|
||||
void WindowImplAndroid::processEvents()
|
||||
{
|
||||
ActivityStates* states = getActivityStates(NULL);
|
||||
ActivityStates* states = getActivity(NULL);
|
||||
sf::Lock lock(states->mutex);
|
||||
|
||||
int ident, events;
|
||||
|
|
|
@ -141,22 +141,24 @@ elseif(ANDROID)
|
|||
set(PLATFORM_SRC
|
||||
${SRCROOT}/Android/WindowImplAndroid.hpp
|
||||
${SRCROOT}/Android/WindowImplAndroid.cpp
|
||||
${SRCROOT}/Android/EGLContext.hpp
|
||||
${SRCROOT}/Android/EGLContext.cpp
|
||||
${SRCROOT}/Android/VideoModeImpl.hpp
|
||||
${SRCROOT}/Android/EglContext.hpp
|
||||
${SRCROOT}/Android/EglContext.cpp
|
||||
#${SRCROOT}/Android/VideoModeImpl.hpp
|
||||
${SRCROOT}/Android/VideoModeImpl.cpp
|
||||
${SRCROOT}/Android/InputImpl.hpp
|
||||
${SRCROOT}/Android/InputImpl.cpp
|
||||
${SRCROOT}/Android/JoystickImpl.hpp
|
||||
${SRCROOT}/Android/JoystickImpl.cpp)
|
||||
${SRCROOT}/Android/JoystickImpl.cpp
|
||||
${SRCROOT}/Android/Activity.hpp
|
||||
${SRCROOT}/Android/Activity.cpp)
|
||||
source_group("android" FILES ${PLATFORM_SRC})
|
||||
endif()
|
||||
|
||||
# find external libraries
|
||||
if(NOT OPENGL_ES)
|
||||
find_package(OpenGL REQUIRED)
|
||||
include_directories(${OPENGL_INCLUDE_DIR})
|
||||
if(SFML_OS_LINUX)
|
||||
include_directories(${OPENGL_INCLUDE_DIR})
|
||||
if(SFML_OS_LINUX AND NOT SFML_OS_ANDROID)
|
||||
find_package(X11 REQUIRED)
|
||||
if(NOT X11_Xrandr_FOUND)
|
||||
message(FATAL_ERROR "Xrandr library not found")
|
||||
|
@ -181,9 +183,11 @@ elseif(SFML_OS_LINUX OR SFML_OS_FREEBSD)
|
|||
set(WINDOW_EXT_LIBS ${WINDOW_EXT_LIBS} usbhid)
|
||||
endif()
|
||||
elseif(SFML_OS_MACOSX)
|
||||
set(WINDOW_EXT_LIBS ${WINDOW_EXT_LIBS} ${OPENGL_gl_LIBRARY} "-framework Foundation -framework AppKit -framework IOKit -framework Carbon")
|
||||
elseif(SFML_OS_IOS)
|
||||
set(WINDOW_EXT_LIBS ${WINDOW_EXT_LIBS} "-framework OpenGLES -framework Foundation -framework UIKit -framework CoreGraphics -framework QuartzCore -framework CoreMotion")
|
||||
set(WINDOW_EXT_LIBS ${WINDOW_EXT_LIBS} ${OPENGL_gl_LIBRARY} "-framework Foundation -framework AppKit -framework IOKit -framework Carbon")
|
||||
elseif(SFML_OS_IOS)
|
||||
set(WINDOW_EXT_LIBS ${WINDOW_EXT_LIBS} "-framework OpenGLES -framework Foundation -framework UIKit -framework CoreGraphics -framework QuartzCore -framework CoreMotion")
|
||||
elseif(SFML_OS_ANDROID)
|
||||
set(WINDOW_EXT_LIBS ${WINDOW_EXT_LIBS} "-landroid -llog -lEGL -lGLESv1_CM")
|
||||
endif()
|
||||
|
||||
# define the sfml-window target
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#include <SFML/Window/Android/EglContext.hpp>
|
||||
#endif
|
||||
|
||||
|
||||
namespace
|
||||
{
|
||||
const sf::Window* fullscreenWindow = NULL;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue