|
From: Lasse Kärkkäi. <tr...@us...> - 2009-10-09 08:12:07
|
Module: performous
Branch: master
Commit: c365f18726ac1bcafe8cbd791dea4b73cafd6169
Author: Lasse Karkkainen <tro...@tr...>
Date: Fri Oct 9 11:10:57 2009 +0300
Building with -fvisibility=hidden now to allow better source-level compatibility with Windows.
---
game/CMakeLists.txt | 4 ++--
libs/libda/CMakeLists.txt | 5 +++++
libs/libda/src/CMakeLists.txt | 5 +++++
libs/libda/src/audio.cpp | 5 +++--
libs/plugin++/CMakeLists.txt | 5 +++++
libs/plugin++/include/plugin++/dllhelper.hpp | 20 ++++++++++++++++++++
libs/plugin++/include/plugin++/plugin.hpp | 3 ++-
7 files changed, 42 insertions(+), 5 deletions(-)
diff --git a/game/CMakeLists.txt b/game/CMakeLists.txt
index 7f078f6..035021d 100644
--- a/game/CMakeLists.txt
+++ b/game/CMakeLists.txt
@@ -23,9 +23,9 @@ endforeach(lib)
# Set default compile flags for GCC
if(CMAKE_COMPILER_IS_GNUCXX)
- message(STATUS "GCC detected, enabling warnings")
+ message(STATUS "GCC detected, adding compile flags")
# -pedantic cannot be used because ffmpeg headers are b0rked
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -std=c++98 -Wall -Wextra")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -std=c++98 -Wall -Wextra -fvisibility=hidden")
# Needed for ffmpeg.cc to compile cleanly on OSX (it's a (unsigned long) long story)
add_definitions("-D__STDC_CONSTANT_MACROS")
endif(CMAKE_COMPILER_IS_GNUCXX)
diff --git a/libs/libda/CMakeLists.txt b/libs/libda/CMakeLists.txt
index d279a05..350aaa6 100644
--- a/libs/libda/CMakeLists.txt
+++ b/libs/libda/CMakeLists.txt
@@ -9,6 +9,11 @@ include_directories(../plugin++/include)
FILE(GLOB HEADER_FILES "include/libda/*")
install(FILES ${HEADER_FILES} DESTINATION include/libda)
+if(CMAKE_COMPILER_IS_GNUCXX)
+ message(STATUS "GCC detected, adding compile flags")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -std=c++98 -Wall -Wextra -fvisibility=hidden -fvisibility-inlines-hidden")
+endif(CMAKE_COMPILER_IS_GNUCXX)
+
add_subdirectory(src)
add_subdirectory(plugins)
diff --git a/libs/libda/src/CMakeLists.txt b/libs/libda/src/CMakeLists.txt
index cab06e2..fc6ea31 100644
--- a/libs/libda/src/CMakeLists.txt
+++ b/libs/libda/src/CMakeLists.txt
@@ -4,6 +4,11 @@ set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREAD ON)
find_package(Boost 1.34 REQUIRED COMPONENTS thread filesystem)
+if(CMAKE_COMPILER_IS_GNUCXX)
+ message(STATUS "GCC detected, adding compile flags")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -std=c++98 -pedantic -Wall -Wextra -fvisibility=hidden")
+endif(CMAKE_COMPILER_IS_GNUCXX)
+
include_directories(${Boost_INCLUDE_DIRS})
add_library(da audio.cpp)
target_link_libraries(da plugin++ ${Boost_LIBRARIES})
diff --git a/libs/libda/src/audio.cpp b/libs/libda/src/audio.cpp
index bfff922..4f29b39 100644
--- a/libs/libda/src/audio.cpp
+++ b/libs/libda/src/audio.cpp
@@ -1,11 +1,12 @@
#include <libda/audio_dev.hpp>
+#include <plugin++/dllhelper.hpp>
#include <plugin++/loader.hpp>
#include <ostream>
#include <limits>
namespace da {
- const std::size_t settings::low = std::numeric_limits<std::size_t>::min();
- const std::size_t settings::high = std::numeric_limits<std::size_t>::max();
+ DLL_PUBLIC const std::size_t settings::low = std::numeric_limits<std::size_t>::min();
+ DLL_PUBLIC const std::size_t settings::high = std::numeric_limits<std::size_t>::max();
class init_impl {
plugin::loader m_loader;
diff --git a/libs/plugin++/CMakeLists.txt b/libs/plugin++/CMakeLists.txt
index 10cc329..f2837f2 100644
--- a/libs/plugin++/CMakeLists.txt
+++ b/libs/plugin++/CMakeLists.txt
@@ -3,6 +3,11 @@ cmake_minimum_required(VERSION 2.4)
include_directories(include)
+if(CMAKE_COMPILER_IS_GNUCXX)
+ message(STATUS "GCC detected, adding compile flags")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++98 -pedantic -Wall -Wextra -fvisibility=hidden -fvisibility-inlines-hidden")
+endif(CMAKE_COMPILER_IS_GNUCXX)
+
if (WIN32)
add_library(plugin++ STATIC src/dll-windows.cpp)
else (WIN32)
diff --git a/libs/plugin++/include/plugin++/dllhelper.hpp b/libs/plugin++/include/plugin++/dllhelper.hpp
new file mode 100644
index 0000000..bcb5593
--- /dev/null
+++ b/libs/plugin++/include/plugin++/dllhelper.hpp
@@ -0,0 +1,20 @@
+#undef DLL_PUBLIC
+
+#if defined _WIN32 || defined __CYGWIN__
+
+#ifdef BUILDING_DLL
+#define DLL_PUBLIC __declspec(dllexport)
+#else
+#define DLL_PUBLIC __declspec(dllimport)
+#endif
+
+#else
+
+#if __GNUC__ >= 4
+#define DLL_PUBLIC __attribute__ ((visibility("default")))
+#else
+#define DLL_PUBLIC
+#endif
+
+#endif
+
diff --git a/libs/plugin++/include/plugin++/plugin.hpp b/libs/plugin++/include/plugin++/plugin.hpp
index d079ef8..32be7ee 100644
--- a/libs/plugin++/include/plugin++/plugin.hpp
+++ b/libs/plugin++/include/plugin++/plugin.hpp
@@ -11,6 +11,7 @@
#ifndef PLUGIN_HPP_INCLUDED
#define PLUGIN_HPP_INCLUDED
+#include "dllhelper.hpp"
#include <map>
#include <stdexcept>
#include <string>
@@ -48,7 +49,7 @@ namespace plugin {
// being a static member variable of this class to ensure that it gets
// initialized when it is used the first time. If it were static member,
// the initialization (on program startup) might occur too late.
- static map_t& map() {
+ DLL_PUBLIC static map_t& map() {
static map_t m;
return m;
}
|