Description: This patch fixes the "multiple definition of" errors with gcc10 Signed-off-by: Michael Fischer diff -purN python-rpi-gpio.org/source/common.c python-rpi-gpio/source/common.c --- python-rpi-gpio.org/source/common.c 2019-07-21 14:41:22.000000000 +0200 +++ python-rpi-gpio/source/common.c 2020-08-07 09:31:33.948575964 +0200 @@ -28,6 +28,9 @@ const int pin_to_gpio_rev1[41] = {-1, -1, -1, 0, -1, 1, -1, 4, 14, -1, 15, 17, 18, 21, -1, 22, 23, -1, 24, 10, -1, 9, 25, 11, 8, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; const int pin_to_gpio_rev2[41] = {-1, -1, -1, 2, -1, 3, -1, 4, 14, -1, 15, 17, 18, 27, -1, 22, 23, -1, 24, 10, -1, 9, 25, 11, 8, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; const int pin_to_gpio_rev3[41] = {-1, -1, -1, 2, -1, 3, -1, 4, 14, -1, 15, 17, 18, 27, -1, 22, 23, -1, 24, 10, -1, 9, 25, 11, 8, -1, 7, -1, -1, 5, -1, 6, 12, 13, -1, 19, 16, 26, 20, -1, 21 }; +const int (*pin_to_gpio)[41]; +int gpio_direction[54]; +rpi_info rpiinfo; int setup_error = 0; int module_setup = 0; diff -purN python-rpi-gpio.org/source/common.h python-rpi-gpio/source/common.h --- python-rpi-gpio.org/source/common.h 2019-07-21 14:41:22.000000000 +0200 +++ python-rpi-gpio/source/common.h 2020-08-07 09:31:33.948575964 +0200 @@ -30,14 +30,14 @@ SOFTWARE. #define I2C 42 #define PWM 43 -int gpio_mode; -const int pin_to_gpio_rev1[41]; -const int pin_to_gpio_rev2[41]; -const int pin_to_gpio_rev3[41]; -const int (*pin_to_gpio)[41]; -int gpio_direction[54]; -rpi_info rpiinfo; -int setup_error; -int module_setup; +extern int gpio_mode; +extern const int pin_to_gpio_rev1[41]; +extern const int pin_to_gpio_rev2[41]; +extern const int pin_to_gpio_rev3[41]; +extern const int (*pin_to_gpio)[41]; +extern int gpio_direction[54]; +extern rpi_info rpiinfo; +extern int setup_error; +extern int module_setup; int check_gpio_priv(void); int get_gpio_number(int channel, unsigned int *gpio); diff -purN python-rpi-gpio.org/source/constants.c python-rpi-gpio/source/constants.c --- python-rpi-gpio.org/source/constants.c 2019-07-21 14:41:22.000000000 +0200 +++ python-rpi-gpio/source/constants.c 2020-08-07 09:32:15.522196618 +0200 @@ -21,6 +21,7 @@ */ #include "Python.h" +#define CONSTANTS_C #include "constants.h" #include "common.h" #include "c_gpio.h" diff -purN python-rpi-gpio.org/source/constants.h python-rpi-gpio/source/constants.h --- python-rpi-gpio.org/source/constants.h 2019-07-21 14:41:22.000000000 +0200 +++ python-rpi-gpio/source/constants.h 2020-08-07 09:32:15.522196618 +0200 @@ -23,22 +23,28 @@ SOFTWARE. #define PY_PUD_CONST_OFFSET 20 #define PY_EVENT_CONST_OFFSET 30 -PyObject *high; -PyObject *low; -PyObject *input; -PyObject *output; -PyObject *pwm; -PyObject *serial; -PyObject *i2c; -PyObject *spi; -PyObject *unknown; -PyObject *board; -PyObject *bcm; -PyObject *pud_off; -PyObject *pud_up; -PyObject *pud_down; -PyObject *rising_edge; -PyObject *falling_edge; -PyObject *both_edge; +#ifdef CONSTANTS_C +#define MAYBE_EXTERN +#else +#define MAYBE_EXTERN extern +#endif + +MAYBE_EXTERN PyObject *high; +MAYBE_EXTERN PyObject *low; +MAYBE_EXTERN PyObject *input; +MAYBE_EXTERN PyObject *output; +MAYBE_EXTERN PyObject *pwm; +MAYBE_EXTERN PyObject *serial; +MAYBE_EXTERN PyObject *i2c; +MAYBE_EXTERN PyObject *spi; +MAYBE_EXTERN PyObject *unknown; +MAYBE_EXTERN PyObject *board; +MAYBE_EXTERN PyObject *bcm; +MAYBE_EXTERN PyObject *pud_off; +MAYBE_EXTERN PyObject *pud_up; +MAYBE_EXTERN PyObject *pud_down; +MAYBE_EXTERN PyObject *rising_edge; +MAYBE_EXTERN PyObject *falling_edge; +MAYBE_EXTERN PyObject *both_edge; void define_constants(PyObject *module); diff -purN python-rpi-gpio.org/source/event_gpio.c python-rpi-gpio/source/event_gpio.c --- python-rpi-gpio.org/source/event_gpio.c 2019-07-21 14:41:22.000000000 +0200 +++ python-rpi-gpio/source/event_gpio.c 2020-08-07 09:42:05.564483136 +0200 @@ -57,7 +57,7 @@ struct callback }; struct callback *callbacks = NULL; -pthread_t threads; +static pthread_t threads; int event_occurred[54] = { 0 }; int thread_running = 0; int epfd_thread = -1; diff -purN python-rpi-gpio.org/source/py_pwm.h python-rpi-gpio/source/py_pwm.h --- python-rpi-gpio.org/source/py_pwm.h 2019-07-21 14:41:22.000000000 +0200 +++ python-rpi-gpio/source/py_pwm.h 2020-08-07 09:38:49.445646807 +0200 @@ -20,5 +20,5 @@ OUT OF OR IN CONNECTION WITH THE SOFTWAR SOFTWARE. */ -PyTypeObject PWMType; +extern PyTypeObject PWMType; PyTypeObject *PWM_init_PWMType(void); diff -purN python-rpi-gpio.org/source/soft_pwm.c python-rpi-gpio/source/soft_pwm.c --- python-rpi-gpio.org/source/soft_pwm.c 2019-07-21 14:41:22.000000000 +0200 +++ python-rpi-gpio/source/soft_pwm.c 2020-08-07 09:42:40.753160437 +0200 @@ -25,7 +25,7 @@ SOFTWARE. #include #include "c_gpio.h" #include "soft_pwm.h" -pthread_t threads; +static pthread_t threads; struct pwm { diff -purN python-rpi-gpio.org/source/soft_pwm.h python-rpi-gpio/source/soft_pwm.h --- python-rpi-gpio.org/source/soft_pwm.h 2019-07-21 14:41:22.000000000 +0200 +++ python-rpi-gpio/source/soft_pwm.h 2020-08-07 09:39:25.916811352 +0200 @@ -26,4 +26,4 @@ void pwm_set_duty_cycle(unsigned int gpi void pwm_set_frequency(unsigned int gpio, float freq); void pwm_start(unsigned int gpio); void pwm_stop(unsigned int gpio); -int pwm_exists(unsigned int gpio); +extern int pwm_exists(unsigned int gpio);