Compare commits
6 Commits
447d583103
...
246695610c
Author | SHA1 | Date | |
---|---|---|---|
246695610c | |||
bd4d91807b | |||
ce8386799b | |||
374e3b54c0 | |||
2aa1fffa8e | |||
3651296c3a |
@ -13,6 +13,16 @@
|
|||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief This define is used to export a function from a shared object
|
||||||
|
*/
|
||||||
|
#define EXPORT_FUNC __attribute__((visibility("default")))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief This define is used to export a variable symbol from a shared object
|
||||||
|
*/
|
||||||
|
#define EXPORT_VAR EXPORT_FUNC
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Function name expected to be found in external library for rendering.
|
* @brief Function name expected to be found in external library for rendering.
|
||||||
*
|
*
|
||||||
@ -46,14 +56,22 @@
|
|||||||
*
|
*
|
||||||
* 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
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Define for declaring exported variables
|
||||||
|
*
|
||||||
|
* This not only helps with the declaration but also makes the symbols visible, so they can be accessed form outside the library
|
||||||
|
*/
|
||||||
|
#define EXPORTED_VAR_DECL(VAR) EXPORT_VAR VAR
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
|
@ -9,3 +9,5 @@ link_libraries(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)
|
||||||
|
@ -30,7 +30,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;
|
||||||
@ -39,13 +39,13 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
int FUNC_DECL(EXTERNAL_LIBRARY_FINALIZE_FUNCTION)(void)
|
int EXPORTED_FUNC_DECL(EXTERNAL_LIBRARY_FINALIZE_FUNCTION)(void)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
37
plugins/python-renderer/src/force-fork.c
Normal file
37
plugins/python-renderer/src/force-fork.c
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* GDSII-Converter Python Plugin
|
||||||
|
* Copyright (C) 2019 Mario Hüttel <mario.huettel@gmx.net>
|
||||||
|
*
|
||||||
|
* This file is part of GDSII-Converter.
|
||||||
|
*
|
||||||
|
* GDSII-Converter is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* GDSII-Converter is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file python-renderer/force-fork.c
|
||||||
|
* @author Mario Hüttel <mario.huettel@gmx.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @addtogroup python-plugin
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <gds-render/output-renderers/external-renderer-interfaces.h>
|
||||||
|
|
||||||
|
/* The precense of this variable tells the gds-render application to execute this plugin in a separate process
|
||||||
|
* The variable's value is don't care
|
||||||
|
*/
|
||||||
|
const int EXPORTED_VAR_DECL(EXTERNAL_LIBRARY_FORK_REQUEST) = 1;
|
||||||
|
|
||||||
|
/** @} */
|
@ -47,7 +47,7 @@
|
|||||||
*/
|
*/
|
||||||
static PyObject *p_module = NULL;
|
static PyObject *p_module = NULL;
|
||||||
|
|
||||||
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)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
PyObject *p_render_func;
|
PyObject *p_render_func;
|
||||||
@ -83,7 +83,7 @@ return_value:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
PyObject *p_name;
|
PyObject *p_name;
|
||||||
@ -157,7 +157,7 @@ return_value:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int FUNC_DECL(EXTERNAL_LIBRARY_FINALIZE_FUNCTION)(void)
|
int EXPORTED_FUNC_DECL(EXTERNAL_LIBRARY_FINALIZE_FUNCTION)(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user