CMakeLists.txt 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. cmake_minimum_required(VERSION 3.10)
  2. project(retroarch-activity LANGUAGES C CXX)
  3. option(HAVE_NEON "Enable NEON" ON)
  4. option(HAVE_FILE_LOGGER "Enable File Logger" ON)
  5. option(HAVE_OPENGLES3 "Enable OpenGL ES 3" OFF)
  6. # 添加可执行文件或库
  7. add_library(retroarch-activity SHARED
  8. ${CMAKE_SOURCE_DIR}/griffin/griffin.c
  9. ${CMAKE_SOURCE_DIR}/griffin/griffin_cpp.cpp)
  10. # 添加定义
  11. execute_process(
  12. COMMAND git rev-parse --short HEAD
  13. RESULT_VARIABLE GIT_RESULT
  14. OUTPUT_VARIABLE GIT_VERSION
  15. OUTPUT_STRIP_TRAILING_WHITESPACE
  16. )
  17. if (GIT_RESULT EQUAL 0)
  18. target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_GIT_VERSION GIT_VERSION="${GIT_VERSION}")
  19. endif ()
  20. if (${CMAKE_ANDROID_ARCH} STREQUAL "arm")
  21. target_compile_definitions(${PROJECT_NAME} PRIVATE ANDROID_ARM)
  22. set(LOCAL_ARM_MODE "arm")
  23. endif ()
  24. if (${CMAKE_ANDROID_ARCH} STREQUAL "x86")
  25. target_compile_definitions(${PROJECT_NAME} PRIVATE ANDROID_X86 HAVE_SSSE3)
  26. endif ()
  27. if (${CMAKE_ANDROID_ARCH} STREQUAL "x86_64")
  28. target_compile_definitions(${PROJECT_NAME} PRIVATE ANDROID_X64)
  29. endif ()
  30. if (${CMAKE_ANDROID_ARCH} STREQUAL "mips")
  31. target_compile_definitions(${PROJECT_NAME} PRIVATE ANDROID_MIPS __mips__ __MIPSEL__)
  32. endif ()
  33. if (${CMAKE_ANDROID_ARCH_ABI} STREQUAL "armeabi-v7a")
  34. if (HAVE_NEON)
  35. target_compile_definitions(${PROJECT_NAME} PRIVATE __ARM_NEON__ HAVE_NEON)
  36. endif ()
  37. target_compile_definitions(${PROJECT_NAME} PRIVATE ANDROID_ARM_V7)
  38. endif ()
  39. if (${CMAKE_ANDROID_ARCH_ABI} STREQUAL "arm64-v8a")
  40. target_compile_definitions(${PROJECT_NAME} PRIVATE ANDROID_AARCH64)
  41. endif ()
  42. if (HAVE_OPENGLES3 EQUAL 3)
  43. target_link_libraries(${PROJECT_NAME} PRIVATE GLESv3)
  44. target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_OPENGLES3)
  45. else ()
  46. target_link_libraries(${PROJECT_NAME} PRIVATE GLESv2)
  47. target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_OPENGLES2)
  48. endif ()
  49. target_compile_definitions(${PROJECT_NAME} PRIVATE
  50. RARCH_MOBILE
  51. HAVE_GRIFFIN
  52. # HAVE_STB_VORBIS
  53. ANDROID
  54. HAVE_DYNAMIC
  55. HAVE_OPENGL
  56. # HAVE_OVERLAY
  57. HAVE_OPENGLES
  58. # GLSL_DEBUG
  59. HAVE_DYLIB
  60. HAVE_EGL
  61. HAVE_GLSL
  62. # HAVE_MENU
  63. HAVE_CONFIGFILE
  64. HAVE_PATCH
  65. HAVE_DSP_FILTER
  66. HAVE_VIDEO_FILTER
  67. HAVE_SCREENSHOTS
  68. HAVE_REWIND
  69. # HAVE_CHEATS
  70. # HAVE_RGUI
  71. HAVE_ZLIB
  72. HAVE_NO_BUILTINZLIB
  73. HAVE_RPNG
  74. HAVE_RJPEG
  75. HAVE_RBMP
  76. HAVE_RTGA
  77. INLINE=inline
  78. HAVE_THREADS
  79. __LIBRETRO__
  80. HAVE_RSOUND
  81. # HAVE_NETWORKGAMEPAD
  82. # HAVE_NETWORKING
  83. # HAVE_IFINFO
  84. # HAVE_NETPLAYDISCOVERY
  85. RARCH_INTERNAL
  86. HAVE_FILTERS_BUILTIN
  87. # HAVE_MATERIALUI
  88. # HAVE_XMB
  89. # HAVE_OZONE
  90. # HAVE_SHADERPIPELINE
  91. HAVE_LIBRETRODB
  92. # HAVE_STB_FONT
  93. HAVE_IMAGEVIEWER
  94. # HAVE_ONLINE_UPDATER
  95. # HAVE_UPDATE_ASSETS
  96. # HAVE_UPDATE_CORES
  97. # HAVE_UPDATE_CORE_INFO
  98. HAVE_CC_RESAMPLER
  99. HAVE_KEYMAPPER
  100. # HAVE_NETWORKGAMEPAD
  101. HAVE_FLAC
  102. HAVE_DR_FLAC
  103. HAVE_DR_MP3
  104. HAVE_CHD
  105. WANT_SUBCODE
  106. WANT_RAW_DATA_SECTOR
  107. HAVE_RUNAHEAD
  108. ENABLE_HLSL
  109. HAVE_AUDIOMIXER
  110. HAVE_RWAV
  111. # WANT_IFADDRS
  112. HAVE_CORE_INFO_CACHE)
  113. target_compile_definitions(${PROJECT_NAME} PRIVATE
  114. HAVE_7ZIP
  115. _7ZIP_ST
  116. HAVE_SL)
  117. target_compile_definitions(${PROJECT_NAME} PRIVATE
  118. FLAC_PACKAGE_VERSION="retroarch"
  119. HAVE_LROUND
  120. FLAC__HAS_OGG=0)
  121. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -std=gnu99 -pthread -Wno-unused-function -fno-stack-protector -funroll-loops")
  122. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions -fpermissive -std=gnu++11 -fno-rtti -Wno-reorder")
  123. target_link_libraries(${PROJECT_NAME} PRIVATE android EGL log dl)
  124. target_include_directories(${PROJECT_NAME} PRIVATE
  125. libretro-common/include
  126. deps
  127. deps/stb
  128. deps/7zip
  129. deps/libFLAC/include)
  130. target_link_libraries(${PROJECT_NAME} PRIVATE OpenSLES z)
  131. if (SAMOTOZER)
  132. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -fsanitize=$(SANITIZER) -fno-omit-frame-pointer -Wmissing-braces")
  133. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fsanitize=$(SANITIZER) -fno-omit-frame-pointer")
  134. target_link_options(${PROJECT_NAME} PRIVATE -fsanitize=${SANITIZER})
  135. endif ()