/xbmc/visualizations/XBMCProjectM/libprojectM/CMakeLists.txt

http://github.com/xbmc/xbmc · CMake · 144 lines · 106 code · 34 blank · 4 comment · 22 complexity · 3cd7f0bbb7164b8eb2f662f9d457cb43 MD5 · raw file

  1. PROJECT(projectM)
  2. cmake_minimum_required(VERSION 2.6)
  3. OPTION (USE_DEVIL "Use devIL for image loading rather than the builtin SOIL library" OFF)
  4. OPTION (USE_FBO "Use Framebuffer Objects for increased rendering quality. Disable this for OpenGL ES 1.x or if you are experiencing problems on older or poorly supported hardware." ON)
  5. OPTION (USE_GLES1 "Use OpenGL ES 1.x" OFF)
  6. OPTION (USE_NATIVE_GLEW "Use projectM's native implemention of GLEW." OFF)
  7. #OPTION (FTGL_STATIC "Build the projectM target library in the platform's native static (NOT shared) format." OFF)
  8. OPTION (BUILD_PROJECTM_STATIC "Build the projectM target library in the platform's native static (NOT shared) format." OFF)
  9. SET(SOIL_SOURCES image_DXT.c image_helper.c SOIL.c stb_image_aug.c)
  10. if (USE_NATIVE_GLEW)
  11. ADD_DEFINITIONS(-DUSE_NATIVE_GLEW)
  12. SET(GLEW_SOURCES glew.h glew.c)
  13. SET(GLEW_LINK_TARGETS )
  14. else(USE_NATIVE_GLEW)
  15. SET(GLEW_SOURCES )
  16. SET (GLEW_LINK_TARGETS GLEW)
  17. endif(USE_NATIVE_GLEW)
  18. SET(projectM_SOURCES projectM.cpp FBO.cpp InitCond.cpp
  19. Expr.cpp PCM.cpp Parser.cpp Preset.cpp BeatDetect.cpp PerPixelEqn.cpp Param.cpp CustomWave.cpp CustomShape.cpp
  20. Func.cpp Eval.cpp PerFrameEqn.cpp PerPointEqn.cpp fftsg.cpp KeyHandler.cpp
  21. timer.cpp wipemalloc.cpp BuiltinFuncs.cpp BuiltinParams.cpp Renderer.cpp
  22. PresetLoader.cpp PresetChooser.cpp PresetFrameIO.cpp PresetMerge.cpp
  23. ConfigFile.cpp IdlePreset.cpp TextureManager.cpp TimeKeeper.cpp ${GLEW_SOURCES})
  24. if (USE_DEVIL)
  25. SET (projectM_SOURCES ${projectM_SOURCES})
  26. ADD_DEFINITIONS(-DUSE_DEVIL)
  27. SET (IMAGE_LINK_TARGETS IL ILU ILUT)
  28. else (USE_DEVIL)
  29. SET (projectM_SOURCES ${projectM_SOURCES} ${SOIL_SOURCES})
  30. SET (IMAGE_LINK_TARGETS )
  31. endif (USE_DEVIL)
  32. if(USE_GLES1)
  33. ADD_DEFINITIONS(-DUSE_GLES1)
  34. endif(USE_GLES1)
  35. if(USE_FBO)
  36. ADD_DEFINITIONS(-DUSE_FBO)
  37. endif(USE_FBO)
  38. if (BUILD_PROJECTM_STATIC)
  39. ADD_LIBRARY(projectM STATIC ${projectM_SOURCES})
  40. else(BUILD_PROJECTM_STATIC)
  41. ADD_LIBRARY(projectM SHARED ${projectM_SOURCES})
  42. endif(BUILD_PROJECTM_STATIC)
  43. SET_TARGET_PROPERTIES(projectM PROPERTIES VERSION 2.00 SOVERSION 2)
  44. if (APPLE)
  45. ADD_DEFINITIONS(-DMACOS -DSTBI_NO_DDS)
  46. set(RESOURCE_PREFIX "Resources" )
  47. FIND_LIBRARY(CORE_FOUNDATION_LIBRARY CoreFoundation )
  48. MARK_AS_ADVANCED (CORE_FOUNDATION_LIBRARY)
  49. set(EXTRA_LIBS ${CORE_FOUNDATION_LIBRARY})
  50. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" )
  51. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" )
  52. else (APPLE)
  53. if (WIN32)
  54. set (RESOURCE_PREFIX "Resources")
  55. ADD_DEFINITIONS(-DWIN32 -DSTBI_NO_DDS)
  56. else(WIN32)
  57. set (RESOURCE_PREFIX "share/projectM")
  58. ADD_DEFINITIONS(-DLINUX -DSTBI_NO_DDS)
  59. endif(WIN32)
  60. endif(APPLE)
  61. ADD_DEFINITIONS(-DCMAKE_INSTALL_PREFIX="\\\"${CMAKE_INSTALL_PREFIX}\\\"")
  62. FIND_PACKAGE(OpenGL)
  63. INCLUDE(FindPkgConfig.cmake)
  64. pkg_search_module (FTGL ftgl)
  65. if (FTGL_FOUND)
  66. OPTION(USE_FTGL "Use FTGL for on-screen fonts (found on your system)" ON)
  67. else (FTGL_FOUND)
  68. OPTION(USE_FTGL "Use FTGL for on-screen fonts (Warning: NOT found on your system! Turning this on will probably bust the compilation.)" OFF)
  69. endif(FTGL_FOUND)
  70. #set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH};/opt/local/include;/Developer/SDKs/MACOSX10.5.sdk/usr/X11/include)
  71. #set(CMAKE_LIBRARY_PATH /opt/local/lib;/Developer/SDKs/MACOSX10.5.sdk;/Developer/SDKs/MacOSX10.5.sdk/usr/X11/lib/)
  72. IF(USE_FTGL)
  73. if (FTGL_FOUND)
  74. MESSAGE(STATUS "[projectM] FTGL font support was detected and enabled.")
  75. else (FTGL_FOUND)
  76. MESSAGE(STATUS
  77. "[projectM] Warning! FTGL has been enabled but not detected. Your compilation will probably break. Turn off FTGL support by setting USE_FTGL to false, or visit http://ftgl.wiki.sourceforge.net/ for help on installing FTGL.")
  78. endif (FTGL_FOUND)
  79. ADD_DEFINITIONS(-DUSE_FTGL)
  80. set (FTGL_INCUDE_DIRS ${FTGL_INCLUDE_DIRS} ${CMAKE_INCLUDE_PATH} ${OPENGL_INCLUDE_DIR})
  81. set (FTGL_LINK_DIRS ${FTGL_LIBRARY_DIRS} )
  82. set (FTGL_LINK_TARGETS ftgl freetype)
  83. ELSE (USE_FTGL)
  84. IF (FTGL_FOUND)
  85. MESSAGE(STATUS "[projectM] Warning: FTGL font support was detected but NOT enabled. You can enable it by setting USE_FTGL=true")
  86. ELSE (FTGL_FOUND)
  87. MESSAGE(STATUS "[projectM] Warning: FTGL font support was not detected. Visit http://ftgl.wiki.sourceforge.net/ for help on installing FTGL.")
  88. ENDIF(FTGL_FOUND)
  89. # todo: change this because its obscure and probably not being used
  90. set (FTGL_INCLUDE_DIRS "/opt/local/include")
  91. set (FTGL_LINK_DIRS)
  92. set (FTGL_LINK_TARGETS )
  93. ENDIF(USE_FTGL)
  94. INCLUDE_DIRECTORIES(${FTGL_INCLUDE_DIRS})
  95. LINK_DIRECTORIES(${FTGL_LINK_DIRS} "./")
  96. if(BUILD_PROJECTM_STATIC)
  97. TARGET_LINK_LIBRARIES(projectM ${GLEW_LINK_TARGETS} m ${FTGL_LINK_TARGETS} ${OPENGL_LIBRARIES} ${IMAGE_LINK_TARGETS} ${EXTRA_LIBS} )
  98. else(BUILD_PROJECTM_STATIC)
  99. TARGET_LINK_LIBRARIES(projectM ${GLEW_LINK_TARGETS} m ${FTGL_LINK_TARGETS} ${OPENGL_LIBRARIES} ${IMAGE_LINK_TARGETS} ${EXTRA_LIBS} )
  100. endif(BUILD_PROJECTM_STATIC)
  101. CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/libprojectM.pc.in" "${CMAKE_CURRENT_SOURCE_DIR}/libprojectM.pc" @ONLY)
  102. CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/config.inp.in" "${CMAKE_CURRENT_SOURCE_DIR}/config.inp" @ONLY)
  103. FILE(GLOB presets "presets/*.milk" "presets/*.prjm" "presets/*.tga")
  104. INSTALL(FILES ${presets} DESTINATION ${CMAKE_INSTALL_PREFIX}/share/projectM/presets)
  105. FILE(GLOB fonts "fonts/*.ttf")
  106. INSTALL(FILES ${fonts} DESTINATION ${CMAKE_INSTALL_PREFIX}/share/projectM/fonts)
  107. INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/libprojectM.pc" DESTINATION ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig)
  108. INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/config.inp DESTINATION ${CMAKE_INSTALL_PREFIX}/share/projectM)
  109. INSTALL(FILES projectM.hpp event.h dlldefs.h fatal.h PresetFrameIO.hpp PCM.hpp DESTINATION include/libprojectM)
  110. INSTALL(TARGETS projectM DESTINATION lib${LIB_SUFFIX})