From 2b25ffd86b4de3289fbf9001ede1794f1763e580 Mon Sep 17 00:00:00 2001 From: Eduardo Bart Date: Mon, 19 Dec 2011 15:26:19 -0200 Subject: [PATCH] changes to compile on gcc 4.7 --- src/framework/CMakeLists.txt | 13 +++++++++++-- src/framework/graphics/paintershaderprogram.cpp | 2 +- src/framework/luascript/luainterface.h | 8 +++++++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/framework/CMakeLists.txt b/src/framework/CMakeLists.txt index 67610682..7b355c0a 100644 --- a/src/framework/CMakeLists.txt +++ b/src/framework/CMakeLists.txt @@ -6,6 +6,7 @@ MESSAGE(STATUS ${CMAKE_MODULE_PATH}) OPTION(NO_CONSOLE "Disables console window on Windows platform" OFF) OPTION(HANDLE_EXCEPTIONS "Generate crash reports" OFF) OPTION(USE_OPENGL_ES2 "Use OpenGL ES 2.0 (for mobiles devices)" OFF) +OPTION(USE_GCC47 "Use experimental gcc 4.7" OFF) # set debug as default build type IF(NOT CMAKE_BUILD_TYPE) @@ -14,7 +15,6 @@ ENDIF(NOT CMAKE_BUILD_TYPE) # find needed libraries SET(Boost_USE_STATIC_LIBS ON) -SET(Boost_USE_MULTITHREADED OFF) FIND_PACKAGE(Boost COMPONENTS system REQUIRED) IF(USE_OPENGL_ES2) @@ -60,6 +60,10 @@ ELSE(HANDLE_EXCEPTIONS) MESSAGE(STATUS "Generate crash reports: OFF") ENDIF(HANDLE_EXCEPTIONS) +IF(USE_GCC47) + SET(CMAKE_C_COMPILER gcc-4.7) + SET(CMAKE_CXX_COMPILER g++-4.7) +ENDIF(USE_GCC47) IF(WIN32) SET(framework_SOURCES ${framework_SOURCES} ${CMAKE_CURRENT_LIST_DIR}/platform/win32window.cpp) @@ -71,6 +75,7 @@ IF(WIN32) IF(NO_CONSOLE) IF(CMAKE_COMPILER_IS_GNUCXX) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mthread") SET(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -mwindows") ENDIF(CMAKE_COMPILER_IS_GNUCXX) MESSAGE(STATUS "Disable windows console: ON") @@ -78,8 +83,12 @@ IF(WIN32) MESSAGE(STATUS "Disable windows console: OFF") ENDIF(NO_CONSOLE) ELSE(WIN32) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread") SET(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -rdynamic") - SET(ADDITIONAL_LIBRARIES pthread X11 dl) + IF(USE_GCC47) + ADD_DEFINITIONS(-D_GLIBCXX__PTHREADS) + ENDIF(USE_GCC47) + SET(ADDITIONAL_LIBRARIES X11 dl) SET(framework_SOURCES ${framework_SOURCES} ${CMAKE_CURRENT_LIST_DIR}/platform/x11window.cpp) ENDIF(WIN32) diff --git a/src/framework/graphics/paintershaderprogram.cpp b/src/framework/graphics/paintershaderprogram.cpp index 020d8a65..c667950b 100644 --- a/src/framework/graphics/paintershaderprogram.cpp +++ b/src/framework/graphics/paintershaderprogram.cpp @@ -105,7 +105,7 @@ void PainterShaderProgram::draw(const CoordsBuffer& coordsBuffer, DrawMode drawM } bool mustDisableTexCoordsArray = false; - if(coordsBuffer.getTextureCoords() > 0) { + if(coordsBuffer.getTextureCoordsCount() > 0) { enableAttributeArray(PainterShaderProgram::TEXTURE_COORDS_ATTR); setAttributeArray(PainterShaderProgram::TEXTURE_COORDS_ATTR, coordsBuffer.getTextureCoords(), 2); mustDisableTexCoordsArray = true; diff --git a/src/framework/luascript/luainterface.h b/src/framework/luascript/luainterface.h index b566d8c9..59a3c74b 100644 --- a/src/framework/luascript/luainterface.h +++ b/src/framework/luascript/luainterface.h @@ -296,7 +296,7 @@ public: /// Pushes any type onto the stack template - void polymorphicPush(T v, Args... args) { push_luavalue(v); polymorphicPush(args...); } + void polymorphicPush(T v, Args... args); void polymorphicPush() { } /// Casts a value from stack to any type @@ -320,6 +320,12 @@ extern LuaInterface g_lua; #include "luabinder.h" #include "luavaluecasts.h" +template +void LuaInterface::polymorphicPush(T v, Args... args) { + push_luavalue(v); + polymorphicPush(args...); +} + // next templates must be defined after above includes template void LuaInterface::bindClassStaticFunction(const std::string& functionName, const F& function) {