| PROJECT(projectM) |
| cmake_minimum_required(VERSION 2.8.0) |
| |
| SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The projectM core library.") |
| |
| INCLUDE(cmake/CPack-projectM.cmake) |
| |
| set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) |
| |
| OPTION (USE_DEVIL "Use devIL for image loading rather than the builtin SOIL library" OFF) |
| |
| 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) |
| |
| OPTION(USE_FTGL "Use FTGL for on-screen fonts (found on your system)" ON) |
| |
| OPTION (USE_GLES1 "Use OpenGL ES 1.x" OFF) |
| |
| OPTION (USE_THREADS "Use threads for parallelization" ON) |
| |
| OPTION (USE_OPENMP "Use OpenMP and OMPTL for multi-core parallelization" ON) |
| |
| OPTION (USE_CG "Use Cg for Pixel Shader support" OFF) |
| |
| OPTION (BUILD_PROJECTM_STATIC "Build the projectM target library in the platform's native static (NOT shared) format." OFF) |
| |
| OPTION (DISABLE_NATIVE_PRESETS "Turn off support for native (C++ style) presets" OFF) |
| OPTION (DISABLE_MILKDROP_PRESETS "Turn off support for Milkdrop (.milk / .prjm) presets" OFF) |
| |
| # projectM version block |
| set(PROJECTM_VERSION 2.0.1) |
| set(PROJECTM_ABI_LEVEL 2) |
| # |
| |
| SET(LIB_SUFFIX "" |
| CACHE STRING "Define suffix of directory name (32/64)" |
| FORCE) |
| |
| ADD_DEFINITIONS(-DLIB_SUFFIX="\\\"${LIB_SUFFIX}\\\"") |
| |
| ADD_DEFINITIONS(-DCMAKE_INSTALL_PREFIX="\\\"${CMAKE_INSTALL_PREFIX}\\\"") |
| |
| SET(LIB_INSTALL_DIR "\${exec_prefix}/lib${LIB_SUFFIX}" |
| CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib${LIB_SUFFIX})" |
| FORCE) |
| |
| SET(projectM_SOURCES projectM.cpp PCM.cpp Preset.cpp fftsg.cpp KeyHandler.cpp |
| timer.cpp wipemalloc.cpp PresetLoader.cpp PresetChooser.cpp PipelineMerger.cpp ConfigFile.cpp TimeKeeper.cpp PresetFactory.cpp PresetFactoryManager.cpp) |
| |
| if (MSVC) |
| SET(projectM_SOURCES ${projectM_SOURCES} dlfcn.c win32-dirent.cpp) |
| endif(MSVC) |
| |
| if (NOT DISABLE_NATIVE_PRESETS) |
| add_subdirectory(NativePresetFactory) |
| SET(PRESET_FACTORY_SOURCES ${PRESET_FACTORY_SOURCES} ${NativePresetFactory_SOURCE_DIR}) |
| SET(PRESET_FACTORY_BINARY_DIR ${PRESET_FACTORY_BINARY_DIR} ${NativePresetFactory_BINARY_DIR}) |
| SET(PRESET_FACTORY_LINK_TARGETS ${PRESET_FACTORY_LINK_TARGETS} NativePresetFactory) |
| endif(NOT DISABLE_NATIVE_PRESETS) |
| |
| if (NOT DISABLE_MILKDROP_PRESETS) |
| add_subdirectory(MilkdropPresetFactory) |
| SET(PRESET_FACTORY_SOURCES ${PRESET_FACTORY_SOURCES} ${MilkdropPresetFactory_SOURCE_DIR}) |
| SET(PRESET_FACTORY_BINARY_DIR ${PRESET_FACTORY_BINARY_DIR} ${MilkdropPrmaesetFactory_BINARY_DIR}) |
| SET(PRESET_FACTORY_LINK_TARGETS ${PRESET_FACTORY_LINK_TARGETS} MilkdropPresetFactory) |
| endif(NOT DISABLE_MILKDROP_PRESETS) |
| |
| if (USE_DEVIL) |
| SET (projectM_SOURCES ${projectM_SOURCES}) |
| ADD_DEFINITIONS(-DUSE_DEVIL) |
| SET (IMAGE_LINK_TARGETS IL ILU ILUT) |
| else (USE_DEVIL) |
| SET (projectM_SOURCES ${projectM_SOURCES}) |
| SET (IMAGE_LINK_TARGETS ) |
| endif (USE_DEVIL) |
| |
| if (USE_CG) |
| ADD_DEFINITIONS(-DUSE_CG) |
| SET (CG_LINK_TARGETS Cg CgGL) |
| else (USE_CG) |
| SET (CG_LINK_TARGETS) |
| endif(USE_CG) |
| |
| include(CheckCXXCompilerFlag) |
| |
| if(USE_GLES1) |
| ADD_DEFINITIONS(-DUSE_GLES1) |
| endif(USE_GLES1) |
| |
| if(USE_FBO) |
| ADD_DEFINITIONS(-DUSE_FBO) |
| endif(USE_FBO) |
| |
| if(USE_FTGL) |
| ADD_DEFINITIONS(-DUSE_FTGL) |
| |
| find_package( Freetype REQUIRED) |
| include_directories( ${FREETYPE_INCLUDE_DIRS} ) |
| |
| endif(USE_FTGL) |
| |
| if (BUILD_PROJECTM_STATIC) |
| ADD_LIBRARY(projectM STATIC ${projectM_SOURCES}) |
| else(BUILD_PROJECTM_STATIC) |
| ADD_LIBRARY(projectM SHARED ${projectM_SOURCES}) |
| endif(BUILD_PROJECTM_STATIC) |
| |
| set_property(TARGET projectM PROPERTY LINK_INTERFACE_LIBRARIES "") |
| set_property(TARGET projectM PROPERTY IMPORTED_LINK_DEPENDENT_LIBRARIES "") |
| SET_TARGET_PROPERTIES(projectM PROPERTIES VERSION ${PROJECTM_VERSION} SOVERSION ${PROJECTM_ABI_LEVEL}) |
| |
| if (USE_THREADS) |
| ADD_DEFINITIONS(-DUSE_THREADS) |
| endif(USE_THREADS) |
| |
| if (APPLE) |
| ADD_DEFINITIONS(-DMACOS -DSTBI_NO_DDS) |
| set(RESOURCE_PREFIX "Resources") |
| else (APPLE) |
| if (WIN32) |
| set (RESOURCE_PREFIX "Resources") |
| ADD_DEFINITIONS(-DWIN32 -DSTBI_NO_DDS) |
| else(WIN32) |
| set (RESOURCE_PREFIX "share/projectM") |
| ADD_DEFINITIONS(-DLINUX -DSTBI_NO_DDS) |
| endif(WIN32) |
| endif(APPLE) |
| |
| add_subdirectory(Renderer) |
| |
| FIND_PACKAGE(OpenGL) |
| |
| INCLUDE(FindPkgConfig.cmake) |
| |
| pkg_search_module (FTGL ftgl) |
| |
| #set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH};/opt/local/include;/Developer/SDKs/MACOSX10.5.sdk/usr/X11/include) |
| #set(CMAKE_LIBRARY_PATH /opt/local/lib;/Developer/SDKs/MACOSX10.5.sdk;/Developer/SDKs/MacOSX10.5.sdk/usr/X11/lib/) |
| |
| IF(USE_FTGL) |
| if (FTGL_FOUND) |
| MESSAGE(STATUS "[projectM] FTGL font support was detected and enabled.") |
| else (FTGL_FOUND) |
| MESSAGE(STATUS |
| "[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.") |
| endif (FTGL_FOUND) |
| |
| ADD_DEFINITIONS(-DUSE_FTGL) |
| |
| set (FTGL_INCUDE_DIRS ${FTGL_INCLUDE_DIRS} ${CMAKE_INCLUDE_PATH} ${OPENGL_INCLUDE_DIR}) |
| set (FTGL_LINK_DIRS ${FTGL_LIBRARY_DIRS} ) |
| set (FTGL_LINK_TARGETS ftgl freetype) |
| |
| ELSE (USE_FTGL) |
| IF (FTGL_FOUND) |
| MESSAGE(STATUS "[projectM] Warning: FTGL font support was detected but NOT enabled. You can enable it by setting USE_FTGL=true") |
| ELSE (FTGL_FOUND) |
| MESSAGE(STATUS "[projectM] Warning: FTGL font support was not detected. Visit http://ftgl.wiki.sourceforge.net/ for help on installing FTGL.") |
| ENDIF(FTGL_FOUND) |
| |
| # todo: change this because its obscure and probably not being used |
| set (FTGL_INCLUDE_DIRS "/opt/local/include") |
| set (FTGL_LINK_DIRS ) |
| set (FTGL_LINK_TARGETS ) |
| ENDIF(USE_FTGL) |
| |
| CHECK_CXX_COMPILER_FLAG("-fopenmp" SUPPORTS_OPENMP) |
| |
| IF(USE_OPENMP AND SUPPORTS_OPENMP) |
| SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp ") |
| SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp ") |
| ENDIF(USE_OPENMP AND SUPPORTS_OPENMP) |
| |
| INCLUDE_DIRECTORIES(${projectM_SOURCE_DIR} |
| ${FTGL_INCLUDE_DIRS} |
| ${Renderer_SOURCE_DIR} |
| ${PRESET_FACTORY_SOURCES} |
| ) |
| LINK_DIRECTORIES(${FTGL_LIBRARY_DIRS} |
| ${Renderer_BINARY_DIR} |
| ${PRESET_FACTORY_BINARY_DIR} |
| ) |
| |
| if(MSVC) |
| SET (MATH_LIBRARIES ) |
| else(MSVC) |
| SET (MATH_LIBRARIES m) |
| endif(MSVC) |
| |
| if(BUILD_PROJECTM_STATIC) |
| TARGET_LINK_LIBRARIES(projectM Renderer |
| ${IMAGE_LINK_TARGETS} |
| ${CG_LINK_TARGETS} |
| ${PRESET_FACTORY_LINK_TARGETS} |
| ${FTGL_LINK_TARGETS} |
| ${MATH_LIBRARIES} |
| dl |
| ${OPENGL_LIBRARIES} |
| ) |
| else(BUILD_PROJECTM_STATIC) |
| TARGET_LINK_LIBRARIES(projectM Renderer |
| ${IMAGE_LINK_TARGETS} |
| ${CG_LINK_TARGETS} |
| ${PRESET_FACTORY_LINK_TARGETS} |
| ${FTGL_LINK_TARGETS} |
| ${MATH_LIBRARIES} |
| dl |
| ${OPENGL_LIBRARIES} |
| ) |
| endif(BUILD_PROJECTM_STATIC) |
| |
| |
| CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/libprojectM.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/libprojectM.pc" @ONLY) |
| CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/config.inp.in" "${CMAKE_CURRENT_BINARY_DIR}/config.inp" @ONLY) |
| |
| FILE(GLOB presets "presets/*.milk" "presets/*.prjm" "presets/*.tga") |
| INSTALL(FILES ${presets} DESTINATION ${CMAKE_INSTALL_PREFIX}/share/projectM/presets) |
| INSTALL(FILES ${Renderer_SOURCE_DIR}/projectM.cg ${Renderer_SOURCE_DIR}/blur.cg DESTINATION ${CMAKE_INSTALL_PREFIX}/share/projectM/shaders) |
| INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libprojectM.pc DESTINATION ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig) |
| INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/config.inp DESTINATION ${CMAKE_INSTALL_PREFIX}/share/projectM) |
| INSTALL(FILES projectM.hpp event.h dlldefs.h fatal.h PCM.hpp Common.hpp DESTINATION include/libprojectM) |
| INSTALL(TARGETS projectM DESTINATION lib${LIB_SUFFIX}) |