amarullz

cmake update

Jul 27th, 2015
365
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
CMake 7.58 KB | None | 0 0
  1. cmake_minimum_required(VERSION 2.8)
  2.  
  3. # Project Config
  4. project(libaroma)
  5. set(CMAKE_BUILD_TYPE Release)
  6.  
  7. # Check Architecture
  8. if(NOT DEFINED ARCHITECTURE)
  9.   execute_process( COMMAND ${CMAKE_C_COMPILER} -dumpmachine OUTPUT_VARIABLE DUMP_MACHINE )
  10.   string(FIND ${DUMP_MACHINE} "-" DUMP_MACHINE_STRIP)
  11.   string(SUBSTRING ${DUMP_MACHINE} 0 ${DUMP_MACHINE_STRIP} ARCHITECTURE)
  12. endif()
  13. message("Architecture       : ${ARCHITECTURE}")
  14.  
  15. # Check Platform
  16. if(NOT DEFINED LIBAROMA_PLATFORM_NAME)
  17.   execute_process( COMMAND ${CMAKE_C_COMPILER} -dumpmachine OUTPUT_VARIABLE DUMP_MACHINE )
  18.   string(FIND ${DUMP_MACHINE} "-" DUMP_MACHINE_STRIP)
  19.   string(SUBSTRING ${DUMP_MACHINE} ${DUMP_MACHINE_STRIP} -1 TEST_PLATFORM)
  20.   string(SUBSTRING ${TEST_PLATFORM} 1 -1 TEST_PLATFORM)
  21.   string(FIND ${TEST_PLATFORM} "-" DUMP_MACHINE_STRIP)
  22.   string(SUBSTRING ${TEST_PLATFORM} 0 ${DUMP_MACHINE_STRIP} LIBAROMA_PLATFORM_NAME)
  23. endif()
  24. if(NOT DEFINED LIBAROMA_PLATFORM_NAME)  
  25.     set(LIBAROMA_PLATFORM_NAME "linux")
  26. endif()
  27. message("Platform           : ${LIBAROMA_PLATFORM_NAME}")
  28.  
  29. # Default link values
  30. if(NOT DEFINED CMAKE_LINK_TYPE)
  31.     set(CMAKE_LINK_TYPE STATIC)
  32. endif()
  33.  
  34. if("${ARCHITECTURE}" STREQUAL "arm")
  35.     if(NOT DEFINED NEON)
  36.         set(NEON true)
  37.     endif()
  38.     if(NOT DEFINED VFPV3)
  39.         set(VFPV3 true)
  40.     endif()
  41.   message("NEON               : ${NEON}")
  42.   message("VFPV3              : ${VFPV3}")
  43. endif()
  44.  
  45. # linkage
  46. if("${CMAKE_LINK_TYPE}" STREQUAL "STATIC")
  47.   message("Linkage            : STATIC")
  48.     set(CMAKE_SKIP_RPATH YES)
  49.     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static")
  50.     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static")
  51. else()
  52.     message("Linkage            : SHARED")
  53.     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
  54.     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
  55. endif()
  56.  
  57. # release&debug flags
  58. set(CMAKE_C_FLAGS_RELEASE "-O3 -ftree-vectorize -fprefetch-loop-arrays -funsafe-math-optimizations")
  59. set(CMAKE_C_FLAGS_DEBUG "-ggdb")
  60. set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
  61. set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
  62.  
  63. # detect NDK
  64. if(ANDROID_NDK)
  65.   message("Toolchain          : ${ANDROID_NDK}")
  66. else()
  67.   message("Toolchain          : ${CMAKE_C_COMPILER}")
  68. endif()
  69.  
  70. # TMP
  71. set(LIBAROMA_CONFIG_DEBUG "5")
  72. set(LIBAROMA_CONFIG_DEBUG_FILE "0")
  73. set(LIBAROMA_CONFIG_DEBUG_MEMORY "0")
  74. set(LIBAROMA_CONFIG_COMPILER_MESSAGE "1")
  75. set(LIBAROMA_CONFIG_SHMEMFB "0")
  76. set(LIBAROMA_CONFIG_SHMEM_PREFIX "/libaromashm-")
  77.  
  78. # common cflags
  79. set(AROMA_CFLAGS "${AROMA_CFLAGS} -save-temps")
  80. set(AROMA_CFLAGS "${AROMA_CFLAGS} -fdata-sections -ffunction-sections -Wl,--gc-sections")
  81. set(AROMA_CFLAGS "${AROMA_CFLAGS} -D_GLIBCXX_DEBUG_PEDANTIC -D_GLIBCXX_DEBUG")
  82. set(AROMA_CFLAGS "${AROMA_CFLAGS} -fPIC -DPIC -Wl,-s -Wall -Wextra -Wshadow -Wno-unused-parameter")
  83. #set(AROMA_CFLAGS "${AROMA_CFLAGS} -Werror")
  84.  
  85. # forced aroma cflags
  86. set(AROMA_CFLAGS "${AROMA_CFLAGS} -DLIBAROMA_CONFIG_DEBUG_TRACE=0")
  87.  
  88. # openmp cflags
  89. # TODO: use custom NDK with (static) openmp support
  90. if (((NOT DEFINED ANDROID_NDK) AND ("${CMAKE_LINK_TYPE}" STREQUAL SHARED)) OR (DEFINED WITH_OPENMP))
  91.     message("OpenMP Support     : ENABLED")
  92.     set(AROMA_CFLAGS "${AROMA_CFLAGS} -DLIBAROMA_CONFIG_OPENMP=1")
  93.     if("${ARCHITECTURE}" STREQUAL "arm")
  94.         set(AROMA_CFLAGS "${AROMA_CFLAGS} -fopenmp")
  95.     elseif("${ARCHITECTURE}" STREQUAL "x86_64")
  96.         set(AROMA_CFLAGS "${AROMA_CFLAGS} -openmp")
  97.     endif()
  98.     set(AROMA_OPENMP true)
  99. else()
  100.     message("OpenMP Support     : DISABLED")
  101.     set(AROMA_OPENMP false)
  102. endif()
  103.  
  104. # AROMA config
  105. set(AROMA_CFLAGS "${AROMA_CFLAGS} -DLIBAROMA_CONFIG_DEBUG=${LIBAROMA_CONFIG_DEBUG}")
  106. set(AROMA_CFLAGS "${AROMA_CFLAGS} -DLIBAROMA_CONFIG_DEBUG_FILE=${LIBAROMA_CONFIG_DEBUG_FILE}")
  107. set(AROMA_CFLAGS "${AROMA_CFLAGS} -DLIBAROMA_CONFIG_DEBUG_MEMORY=${LIBAROMA_CONFIG_DEBUG_MEMORY}")
  108. set(AROMA_CFLAGS "${AROMA_CFLAGS} -DLIBAROMA_CONFIG_COMPILER_MESSAGE=${LIBAROMA_CONFIG_COMPILER_MESSAGE}")
  109. set(AROMA_CFLAGS "${AROMA_CFLAGS} -DLIBAROMA_CONFIG_SHMEMFB=${LIBAROMA_CONFIG_SHMEMFB}")
  110. set(AROMA_CFLAGS "${AROMA_CFLAGS} -DLIBAROMA_CONFIG_SHMEM_PREFIX=\\\"${LIBAROMA_CONFIG_SHMEM_PREFIX}\\\"")
  111.  
  112. # android
  113. if(DEFINED ANDROID)
  114.     message("Android Target     : ENABLED")
  115.     # if we don't use the NDK these flags are not defined by default
  116.     set(AROMA_CFLAGS "${AROMA_CFLAGS} -DANDROID=1 -D__ANDROID__")
  117. else()
  118.   message("Android Target     : DISABLED")
  119. endif()
  120.  
  121. # ARM cflags
  122. if("${ARCHITECTURE}" STREQUAL "arm")
  123.     if(NEON OR VFPV3)
  124.         set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mvectorize-with-neon-quad")
  125.         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mvectorize-with-neon-quad")
  126.     endif()
  127.  
  128.     # NDK has set these flags already
  129.     if(NOT DEFINED ANDROID_NDK)
  130.         # TODO: check if Toolchain ABI is hard or soft
  131.         if(NEON)
  132.             set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfloat-abi=hard -mfpu=neon")
  133.             set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfloat-abi=hard -mfpu=neon")
  134.         elseif(VFPV3)
  135.             set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfloat-abi=hard -mfpu=vfpv3")
  136.             set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfloat-abi=hard -mfpu=vfpv3")
  137.         endif()
  138.     endif()
  139. endif()
  140.  
  141. # sources
  142. file(GLOB AROMA_SRCS
  143.     ${PROJECT_SOURCE_DIR}/src/contrib/platform/${LIBAROMA_PLATFORM_NAME}/*.c
  144.     src/aroma/aroma.c
  145.     src/aroma/version.c
  146.  
  147.     src/aroma/aroma.c
  148.     src/aroma/version.c
  149.     src/aroma/utils/*.c
  150.     src/aroma/debug/*.c
  151.     src/aroma/graph/*.c
  152.     src/aroma/graph/draw/*.c
  153.     src/aroma/graph/engine/*.c
  154.     src/aroma/hid/*.c
  155.     src/aroma/ui/*.c
  156.     src/aroma/controls/*.c
  157.     src/aroma/controls/listitem/*.c
  158. )
  159.  
  160. # includes
  161. include_directories(
  162.     ${PROJECT_SOURCE_DIR}/include
  163.     ${PROJECT_SOURCE_DIR}/src
  164.     ${PROJECT_SOURCE_DIR}/src/contrib/platform/${LIBAROMA_PLATFORM_NAME}/include
  165.     ${PROJECT_SOURCE_DIR}/libs/zlib/src
  166.     ${CMAKE_BINARY_DIR}/libs/zlib
  167.     ${PROJECT_SOURCE_DIR}/libs/freetype/builds
  168.     ${PROJECT_SOURCE_DIR}/libs/freetype/include
  169.     ${PROJECT_SOURCE_DIR}/libs/minzip
  170.     ${PROJECT_SOURCE_DIR}/libs/png
  171.     ${PROJECT_SOURCE_DIR}/libs/jpeg
  172.     ${PROJECT_SOURCE_DIR}/libs/harfbuzz-ng/src
  173.     ${PROJECT_SOURCE_DIR}/libs/harfbuzz-ng/src/hb-ucdn
  174.     ${PROJECT_SOURCE_DIR}/libs/squirrel/include
  175.     ${PROJECT_SOURCE_DIR}/libs/squirrel/squirrel
  176.     ${PROJECT_SOURCE_DIR}/libs/squirrel/sqstdlib
  177. )
  178.  
  179. # aroma
  180. add_library(aroma ${CMAKE_LINK_TYPE} ${AROMA_SRCS})
  181. set_target_properties(aroma PROPERTIES COMPILE_FLAGS ${AROMA_CFLAGS})
  182. add_dependencies(aroma z freetype harfbuzz hbucdn minzip png jpeg squirrel)
  183. target_link_libraries(aroma z freetype harfbuzz hbucdn minzip png jpeg squirrel)
  184.  
  185. # SDL
  186. # TODO: move to platform module
  187. if("${LIBAROMA_PLATFORM_NAME}" STREQUAL "sdl")
  188.     find_package(SDL REQUIRED)
  189.     include_directories(${SDL_INCLUDE_DIR})
  190.     target_link_libraries(aroma ${SDL_LIBRARY})
  191. endif()
  192.  
  193. if(AROMA_OPENMP)
  194.     # we don't have a static version of this
  195.     if(NOT DEFINED ANDROID_NDK)
  196.       target_link_libraries(aroma rt)
  197.     endif()
  198.  
  199.     # if("${ARCHITECTURE}" STREQUAL "x86_64")
  200.         target_link_libraries(aroma gomp)
  201.     # endif()
  202. endif()
  203.  
  204. if(NOT DEFINED ANDROID_NDK)
  205.     # NDK uses a integrated pthreads API
  206.     target_link_libraries(aroma pthread)
  207. endif()
  208.  
  209. # subdirs
  210. add_subdirectory(libs/zlib)
  211. add_subdirectory(libs/freetype)
  212. add_subdirectory(libs/harfbuzz-ng)
  213. add_subdirectory(libs/harfbuzz-ng/src/hb-ucdn)
  214. add_subdirectory(libs/minzip)
  215. add_subdirectory(libs/png)
  216. add_subdirectory(libs/jpeg)
  217. add_subdirectory(libs/squirrel)
  218.  
  219. # aromart
  220. file(GLOB AROMART_SRCS src/aromart/*.c)
  221. add_library(aromart ${CMAKE_LINK_TYPE} ${AROMART_SRCS})
  222. target_link_libraries(aromart aroma)
  223.  
  224. # aromart_test
  225. file(GLOB AROMART_TEST_SRCS examples/rt_test/*.c)
  226. add_executable(aromart_test ${AROMART_TEST_SRCS})
  227. target_link_libraries(aromart_test aromart)
  228.  
  229. message("CFLAGS             : ${CMAKE_C_FLAGS}")
  230. message("CXXFLAGS           : ${CMAKE_CXX_FLAGS}")
Advertisement
Add Comment
Please, Sign In to add comment