Compare commits

..

2 Commits

Author SHA1 Message Date
ce8386799b external renderer: Rename FUNC_DECL to EXPORTED_FUNC_DECL to show that it also exports a function 2019-11-18 21:59:42 +01:00
374e3b54c0 plugins: example plugin: Make all functions invisible except for the explicitly exported ones
* Add target parameters to compile all symbols invisible to the outside by default.
* Edit FUNC_DECL() macro to set attribute that exports the function
2019-11-18 21:56:22 +01:00
3 changed files with 13 additions and 5 deletions

View File

@ -13,6 +13,11 @@
* @{
*/
/**
* @brief This define is used to export a function from a shared object
*/
#define EXPORT_FUNC __attribute__((visibility("default")))
/**
* @brief Function name expected to be found in external library for rendering.
*
@ -37,14 +42,15 @@
*
* The pure presence of this symbol name causes forking. The content of this variable is don't care.
* @note Use this if you mess with the internal structures of gds-render
*
*/
#define EXTERNAL_LIBRARY_FORK_REQUEST exported_fork_request
/**
* @brief Define for declaring the exported functions
* @brief Define for declaring the exported functions.
*
* This not only helps with the declaration but also makes the symbols visible, so they can be called form outside the library
*/
#define FUNC_DECL(FUNC) FUNC
#define EXPORTED_FUNC_DECL(FUNC) EXPORT_FUNC FUNC
/** @} */

View File

@ -10,3 +10,5 @@ link_libraries(${PYTHON_LDFLAGS} version)
add_library(${PROJECT_NAME} SHARED EXCLUDE_FROM_ALL ${SOURCES})
add_dependencies(${PROJECT_NAME} version)
set_target_properties(${PROJECT_NAME} PROPERTIES C_VISIBILITY_PRESET hidden)
set_target_properties(${PROJECT_NAME} PROPERTIES CXX_VISIBILITY_PRESET hidden)

View File

@ -31,7 +31,7 @@
#include <gds-render/gds-utils/gds-types.h>
#include <gds-render/output-renderers/external-renderer-interfaces.h>
int FUNC_DECL(EXTERNAL_LIBRARY_RENDER_FUNCTION)(struct gds_cell *toplevel, GList *layer_info_list, const char *output_file_name, double scale)
int EXPORTED_FUNC_DECL(EXTERNAL_LIBRARY_RENDER_FUNCTION)(struct gds_cell *toplevel, GList *layer_info_list, const char *output_file_name, double scale)
{
if (!toplevel)
return -1000;
@ -40,7 +40,7 @@ int FUNC_DECL(EXTERNAL_LIBRARY_RENDER_FUNCTION)(struct gds_cell *toplevel, GList
return 0;
}
int FUNC_DECL(EXTERNAL_LIBRARY_INIT_FUNCTION)(const char *params, const char *version)
int EXPORTED_FUNC_DECL(EXTERNAL_LIBRARY_INIT_FUNCTION)(const char *params, const char *version)
{
printf("Init with params: %s\ngds-render version: %s\n", params, version);
return 0;