build for android cmake
This commit is contained in:
parent
9e6133bb09
commit
95260a227f
|
|
@ -1,54 +1,89 @@
|
|||
if (${PLATFORM} MATCHES "Desktop")
|
||||
set(PLATFORM_CPP "PLATFORM_DESKTOP")
|
||||
|
||||
if (APPLE)
|
||||
# Need to force OpenGL 3.3 on OS X
|
||||
# See: https://github.com/raysan5/raylib/issues/341
|
||||
set(GRAPHICS "GRAPHICS_API_OPENGL_33")
|
||||
find_library(OPENGL_LIBRARY OpenGL)
|
||||
set(LIBS_PRIVATE ${OPENGL_LIBRARY})
|
||||
link_libraries("${LIBS_PRIVATE}")
|
||||
if (NOT CMAKE_SYSTEM STRLESS "Darwin-18.0.0")
|
||||
add_definitions(-DGL_SILENCE_DEPRECATION)
|
||||
MESSAGE(AUTHOR_WARNING "OpenGL is deprecated starting with macOS 10.14 (Mojave)!")
|
||||
endif ()
|
||||
elseif (WIN32)
|
||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
||||
find_package(OpenGL QUIET)
|
||||
set(LIBS_PRIVATE ${OPENGL_LIBRARIES} winmm)
|
||||
else ()
|
||||
find_library(pthread NAMES pthread)
|
||||
find_package(OpenGL QUIET)
|
||||
if ("${OPENGL_LIBRARIES}" STREQUAL "")
|
||||
set(OPENGL_LIBRARIES "GL")
|
||||
endif ()
|
||||
|
||||
if ("${CMAKE_SYSTEM_NAME}" MATCHES "(Net|Open)BSD")
|
||||
find_library(OSS_LIBRARY ossaudio)
|
||||
endif ()
|
||||
|
||||
set(LIBS_PRIVATE m pthread ${OPENGL_LIBRARIES} ${OSS_LIBRARY})
|
||||
if(WIN32)
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "WindowsStore")
|
||||
add_definitions(-DPLATFORM_UNIVERSAL_WINDOWS)
|
||||
set(PLATFORM_UNIVERSAL_WINDOWS TRUE CACHE INTERNAL "Target platform: Windows Store")
|
||||
message("Target platform: Universal Windows. SDK Version: " ${CMAKE_SYSTEM_VERSION})
|
||||
else()
|
||||
set(PLATFORM_WIN32 TRUE CACHE INTERNAL "Target platform: Win32") #WIN32 is a variable, so we cannot use string "WIN32"
|
||||
endif()
|
||||
else()
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "Android")
|
||||
set(PLATFORM_ANDROID TRUE CACHE INTERNAL "Target platform: Android")
|
||||
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
||||
set(PLATFORM_LINUX TRUE CACHE INTERNAL "Target platform: Linux")
|
||||
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
|
||||
if(IOS)
|
||||
set(PLATFORM_IOS TRUE CACHE INTERNAL "Target platform: iOS")
|
||||
else()
|
||||
set(PLATFORM_MACOS TRUE CACHE INTERNAL "Target platform: MacOS")
|
||||
endif()
|
||||
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "iOS")
|
||||
set(PLATFORM_IOS TRUE CACHE INTERNAL "Target platform: iOS")
|
||||
endif()
|
||||
endif(WIN32)
|
||||
|
||||
if(PLATFORM_MACOS OR PLATFORM_IOS OR PLATFORM_TVOS)
|
||||
set(PLATFORM_APPLE TRUE CACHE INTERNAL "Apple platform (macOS, iOS, or tvOS)")
|
||||
endif()
|
||||
|
||||
if (PLATFORM_MACOS OR PLATFORM_LINUX OR PLATFORM_WIN32)
|
||||
set(PLATFORM_DESKTOP TRUE "Desktop platform (Windows, Linux, or macOS)")
|
||||
endif()
|
||||
|
||||
if (PLATFORM_MACOS OR PLATFORM_IOS) # iOS too?
|
||||
if (PLATFORM_MACOS)
|
||||
add_definitions(-DPLATFORM_DESKTOP -DPLATFORM_APPLE -DGL_SILENCE_DEPRECATION)
|
||||
set(PLATFORM_CPP "PLATFORM_MACOS")
|
||||
else()
|
||||
add_definitions(-DPLATFORM_IOS)
|
||||
set(PLATFORM_CPP "PLATFORM_IOS")
|
||||
endif()
|
||||
# Need to force OpenGL 3.3 on OS X
|
||||
# See: https://github.com/raysan5/raylib/issues/341
|
||||
set(GRAPHICS "GRAPHICS_API_OPENGL_33")
|
||||
find_library(OPENGL_LIBRARY OpenGL)
|
||||
set(LIBS_PRIVATE ${OPENGL_LIBRARY})
|
||||
link_libraries("${LIBS_PRIVATE}")
|
||||
if (NOT CMAKE_SYSTEM STRLESS "Darwin-18.0.0")
|
||||
add_definitions(-DGL_SILENCE_DEPRECATION)
|
||||
MESSAGE(AUTHOR_WARNING "OpenGL is deprecated starting with macOS 10.14 (Mojave)!")
|
||||
endif ()
|
||||
elseif (PLATFORM_WIN32)
|
||||
add_definitions(-DPLATFORM_WIN32)
|
||||
set(PLATFORM_CPP "PLATFORM_WINDOWS")
|
||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
||||
find_package(OpenGL QUIET)
|
||||
set(LIBS_PRIVATE ${OPENGL_LIBRARIES} winmm)
|
||||
elseif (PLATFORM_LINUX)
|
||||
add_definitions(-DPLATFORM_LINUX)
|
||||
set(PLATFORM_CPP "PLATFORM_LINUX")
|
||||
find_library(pthread NAMES pthread)
|
||||
find_package(OpenGL QUIET)
|
||||
if ("${OPENGL_LIBRARIES}" STREQUAL "")
|
||||
set(OPENGL_LIBRARIES "GL")
|
||||
endif ()
|
||||
|
||||
if ("${CMAKE_SYSTEM_NAME}" MATCHES "(Net|Open)BSD")
|
||||
find_library(OSS_LIBRARY ossaudio)
|
||||
endif ()
|
||||
|
||||
set(LIBS_PRIVATE m pthread ${OPENGL_LIBRARIES} ${OSS_LIBRARY})
|
||||
elseif(PLATFORM_ANDROID)
|
||||
add_definitions(-DPLATFORM_ANDROID)
|
||||
set(PLATFORM_CPP "PLATFORM_ANDROID")
|
||||
set(GRAPHICS "GRAPHICS_API_OPENGL_ES2")
|
||||
set(LIBS_PRIVATE m log android EGL GLESv2 OpenSLES atomic c)
|
||||
include_directories(${ANDROID_NDK}/sources/android/native_app_glue)
|
||||
|
||||
elseif (${PLATFORM} MATCHES "Web")
|
||||
add_definitions(-DPLATFORM_WEB)
|
||||
set(PLATFORM_CPP "PLATFORM_WEB")
|
||||
set(GRAPHICS "GRAPHICS_API_OPENGL_ES2")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s USE_GLFW=3 -s ASSERTIONS=1 --profiling")
|
||||
set(CMAKE_STATIC_LIBRARY_SUFFIX ".a")
|
||||
|
||||
elseif (${PLATFORM} MATCHES "Android")
|
||||
set(PLATFORM_CPP "PLATFORM_ANDROID")
|
||||
set(GRAPHICS "GRAPHICS_API_OPENGL_ES2")
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
add_definitions(-DANDROID -D__ANDROID_API__=21)
|
||||
include_directories(external/android/native_app_glue)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--exclude-libs,libatomic.a -Wl,--build-id -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--warn-shared-textrel -Wl,--fatal-warnings -uANativeActivity_onCreate")
|
||||
|
||||
find_library(OPENGL_LIBRARY OpenGL)
|
||||
set(LIBS_PRIVATE m log android EGL GLESv2 OpenSLES atomic c)
|
||||
|
||||
elseif (${PLATFORM} MATCHES "Raspberry Pi")
|
||||
add_definitions(-DPLATFORM_RPI)
|
||||
set(PLATFORM_CPP "PLATFORM_RPI")
|
||||
set(GRAPHICS "GRAPHICS_API_OPENGL_ES2")
|
||||
|
||||
|
|
@ -79,6 +114,8 @@ elseif (${PLATFORM} MATCHES "DRM")
|
|||
endif ()
|
||||
set(LIBS_PRIVATE ${GLESV2} ${EGL} ${DRM} ${GBM} pthread m dl)
|
||||
|
||||
else()
|
||||
message(FATAL_ERROR "Unsupported platform")
|
||||
endif ()
|
||||
|
||||
if (${OPENGL_VERSION})
|
||||
|
|
@ -103,6 +140,6 @@ endif ()
|
|||
|
||||
set(LIBS_PRIVATE ${LIBS_PRIVATE} ${OPENAL_LIBRARY})
|
||||
|
||||
if (${PLATFORM} MATCHES "Desktop")
|
||||
if (PLATFORM_DESKTOP)
|
||||
set(LIBS_PRIVATE ${LIBS_PRIVATE} glfw)
|
||||
endif ()
|
||||
endif ()
|
||||
|
|
@ -38,9 +38,10 @@ set(raylib_sources
|
|||
utils.c
|
||||
)
|
||||
|
||||
# <root>/cmake/GlfwImport.cmake handles the details around the inclusion of glfw
|
||||
include(GlfwImport)
|
||||
|
||||
if (NOT ANDROID AND NOT IOS)
|
||||
# <root>/cmake/GlfwImport.cmake handles the details around the inclusion of glfw
|
||||
include(GlfwImport)
|
||||
endif()
|
||||
|
||||
if (USE_AUDIO)
|
||||
MESSAGE(STATUS "Audio Backend: miniaudio")
|
||||
|
|
@ -86,16 +87,28 @@ target_link_libraries(raylib "${LIBS_PRIVATE}")
|
|||
# and you will be able to select more build options
|
||||
include(CompileDefinitions)
|
||||
|
||||
# Registering include directories
|
||||
target_include_directories(raylib
|
||||
PUBLIC
|
||||
$<INSTALL_INTERFACE:include>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${OPENGL_INCLUDE_DIR}
|
||||
${OPENAL_INCLUDE_DIR}
|
||||
)
|
||||
if (NOT ANDROID AND NOT IOS)
|
||||
# Registering include directories
|
||||
target_include_directories(raylib
|
||||
PUBLIC
|
||||
$<INSTALL_INTERFACE:include>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${OPENGL_INCLUDE_DIR}
|
||||
${OPENAL_INCLUDE_DIR}
|
||||
)
|
||||
else()
|
||||
# Registering include directories
|
||||
target_include_directories(raylib
|
||||
PUBLIC
|
||||
$<INSTALL_INTERFACE:include>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${OPENAL_INCLUDE_DIR}
|
||||
)
|
||||
endif()
|
||||
|
||||
# Copy the header files to the build directory for convenience
|
||||
file(COPY ${raylib_public_headers} DESTINATION "include")
|
||||
|
|
|
|||
36
src/rcore.c
36
src/rcore.c
|
|
@ -672,24 +672,24 @@ void __stdcall Sleep(unsigned long msTimeout); // Required for: Wai
|
|||
// Module Functions Definition - Window and OpenGL Context Functions
|
||||
//----------------------------------------------------------------------------------
|
||||
#if defined(PLATFORM_ANDROID)
|
||||
// To allow easier porting to android, we allow the user to define a
|
||||
// main function which we call from android_main, defined by ourselves
|
||||
extern int main(int argc, char *argv[]);
|
||||
|
||||
void android_main(struct android_app *app)
|
||||
{
|
||||
char arg0[] = "raylib"; // NOTE: argv[] are mutable
|
||||
CORE.Android.app = app;
|
||||
|
||||
// NOTE: Return codes != 0 are skipped
|
||||
(void)main(1, (char *[]) { arg0, NULL });
|
||||
}
|
||||
|
||||
// NOTE: Add this to header (if apps really need it)
|
||||
struct android_app *GetAndroidApp(void)
|
||||
{
|
||||
return CORE.Android.app;
|
||||
}
|
||||
//// To allow easier porting to android, we allow the user to define a
|
||||
//// main function which we call from android_main, defined by ourselves
|
||||
//extern int main(int argc, char *argv[]);
|
||||
//
|
||||
//void android_main(struct android_app *app)
|
||||
//{
|
||||
// char arg0[] = "raylib"; // NOTE: argv[] are mutable
|
||||
// CORE.Android.app = app;
|
||||
//
|
||||
// // NOTE: Return codes != 0 are skipped
|
||||
// (void)main(1, (char *[]) { arg0, NULL });
|
||||
//}
|
||||
//
|
||||
//// NOTE: Add this to header (if apps really need it)
|
||||
//struct android_app *GetAndroidApp(void)
|
||||
//{
|
||||
// return CORE.Android.app;
|
||||
//}
|
||||
#endif
|
||||
|
||||
// Initialize window and OpenGL context
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user