liblua visibility and compiler-flags

This commit is contained in:
Robin Gareus 2016-04-04 13:42:50 +02:00
parent 1feb50b2b2
commit 8d26a67ddd
3 changed files with 77 additions and 16 deletions

View file

@ -1,10 +1,24 @@
/* This is a C++ wrapper to compile the lua C code
* with settings appropriate for including it with
* Ardour.
*/
#include "lua/liblua_visibility.h"
#if _MSC_VER #if _MSC_VER
#pragma push_macro("_CRT_SECURE_NO_WARNINGS") # pragma push_macro("_CRT_SECURE_NO_WARNINGS")
#ifndef _CRT_SECURE_NO_WARNINGS # ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS # define _CRT_SECURE_NO_WARNINGS
#endif # endif
#elif defined(__clang__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wcast-qual"
#elif __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wcast-qual"
#endif #endif
// forward ardour's defines to luaconf.h
#ifdef PLATFORM_WINDOWS #ifdef PLATFORM_WINDOWS
# define LUA_USE_WINDOWS # define LUA_USE_WINDOWS
#elif defined __APPLE__ #elif defined __APPLE__
@ -13,6 +27,11 @@
# define LUA_USE_LINUX # define LUA_USE_LINUX
#endif #endif
// forward liblua visibility to luaconf.h
#ifdef LIBLUA_BUILD_AS_DLL
#define LUA_BUILD_AS_DLL
#endif
extern "C" extern "C"
{ {
@ -27,12 +46,14 @@ extern "C"
#undef LUA_LIB #undef LUA_LIB
// override luaconf.h symbol export // override luaconf.h symbol export
#undef LUA_API #ifdef LIBLUA_STATIC // static lib (no DLL)
#undef LUALIB_API # undef LUA_API
#undef LUAMOD_API # undef LUALIB_API
#define LUA_API extern "C" # undef LUAMOD_API
#define LUALIB_API LUA_API # define LUA_API extern "C"
#define LUAMOD_API LUALIB_API # define LUALIB_API LUA_API
# define LUAMOD_API LUALIB_API
#endif
// disable support for extenal libs // disable support for extenal libs
#undef LUA_DL_DLL #undef LUA_DL_DLL
@ -89,8 +110,12 @@ extern "C"
#pragma warning (pop) #pragma warning (pop)
#endif #endif
} } // end extern "C"
#if _MSC_VER #if _MSC_VER
#pragma pop_macro("_CRT_SECURE_NO_WARNINGS") # pragma pop_macro("_CRT_SECURE_NO_WARNINGS")
#elif defined(__clang__)
# pragma clang diagnostic pop
#elif __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
# pragma GCC diagnostic pop
#endif #endif

View file

@ -0,0 +1,35 @@
#ifndef __liblua_visibility_h__
#define __liblua_visibility_h__
#if defined(COMPILER_MSVC)
# define LIBLUA_DLL_IMPORT __declspec(dllimport)
# define LIBLUA_DLL_EXPORT __declspec(dllexport)
# define LIBLUA_DLL_LOCAL
#else
# define LIBLUA_DLL_IMPORT __attribute__ ((visibility ("default")))
# define LIBLUA_DLL_EXPORT __attribute__ ((visibility ("default")))
# define LIBLUA_DLL_LOCAL __attribute__ ((visibility ("hidden")))
#endif
#ifdef COMPILER_MSVC
// MSVC: build liblua as DLL
# define LIBLUA_BUILD_AS_DLL
#else
// others currently use a static lib (incl. with libardour)
# define LIBLUA_STATIC
#endif
#ifdef LIBLUA_STATIC
# define LIBLUA_API
#else
// define when building the DLL (instead of using it)
# ifdef LIBLUA_DLL_EXPORTS
# define LIBLUA_API LIBLUA_DLL_EXPORT
# else
# define LIBLUA_API LIBLUA_DLL_IMPORT
# endif
#endif
#endif /* __liblua_visibility_h__ */

View file

@ -22,9 +22,10 @@
#include <string> #include <string>
#include <sigc++/sigc++.h> #include <sigc++/sigc++.h>
#include "lua/liblua_visibility.h"
#include "lua/lua.h" #include "lua/lua.h"
class LuaState { class LIBLUA_API LuaState {
public: public:
LuaState(); LuaState();
LuaState(lua_State *ls); LuaState(lua_State *ls);