From 8c75f6e8c25106002729eabc5c733c3aa8d42d4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 1 Apr 2013 01:10:00 +0200 Subject: [PATCH] Expose MAGNUM_BUILD_STATIC in magnumConfigure.h. --- CMakeLists.txt | 4 ++++ doc/building.dox | 7 +++++-- doc/cmake.dox | 2 ++ modules/FindMagnum.cmake | 6 +++++- src/Magnum.h | 9 +++++++++ src/Platform/magnum-info.cpp | 6 ++++++ src/magnumConfigure.h.cmake | 1 + 7 files changed, 32 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index acef07eb3..9d6f55cd4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,6 +65,10 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/modules/") find_package(Corrade REQUIRED) +if(BUILD_STATIC) + set(MAGNUM_BUILD_STATIC 1) +endif() + # If targeting NaCl, set explicit OpenGL ES 2.0 support if(CORRADE_TARGET_NACL) set(TARGET_GLES 1) diff --git a/doc/building.dox b/doc/building.dox index 8eee27b50..621984b12 100644 --- a/doc/building.dox +++ b/doc/building.dox @@ -74,8 +74,11 @@ optional features. make make install -If you want to build with another compiler (e.g. Clang), pass -`-DCMAKE_CXX_COMPILER=clang++` to CMake. +The libraries are build as shared by default, pass `-DBUILD_STATIC=ON` to build +them as static. If you plan them to use with shared libraries later, enable +also position-independent code with `-DBUILD_STATIC_PIC=ON`. If you want to +build with another compiler (e.g. Clang), pass `-DCMAKE_CXX_COMPILER=clang++` +to CMake. @subsection building-optional Enabling or disabling features diff --git a/doc/cmake.dox b/doc/cmake.dox index 4cb3b1a86..ad07c3acd 100644 --- a/doc/cmake.dox +++ b/doc/cmake.dox @@ -95,6 +95,8 @@ convenience aliases `MAGNUM_APPLICATION_LIBRARIES` / Features of found %Magnum library are exposed in these CMake variables, they are also available as preprocessor variables if including Magnum.h: +- `MAGNUM_BUILD_STATIC` -- Defined if built as static libraries. Default are + shared libraries. - `MAGNUM_TARGET_GLES` -- Defined if compiled for OpenGL ES - `MAGNUM_TARGET_GLES2` -- Defined if compiled for OpenGL ES 2.0 - `MAGNUM_TARGET_GLES3` -- Defined if compiled for OpenGL ES 3.0 diff --git a/modules/FindMagnum.cmake b/modules/FindMagnum.cmake index 27ade163b..59367f8ff 100644 --- a/modules/FindMagnum.cmake +++ b/modules/FindMagnum.cmake @@ -45,6 +45,7 @@ # / MAGNUM_WINDOWLESSAPPLICATION_INCLUDE_DIRS to simplify porting. # # Features of found Magnum library are exposed in these variables: +# MAGNUM_BUILD_STATIC - Defined if compiled as static libraries # MAGNUM_TARGET_GLES - Defined if compiled for OpenGL ES # MAGNUM_TARGET_GLES2 - Defined if compiled for OpenGL ES 2.0 # MAGNUM_TARGET_GLES3 - Defined if compiled for OpenGL ES 3.0 @@ -111,7 +112,10 @@ find_path(MAGNUM_INCLUDE_DIR # Configuration file(READ ${MAGNUM_INCLUDE_DIR}/magnumConfigure.h _magnumConfigure) -# Built for specific target? +string(FIND "${_magnumConfigure}" "#define MAGNUM_BUILD_STATIC" _BUILD_STATIC) +if(NOT _BUILD_STATIC EQUAL -1) + set(MAGNUM_BUILD_STATIC 1) +endif() string(FIND "${_magnumConfigure}" "#define MAGNUM_TARGET_GLES" _TARGET_GLES) if(NOT _TARGET_GLES EQUAL -1) set(MAGNUM_TARGET_GLES 1) diff --git a/src/Magnum.h b/src/Magnum.h index 3540beea9..3be9bb7e0 100644 --- a/src/Magnum.h +++ b/src/Magnum.h @@ -69,6 +69,15 @@ using Corrade::Utility::Error; /** @todoc remove trailing underscores when Doxygen can handle `undef` */ +/** +@brief Static library build + +`MAGNUM_BUILD_STATIC` is defined if build as static libraries. Default are +shared libraries. +@see @ref building-corrade +*/ +#define MAGNUM_BUILD_STATIC_ + /** @brief OpenGL ES target diff --git a/src/Platform/magnum-info.cpp b/src/Platform/magnum-info.cpp index 9578c32dd..5dfa7bd7e 100644 --- a/src/Platform/magnum-info.cpp +++ b/src/Platform/magnum-info.cpp @@ -53,6 +53,12 @@ MagnumInfo::MagnumInfo(int& argc, char** argv): WindowlessGlxApplication(argc, a #ifdef CORRADE_GCC46_COMPATIBILITY d << "CORRADE_GCC46_COMPATIBILITY"; #endif + #ifdef CORRADE_BUILD_STATIC + d << "CORRADE_BUILD_STATIC"; + #endif + #ifdef MAGNUM_BUILD_STATIC + d << "MAGNUM_BUILD_STATIC"; + #endif #ifdef CORRADE_TARGET_NACL d << "CORRADE_TARGET_NACL"; #endif diff --git a/src/magnumConfigure.h.cmake b/src/magnumConfigure.h.cmake index db580c400..1cb5f49b5 100644 --- a/src/magnumConfigure.h.cmake +++ b/src/magnumConfigure.h.cmake @@ -22,6 +22,7 @@ DEALINGS IN THE SOFTWARE. */ +#cmakedefine MAGNUM_BUILD_STATIC #cmakedefine MAGNUM_TARGET_GLES #cmakedefine MAGNUM_TARGET_GLES2 #cmakedefine MAGNUM_TARGET_GLES3