diff --git a/CMakeLists.txt b/CMakeLists.txt index 424d9b746..7159cc672 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,10 +19,20 @@ endif() set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${Magnum_SOURCE_DIR}/modules/") include(MagnumMacros) +set_parent_scope(MAGNUM_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src") +set_parent_scope(MAGNUM_LIBRARY Magnum) + +include(FindMagnum) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic") +add_subdirectory(modules) add_subdirectory(src) +install(DIRECTORY src/ DESTINATION ${MAGNUM_INCLUDE_INSTALL_DIR} + FILES_MATCHING PATTERN "*.h" + PATTERN "*/Test" EXCLUDE) + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src) if(BUILD_EXAMPLES) diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000..4b0d000f8 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,27 @@ +# Author: mosra +pkgname=magnum +pkgver=dev +pkgrel=1 +pkgdesc="OpenGL 3 graphics engine" +arch=('i686' 'x86_64') +url="http://mosra.cz/blog/" +license=('LGPLv3') +makedepends=('cmake' 'mesa' 'glew') +optdepends=('qt') +options=(!strip) + +build() { + mkdir -p "$startdir/build" + cd "$startdir/build/" + + cmake .. \ + -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DBUILD_TESTS=TRUE + make +} + +package() { + cd "$startdir/build" + make DESTDIR="$pkgdir/" install +} diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt new file mode 100644 index 000000000..d31512765 --- /dev/null +++ b/modules/CMakeLists.txt @@ -0,0 +1 @@ +install(FILES FindMagnum.cmake MagnumMacros.cmake DESTINATION ${MAGNUM_CMAKE_MODULE_INSTALL_DIR}) diff --git a/modules/FindMagnum.cmake b/modules/FindMagnum.cmake new file mode 100644 index 000000000..3fb21f0c8 --- /dev/null +++ b/modules/FindMagnum.cmake @@ -0,0 +1,42 @@ +# Find Magnum - Magnum handling module for CMake +# +# This module defines: +# +# MAGNUM_FOUND - True if Magnum library is found +# MAGNUM_INCLUDE_DIR - Include dir for Magnum +# MAGNUM_LIBRARY - Magnum library +# +# MAGNUM_LIBRARY_INSTALL_DIR - Library installation directory +# MAGNUM_CMAKE_MODULE_INSTALL_DIR - Installation dir for CMake modules +# MAGNUM_INCLUDE_INSTALL_DIR - Include installation directory for headers +# + +include(MagnumMacros) + +if (MAGNUM_INCLUDE_DIR AND MAGNUM_LIBRARY) + + # Already in cache + set(MAGNUM_FOUND TRUE) + +else() + # Libraries + find_library(MAGNUM_LIBRARY Magnum) + + # Paths + find_path(MAGNUM_INCLUDE_DIR + NAMES Magnum.h + PATH_SUFFIXES Magnum + ) + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args("Magnum" DEFAULT_MSG + MAGNUM_INCLUDE_DIR + MAGNUM_LIBRARY + ) + +endif() + +# Installation dirs +set_parent_scope(MAGNUM_LIBRARY_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/lib) +set_parent_scope(MAGNUM_CMAKE_MODULE_INSTALL_DIR ${CMAKE_ROOT}/Modules) +set_parent_scope(MAGNUM_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/Magnum) diff --git a/modules/MagnumMacros.cmake b/modules/MagnumMacros.cmake index 3eb2cfc60..75a85759f 100644 --- a/modules/MagnumMacros.cmake +++ b/modules/MagnumMacros.cmake @@ -1,3 +1,12 @@ +macro(set_parent_scope name) + set(${name} ${ARGN}) + + # Set to parent scope only if parent exists + if(NOT ${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) + set(${name} ${${name}} PARENT_SCOPE) + endif() +endmacro() + if(QT4_FOUND) function(magnum_add_test test_name moc_header source_file) foreach(library ${ARGN}) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index eb0aaa3e7..d3ec22595 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -18,6 +18,8 @@ set(Magnum_SRCS add_library(Magnum SHARED ${Magnum_SRCS}) target_link_libraries(Magnum ${OPENGL_gl_LIBRARY} ${GLEW_LIBRARY}) +install(TARGETS Magnum DESTINATION ${MAGNUM_LIBRARY_INSTALL_DIR}) + if(BUILD_TESTS) enable_testing() add_subdirectory(Test)