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. * @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. * 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 * @note Use this if you mess with the internal structures of gds-render
*
*/ */
#define EXTERNAL_LIBRARY_FORK_REQUEST exported_fork_request #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_library(${PROJECT_NAME} SHARED EXCLUDE_FROM_ALL ${SOURCES})
add_dependencies(${PROJECT_NAME} version) 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/gds-utils/gds-types.h>
#include <gds-render/output-renderers/external-renderer-interfaces.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) if (!toplevel)
return -1000; return -1000;
@ -40,7 +40,7 @@ int FUNC_DECL(EXTERNAL_LIBRARY_RENDER_FUNCTION)(struct gds_cell *toplevel, GList
return 0; 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); printf("Init with params: %s\ngds-render version: %s\n", params, version);
return 0; return 0;