Setup visibility handling for librotgen components
See merge request oss/rotgen!13
This commit is contained in:
parent
cae9d2cfa6
commit
70b6770389
11 changed files with 71 additions and 27 deletions
|
|
@ -60,13 +60,17 @@ find_package (Eigen3 3.4 REQUIRED NO_MODULE)
|
||||||
##======================================================================================================================
|
##======================================================================================================================
|
||||||
## Setup the library's build
|
## Setup the library's build
|
||||||
##======================================================================================================================
|
##======================================================================================================================
|
||||||
|
if(NOT MSVC)
|
||||||
|
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
||||||
|
endif()
|
||||||
|
|
||||||
add_library(rotgen SHARED ${SOURCES})
|
add_library(rotgen SHARED ${SOURCES})
|
||||||
|
|
||||||
set_target_properties(rotgen PROPERTIES VERSION ${PROJECT_VERSION})
|
set_target_properties(rotgen PROPERTIES VERSION ${PROJECT_VERSION})
|
||||||
set_target_properties(rotgen PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR})
|
set_target_properties(rotgen PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR})
|
||||||
|
|
||||||
target_compile_options(rotgen PUBLIC -std=c++20 -Werror -Wall -Wextra -Wshadow -Wunused-variable)
|
target_compile_options(rotgen PUBLIC -std=c++20 -Werror -Wall -Wextra -Wshadow -Wunused-variable)
|
||||||
target_compile_definitions(rotgen PUBLIC ${ROTGEN_COMPILE_DEFS})
|
target_compile_definitions(rotgen PUBLIC ${ROTGEN_COMPILE_DEFS})
|
||||||
set_target_properties(rotgen PROPERTIES EXPORT_NAME rotgen)
|
|
||||||
add_library(rotgen::rotgen ALIAS rotgen)
|
add_library(rotgen::rotgen ALIAS rotgen)
|
||||||
|
|
||||||
target_include_directories(rotgen PUBLIC
|
target_include_directories(rotgen PUBLIC
|
||||||
|
|
|
||||||
40
include/rotgen/common/export.hpp
Normal file
40
include/rotgen/common/export.hpp
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
//==================================================================================================
|
||||||
|
/*
|
||||||
|
ROTGEN - Runtime Overlay for Eigen
|
||||||
|
Copyright : CODE RECKONS
|
||||||
|
SPDX-License-Identifier: BSL-1.0
|
||||||
|
*/
|
||||||
|
//==================================================================================================
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef ROTGEN_STATIC_DEFINE
|
||||||
|
# define ROTGEN_EXPORT
|
||||||
|
# define ROTGEN_NO_EXPORT
|
||||||
|
#else
|
||||||
|
# ifndef ROTGEN_EXPORT
|
||||||
|
# ifdef rotgen_EXPORTS
|
||||||
|
/* We are building this library */
|
||||||
|
# define ROTGEN_EXPORT __attribute__((visibility("default")))
|
||||||
|
# else
|
||||||
|
/* We are using this library */
|
||||||
|
# define ROTGEN_EXPORT __attribute__((visibility("default")))
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifndef ROTGEN_NO_EXPORT
|
||||||
|
# define ROTGEN_NO_EXPORT __attribute__((visibility("hidden")))
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef ROTGEN_DEPRECATED
|
||||||
|
# define ROTGEN_DEPRECATED __attribute__ ((__deprecated__))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef ROTGEN_DEPRECATED_EXPORT
|
||||||
|
# define ROTGEN_DEPRECATED_EXPORT ROTGEN_EXPORT ROTGEN_DEPRECATED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef ROTGEN_DEPRECATED_NO_EXPORT
|
||||||
|
# define ROTGEN_DEPRECATED_NO_EXPORT ROTGEN_NO_EXPORT ROTGEN_DEPRECATED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <rotgen/common/export.hpp>
|
||||||
|
|
||||||
namespace rotgen
|
namespace rotgen
|
||||||
{
|
{
|
||||||
|
|
@ -44,7 +45,7 @@ namespace rotgen
|
||||||
|
|
||||||
namespace detail
|
namespace detail
|
||||||
{
|
{
|
||||||
std::ostream& dynamic_info(std::ostream& os);
|
ROTGEN_EXPORT std::ostream& dynamic_info(std::ostream& os);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
This file is a X-File to generate various block_impl_* declarations variant
|
This file is a X-File to generate various block_impl_* declarations variant
|
||||||
*/
|
*/
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
class CLASSNAME
|
class ROTGEN_EXPORT CLASSNAME
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CLASSNAME(SOURCENAME& r, std::size_t i0, std::size_t j0, std::size_t ni, std::size_t nj);
|
CLASSNAME(SOURCENAME& r, std::size_t i0, std::size_t j0, std::size_t ni, std::size_t nj);
|
||||||
|
|
@ -72,9 +72,9 @@ class CLASSNAME
|
||||||
SOURCENAME mul(TYPE s) const;
|
SOURCENAME mul(TYPE s) const;
|
||||||
SOURCENAME div(TYPE s) const;
|
SOURCENAME div(TYPE s) const;
|
||||||
|
|
||||||
friend std::ostream& operator<<(std::ostream&,CLASSNAME const&);
|
friend ROTGEN_EXPORT std::ostream& operator<<(std::ostream&,CLASSNAME const&);
|
||||||
friend bool operator==(CLASSNAME const& lhs, CLASSNAME const& rhs);
|
friend ROTGEN_EXPORT bool operator==(CLASSNAME const& lhs, CLASSNAME const& rhs);
|
||||||
friend bool operator!=(CLASSNAME const& lhs, CLASSNAME const& rhs);
|
friend ROTGEN_EXPORT bool operator!=(CLASSNAME const& lhs, CLASSNAME const& rhs);
|
||||||
|
|
||||||
const TYPE* data() const;
|
const TYPE* data() const;
|
||||||
TYPE* data();
|
TYPE* data();
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
This file is a X-File to generate various map_impl_* declarations variant
|
This file is a X-File to generate various map_impl_* declarations variant
|
||||||
*/
|
*/
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
class CLASSNAME
|
class ROTGEN_EXPORT CLASSNAME
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CLASSNAME(TYPE CONST* ptr, Index r, Index c);
|
CLASSNAME(TYPE CONST* ptr, Index r, Index c);
|
||||||
|
|
@ -82,7 +82,7 @@ class CLASSNAME
|
||||||
SOURCENAME mul(TYPE s) const;
|
SOURCENAME mul(TYPE s) const;
|
||||||
SOURCENAME div(TYPE s) const;
|
SOURCENAME div(TYPE s) const;
|
||||||
|
|
||||||
friend std::ostream& operator<<(std::ostream&,CLASSNAME const&);
|
friend ROTGEN_EXPORT std::ostream& operator<<(std::ostream&,CLASSNAME const&);
|
||||||
const TYPE* data() const;
|
const TYPE* data() const;
|
||||||
|
|
||||||
#if !defined(USE_CONST)
|
#if !defined(USE_CONST)
|
||||||
|
|
@ -93,8 +93,8 @@ class CLASSNAME
|
||||||
void setConstant(TYPE);
|
void setConstant(TYPE);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
friend bool operator==(CLASSNAME const& lhs, CLASSNAME const& rhs);
|
friend ROTGEN_EXPORT bool operator==(CLASSNAME const& lhs, CLASSNAME const& rhs);
|
||||||
friend bool operator!=(CLASSNAME const& lhs, CLASSNAME const& rhs);
|
friend ROTGEN_EXPORT bool operator!=(CLASSNAME const& lhs, CLASSNAME const& rhs);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct payload;
|
struct payload;
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define ROTGEN_DEF_RELOP_PAIR(OP, T1, T2) \
|
#define ROTGEN_DEF_RELOP_PAIR(OP, T1, T2) \
|
||||||
bool operator OP (T1 const&, T2 const&); \
|
ROTGEN_EXPORT bool operator OP (T1 const&, T2 const&); \
|
||||||
inline bool operator OP (T2 const& a, T1 const& b) { return b OP a; } \
|
inline bool operator OP (T2 const& a, T1 const& b) { return b OP a; } \
|
||||||
/**/
|
/**/
|
||||||
|
|
||||||
|
|
@ -31,8 +31,6 @@ namespace rotgen
|
||||||
{
|
{
|
||||||
ROTGEN_DEF_RELOP(==)
|
ROTGEN_DEF_RELOP(==)
|
||||||
ROTGEN_DEF_RELOP(!=)
|
ROTGEN_DEF_RELOP(!=)
|
||||||
// ROTGEN_DEF_RELOP(+)
|
|
||||||
// ROTGEN_DEF_RELOP(-)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef ROTGEN_DEF_RELOP_PAIR
|
#undef ROTGEN_DEF_RELOP_PAIR
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
This file is a X-File to generate various matrix_impl_* declarations variant
|
This file is a X-File to generate various matrix_impl_* declarations variant
|
||||||
*/
|
*/
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
class CLASSNAME
|
class ROTGEN_EXPORT CLASSNAME
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CLASSNAME(std::size_t rows = 0, std::size_t cols = 0);
|
CLASSNAME(std::size_t rows = 0, std::size_t cols = 0);
|
||||||
|
|
@ -67,9 +67,9 @@ class CLASSNAME
|
||||||
CLASSNAME& operator*=(TYPE d);
|
CLASSNAME& operator*=(TYPE d);
|
||||||
CLASSNAME& operator/=(TYPE d);
|
CLASSNAME& operator/=(TYPE d);
|
||||||
|
|
||||||
friend std::ostream& operator<<(std::ostream&,CLASSNAME const&);
|
friend ROTGEN_EXPORT std::ostream& operator<<(std::ostream&,CLASSNAME const&);
|
||||||
friend bool operator==(CLASSNAME const& lhs, CLASSNAME const& rhs);
|
friend ROTGEN_EXPORT bool operator==(CLASSNAME const& lhs, CLASSNAME const& rhs);
|
||||||
friend bool operator!=(CLASSNAME const& lhs, CLASSNAME const& rhs);
|
friend ROTGEN_EXPORT bool operator!=(CLASSNAME const& lhs, CLASSNAME const& rhs);
|
||||||
|
|
||||||
const TYPE* data() const;
|
const TYPE* data() const;
|
||||||
TYPE* data();
|
TYPE* data();
|
||||||
|
|
|
||||||
|
|
@ -126,17 +126,17 @@ struct CLASSNAME::payload
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
// Operators
|
// Operators
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
std::ostream& operator<<(std::ostream& os,CLASSNAME const& m)
|
ROTGEN_EXPORT std::ostream& operator<<(std::ostream& os,CLASSNAME const& m)
|
||||||
{
|
{
|
||||||
return os << m.storage_->data;
|
return os << m.storage_->data;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator==(CLASSNAME const& lhs, CLASSNAME const& rhs)
|
ROTGEN_EXPORT bool operator==(CLASSNAME const& lhs, CLASSNAME const& rhs)
|
||||||
{
|
{
|
||||||
return lhs.storage_->data == rhs.storage_->data;
|
return lhs.storage_->data == rhs.storage_->data;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator!=(CLASSNAME const& lhs, CLASSNAME const& rhs)
|
ROTGEN_EXPORT bool operator!=(CLASSNAME const& lhs, CLASSNAME const& rhs)
|
||||||
{
|
{
|
||||||
return lhs.storage_->data != rhs.storage_->data;
|
return lhs.storage_->data != rhs.storage_->data;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,11 @@
|
||||||
*/
|
*/
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
#include <rotgen/config.hpp>
|
#include <rotgen/config.hpp>
|
||||||
|
#include <rotgen/common/export.hpp>
|
||||||
|
|
||||||
namespace rotgen::detail
|
namespace rotgen::detail
|
||||||
{
|
{
|
||||||
std::ostream& dynamic_info(std::ostream& os)
|
ROTGEN_EXPORT std::ostream& dynamic_info(std::ostream& os)
|
||||||
{
|
{
|
||||||
if constexpr(rotgen::is_forcing_dynamic_status) return os << "[ROTGEN] - Fully Dynamic mode" << std::endl;
|
if constexpr(rotgen::is_forcing_dynamic_status) return os << "[ROTGEN] - Fully Dynamic mode" << std::endl;
|
||||||
else return os << "[ROTGEN] - Flexible mode with" << std::endl;
|
else return os << "[ROTGEN] - Flexible mode with" << std::endl;
|
||||||
|
|
|
||||||
|
|
@ -146,17 +146,17 @@
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
// Operators
|
// Operators
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
std::ostream& operator<<(std::ostream& os,CLASSNAME const& m)
|
ROTGEN_EXPORT std::ostream& operator<<(std::ostream& os,CLASSNAME const& m)
|
||||||
{
|
{
|
||||||
return os << m.storage_->data;
|
return os << m.storage_->data;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator==(CLASSNAME const& lhs, CLASSNAME const& rhs)
|
ROTGEN_EXPORT bool operator==(CLASSNAME const& lhs, CLASSNAME const& rhs)
|
||||||
{
|
{
|
||||||
return lhs.storage_->data == rhs.storage_->data;
|
return lhs.storage_->data == rhs.storage_->data;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator!=(CLASSNAME const& lhs, CLASSNAME const& rhs)
|
ROTGEN_EXPORT bool operator!=(CLASSNAME const& lhs, CLASSNAME const& rhs)
|
||||||
{
|
{
|
||||||
return lhs.storage_->data != rhs.storage_->data;
|
return lhs.storage_->data != rhs.storage_->data;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -130,17 +130,17 @@ TYPE CLASSNAME::lp_norm(int p) const
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
// Operators
|
// Operators
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
std::ostream& operator<<(std::ostream& os,CLASSNAME const& m)
|
ROTGEN_EXPORT std::ostream& operator<<(std::ostream& os,CLASSNAME const& m)
|
||||||
{
|
{
|
||||||
return os << m.storage_->data;
|
return os << m.storage_->data;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator==(CLASSNAME const& lhs, CLASSNAME const& rhs)
|
ROTGEN_EXPORT bool operator==(CLASSNAME const& lhs, CLASSNAME const& rhs)
|
||||||
{
|
{
|
||||||
return lhs.storage_->data == rhs.storage_->data;
|
return lhs.storage_->data == rhs.storage_->data;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator!=(CLASSNAME const& lhs, CLASSNAME const& rhs)
|
ROTGEN_EXPORT bool operator!=(CLASSNAME const& lhs, CLASSNAME const& rhs)
|
||||||
{
|
{
|
||||||
return lhs.storage_->data != rhs.storage_->data;
|
return lhs.storage_->data != rhs.storage_->data;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue