diff --git a/README.md b/README.md index 0fe2564b6..5a201172a 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,9 @@ * [Prebuilt iTunes plugin installer](https://github.com/revmischa/projectm/releases) * [OSX Build instructions](BUILDING_OSX.txt) +# Linux: +* sudo apt-get install cmake-curses-gui libsdl2-dev libglew-dev libftgl-dev + # Building Requires [cmake](https://cmake.org/download/). ``` diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 26ae37542..35a1a08a8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -6,44 +6,21 @@ cmake_minimum_required(VERSION 2.6.0) set(PROJECTM_ROOT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) if(EMSCRIPTEN) - SET(INCLUDE-PROJECTM-QT OFF) - SET(INCLUDE-PROJECTM-PULSEAUDIO OFF) - SET(INCLUDE-PROJECTM-LIBVISUAL OFF) - SET(INCLUDE-PROJECTM-TEST OFF) - SET(INCLUDE-PROJECTM-EMSCRIPTEN ON) - SET(INCLUDE-NATIVE-SAMPLES OFF) + SET(EMSCRIPTEN-DEFAULT ON) +elseif(EMSCRIPTEN) + SET(EMSCRIPTEN-DEFAULT OFF) endif(EMSCRIPTEN) -IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - # sensible OSX defaults - SET(INCLUDE-PROJECTM-QT OFF) - SET(INCLUDE-PROJECTM-PULSEAUDIO OFF) - SET(INCLUDE-PROJECTM-LIBVISUAL OFF) - SET(INCLUDE-PROJECTM-TEST ON) - SET(INCLUDE-PROJECTM-EMSCRIPTEN OFF) - SET(INCLUDE-PROJECTM-SDL ON) - SET(INCLUDE-NATIVE-SAMPLES ON) -ELSE(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - # sensible other OS defaults? whatever's easiest to build - SET(INCLUDE-PROJECTM-QT OFF) - SET(INCLUDE-PROJECTM-PULSEAUDIO OFF) - SET(INCLUDE-PROJECTM-LIBVISUAL OFF) - SET(INCLUDE-PROJECTM-TEST ON) - SET(INCLUDE-PROJECTM-EMSCRIPTEN OFF) - SET(INCLUDE-PROJECTM-SDL ON) - SET(INCLUDE-NATIVE-SAMPLES ON) -ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - -OPTION(INCLUDE-PROJECTM-QT "Build the projectM Qt4 user interface extension library (recommended)" ${INCLUDE-PROJECTM-QT}) -OPTION(INCLUDE-PROJECTM-PULSEAUDIO "Build the projectM pulse audio client (recommended for fedora users)" ${INCLUDE-PROJECTM-PULSEAUDIO}) -OPTION(INCLUDE-PROJECTM-LIBVISUAL "Build the projectM libvisual client" ${INCLUDE-PROJECTM-LIBVISUAL}) -OPTION(INCLUDE-PROJECTM-LIBVISUAL-ALSA "Build experimental libvisual / alsa input standalone client" ${INCLUDE-PROJECTM-LIBVISUAL-ALSA}) -OPTION(INCLUDE-PROJECTM-JACK "Build the projectM JACK client" ${INCLUDE-PROJECTM-JACK}) -OPTION(INCLUDE-PROJECTM-TEST "Build the projectM test suite" ${INCLUDE-PROJECTM-TEST}) -OPTION(INCLUDE-PROJECTM-EMSCRIPTEN "Build projectM for the web (emscripten)" ${INCLUDE-PROJECTM-EMSCRIPTEN}) -OPTION(INCLUDE-PROJECTM-XMMS "Build the projectM xmms module (deprecated, use audacious instead)" ${INCLUDE-PROJECTM-XMMS}) -OPTION(INCLUDE-PROJECTM-SDL "Build the projectM SDL application" ${INCLUDE-PROJECTM-SDL}) -OPTION(INCLUDE-NATIVE-SAMPLES "Build the projectM native preset sample collection " ${INCLUDE-NATIVE-SAMPLES}) +OPTION(INCLUDE-PROJECTM-QT "Build the projectM Qt4 user interface extension library (recommended)" OFF) +OPTION(INCLUDE-PROJECTM-PULSEAUDIO "Build the projectM pulse audio client (recommended for fedora users)" OFF) +OPTION(INCLUDE-PROJECTM-LIBVISUAL "Build the projectM libvisual client" OFF) +OPTION(INCLUDE-PROJECTM-LIBVISUAL-ALSA "Build experimental libvisual / alsa input standalone client" OFF) +OPTION(INCLUDE-PROJECTM-JACK "Build the projectM JACK client" OFF) +OPTION(INCLUDE-PROJECTM-TEST "Build the projectM test suite" OFF) +OPTION(INCLUDE-PROJECTM-EMSCRIPTEN "Build projectM for the web (emscripten)" ${EMSCRIPTEN-DEFAULT}) +OPTION(INCLUDE-PROJECTM-XMMS "Build the projectM xmms module (deprecated, use audacious instead)" OFF) +OPTION(INCLUDE-PROJECTM-SDL "Build the projectM SDL application" ON) +OPTION(INCLUDE-NATIVE-SAMPLES "Build the projectM native preset sample collection " ON) add_subdirectory (libprojectM) diff --git a/src/libprojectM/CMakeLists.txt b/src/libprojectM/CMakeLists.txt index 53f436e3e..b3fba0aac 100644 --- a/src/libprojectM/CMakeLists.txt +++ b/src/libprojectM/CMakeLists.txt @@ -7,47 +7,40 @@ INCLUDE(CMakeDependentOption) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) # projectM version block -set(PROJECTM_VERSION 2.1.0) +set(PROJECTM_VERSION 2.2.0) set(PROJECTM_ABI_LEVEL 2) # +SET(USE_THREADS_DEF ON) +SET(USE_FTGL_DEF ON) +SET(USE_FBO_DEF ON) + if (EMSCRIPTEN) + SET(USE_THREADS-DEF OFF) + SET(USE_FTGL_DEF ON) + SET(USE_FBO_DEF OFF) + SET(USE_GLES1 ON) - SET(USE_INCLUDED_GLEW OFF) - SET(USE_THREADS OFF) - SET(USE_OPENMP OFF) - SET(USE_FTGL OFF) - SET(USE_FBO OFF) SET(BUILD_PROJECTM_STATIC ON) SET(DISABLE_NATIVE_PRESETS ON) - SET(USE_CG OFF) + SET(APPLE ) SET(LINUX ) + SET(OPENGL_gl_LIBRARY "fake_gl_lib.a") SET(GLEW_LIBRARY "gl.symbols") ADD_DEFINITIONS(-DDISABLE_NATIVE_PRESETS) endif (EMSCRIPTEN) -if (APPLE) - SET(USE_INCLUDED_GLEW OFF) - SET(USE_FTGL OFF) - SET(USE_OPENMP OFF) - SET(BUILD_PROJECTM_STATIC ON) - SET(USE_FBO ON) - SET(USE_CG ON) - SET(USE_GLES1 OFF) -endif(APPLE) - - -OPTION (USE_GLES1 "Use OpenGL ES" ${USE_GLES1}) +OPTION (USE_GLES1 "Use OpenGL ES" OFF) CMAKE_DEPENDENT_OPTION (USE_FBO "Use Framebuffer Objects for increased rendering quality. Disable this if you are experiencing problems on older or poorly supported hardware." ON "${USE_GLES1}" OFF) # disabled by default for GLES -OPTION(USE_FTGL "Use FTGL for on-screen fonts (found on your system)" ${USE_FTGL}) -OPTION (USE_THREADS "Use threads for parallelization" ${USE_THREADS}) -OPTION (USE_OPENMP "Use OpenMP and OMPTL for multi-core parallelization" ${USE_OPENMP}) -OPTION (USE_INCLUDED_GLEW "Use projectM's included implemention of GLEW" ${USE_INCLUDED_GLEW}) -OPTION (USE_CG "Use Cg for Pixel Shader support" ${USE_CG}) -OPTION (USE_DEVIL "Use devIL for image loading rather than the builtin SOIL library" ${USE_DEVIL}) -OPTION (BUILD_PROJECTM_STATIC "Build the projectM target library in the platform's native static (NOT shared) format." ${BUILD_PROJECTM_STATIC}) +OPTION(USE_FTGL "Use FTGL for on-screen fonts" ${USE_FTGL_DEF}) +OPTION (USE_THREADS "Use threads for parallelization" ${USE_THREADS_DEF}) +OPTION (USE_OPENMP "Use OpenMP and OMPTL for multi-core parallelization" OFF) +OPTION (USE_INCLUDED_GLEW "Use projectM's included implemention of GLEW" OFF) +OPTION (USE_CG "Use Cg for Pixel Shader support" OFF) +OPTION (USE_DEVIL "Use devIL for image loading rather than the builtin SOIL library" OFF) +OPTION (BUILD_PROJECTM_STATIC "Build the projectM target library in the platform's native static (NOT shared) format." ON) OPTION (DISABLE_NATIVE_PRESETS "Turn off support for native (C++ style) presets" ${DISABLE_NATIVE_PRESETS}) OPTION (DISABLE_MILKDROP_PRESETS "Turn off support for Milkdrop (.milk / .prjm) presets" ${DISABLE_MILKDROP_PRESETS}) @@ -133,8 +126,6 @@ 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) @@ -228,34 +219,23 @@ else(MSVC) endif(MSVC) # compiling on arm? relocation is gonna fail unless position-independent -IF( CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l" ) +IF( CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l" OR NOT ${DISABLE_NATIVE_PRESETS}) SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "-fPIC") -ENDIF( CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l" ) +ENDIF( CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l" OR NOT ${DISABLE_NATIVE_PRESETS}) -if(BUILD_PROJECTM_STATIC) - TARGET_LINK_LIBRARIES(projectM Renderer - ${IMAGE_LINK_TARGETS} - ${CG_LINK_TARGETS} - ${PRESET_FACTORY_LINK_TARGETS} - ${GLEW_LIBRARY} - ${FTGL_LINK_TARGETS} - ${MATH_LIBRARIES} - ${COREFOUNDATION_LIBRARIES} - ${OPENGL_LIBRARIES} - dl - ) -else(BUILD_PROJECTM_STATIC) - TARGET_LINK_LIBRARIES(projectM Renderer - ${IMAGE_LINK_TARGETS} - ${CG_LINK_TARGETS} - ${PRESET_FACTORY_LINK_TARGETS} - ${GLEW_LIBRARY} - ${FTGL_LINK_TARGETS} - ${MATH_LIBRARIES} - ${OPENGL_LIBRARIES} - dl - ) -endif(BUILD_PROJECTM_STATIC) +SET(projectM_LIBRARIES_TO_LINK + Renderer + ${IMAGE_LINK_TARGETS} + ${CG_LINK_TARGETS} + ${PRESET_FACTORY_LINK_TARGETS} + ${GLEW_LIBRARY} + ${FTGL_LINK_TARGETS} + ${MATH_LIBRARIES} + ${COREFOUNDATION_LIBRARIES} + ${OPENGL_LIBRARIES} + dl +) +TARGET_LINK_LIBRARIES(projectM ${projectM_LIBRARIES_TO_LINK}) SET(projectM_FONT_MENU "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/VeraMono.ttf" CACHE FILEPATH "Path to the default menu TrueType font") SET(projectM_FONT_TITLE "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/Vera.ttf" CACHE FILEPATH "Path to the default title TrueType font") diff --git a/src/libprojectM/MilkdropPresetFactory/CMakeLists.txt b/src/libprojectM/MilkdropPresetFactory/CMakeLists.txt index 6b82a2e6d..4bf1193bf 100644 --- a/src/libprojectM/MilkdropPresetFactory/CMakeLists.txt +++ b/src/libprojectM/MilkdropPresetFactory/CMakeLists.txt @@ -13,6 +13,7 @@ SET(MilkdropPresetFactory_SOURCES PerPointEqn.cpp Param.cpp PerFrameEqn.cpp IdlePreset.cpp + ../PresetFactory.cpp ) IF(NOT MSVC) diff --git a/src/libprojectM/Renderer/CMakeLists.txt b/src/libprojectM/Renderer/CMakeLists.txt index e867b5374..b6f272315 100644 --- a/src/libprojectM/Renderer/CMakeLists.txt +++ b/src/libprojectM/Renderer/CMakeLists.txt @@ -26,6 +26,7 @@ SET(Renderer_SOURCES VideoEcho.cpp RenderItemDistanceMetric.cpp RenderItemMatcher.cpp + ../KeyHandler.cpp ${SOIL_SOURCES} ) @@ -48,7 +49,7 @@ else (APPLE) set(COREFOUNDATION_LIBRARY ) endif(APPLE) -INCLUDE_DIRECTORIES(${projectM_SOURCE_DIR}) +INCLUDE_DIRECTORIES(${projectM_SOURCE_DIR} ${projectM_SOURCE_DIR}/Renderer) ADD_LIBRARY(Renderer STATIC ${Renderer_SOURCES}) TARGET_LINK_LIBRARIES(Renderer ${MATH_LIBRARIES} diff --git a/src/projectM-qt/CMakeLists.txt b/src/projectM-qt/CMakeLists.txt index 750d1ed34..0f5855ef7 100644 --- a/src/projectM-qt/CMakeLists.txt +++ b/src/projectM-qt/CMakeLists.txt @@ -111,8 +111,6 @@ else(BUILD_PROJECTM_QT_STATIC) ADD_LIBRARY(projectM-qt SHARED ${projectM-qt_SRCS} ${projectM-qt_RC_SRCS} ${projectM-qt_MOC_SRCS} ${projectM-qt_UIS_H}) endif(BUILD_PROJECTM_QT_STATIC) -set_property(TARGET projectM-qt PROPERTY LINK_INTERFACE_LIBRARIES "") -set_property(TARGET projectM-qt PROPERTY IMPORTED_LINK_DEPENDENT_LIBRARIES "") SET_TARGET_PROPERTIES(projectM-qt PROPERTIES VERSION ${PROJECTM_QT_VERSION} SOVERSION ${PROJECTM_QT_ABI_LEVEL}) if (${CMAKE_PROJECT_NAME} MATCHES "projectM-complete") diff --git a/src/projectM-sdl/cmake_install.cmake b/src/projectM-sdl/cmake_install.cmake index c39885fbe..b10839057 100644 --- a/src/projectM-sdl/cmake_install.cmake +++ b/src/projectM-sdl/cmake_install.cmake @@ -1,4 +1,4 @@ -# Install script for directory: /Users/bobo/dev/projectm/src/projectM-sdl +# Install script for directory: /home/cyber/dev/projectM/src/projectM-sdl # Set the install prefix if(NOT DEFINED CMAKE_INSTALL_PREFIX) @@ -27,3 +27,8 @@ if(NOT CMAKE_INSTALL_COMPONENT) endif() endif() +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + diff --git a/src/projectM-sdl/projectM_SDL_main.cpp b/src/projectM-sdl/projectM_SDL_main.cpp index 545cedfab..a197db1f0 100644 --- a/src/projectM-sdl/projectM_SDL_main.cpp +++ b/src/projectM-sdl/projectM_SDL_main.cpp @@ -152,7 +152,7 @@ int main( int argc, char *argv[] ) { app.settings.easterEgg = 0; // ??? app.settings.shuffleEnabled = 1; app.settings.softCutRatingsEnabled = 1; // ??? - app.settings.presetURL = "presets_tryptonaut"; + app.settings.presetURL = "../../presets/presets_tryptonaut"; app.settings.menuFontURL = "fonts/Vera.ttf"; app.settings.titleFontURL = "fonts/Vera.ttf";