0001-fix-build-with-gcc-10.x.patch 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. Description: This patch fixes the "multiple definition of" errors with gcc10
  2. Signed-off-by: Michael Fischer <mf@go-sys.de>
  3. diff -purN python-rpi-gpio.org/source/common.c python-rpi-gpio/source/common.c
  4. --- python-rpi-gpio.org/source/common.c 2019-07-21 14:41:22.000000000 +0200
  5. +++ python-rpi-gpio/source/common.c 2020-08-07 09:31:33.948575964 +0200
  6. @@ -28,6 +28,9 @@
  7. 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 };
  8. 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 };
  9. 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 };
  10. +const int (*pin_to_gpio)[41];
  11. +int gpio_direction[54];
  12. +rpi_info rpiinfo;
  13. int setup_error = 0;
  14. int module_setup = 0;
  15. diff -purN python-rpi-gpio.org/source/common.h python-rpi-gpio/source/common.h
  16. --- python-rpi-gpio.org/source/common.h 2019-07-21 14:41:22.000000000 +0200
  17. +++ python-rpi-gpio/source/common.h 2020-08-07 09:31:33.948575964 +0200
  18. @@ -30,14 +30,14 @@ SOFTWARE.
  19. #define I2C 42
  20. #define PWM 43
  21. -int gpio_mode;
  22. -const int pin_to_gpio_rev1[41];
  23. -const int pin_to_gpio_rev2[41];
  24. -const int pin_to_gpio_rev3[41];
  25. -const int (*pin_to_gpio)[41];
  26. -int gpio_direction[54];
  27. -rpi_info rpiinfo;
  28. -int setup_error;
  29. -int module_setup;
  30. +extern int gpio_mode;
  31. +extern const int pin_to_gpio_rev1[41];
  32. +extern const int pin_to_gpio_rev2[41];
  33. +extern const int pin_to_gpio_rev3[41];
  34. +extern const int (*pin_to_gpio)[41];
  35. +extern int gpio_direction[54];
  36. +extern rpi_info rpiinfo;
  37. +extern int setup_error;
  38. +extern int module_setup;
  39. int check_gpio_priv(void);
  40. int get_gpio_number(int channel, unsigned int *gpio);
  41. diff -purN python-rpi-gpio.org/source/constants.c python-rpi-gpio/source/constants.c
  42. --- python-rpi-gpio.org/source/constants.c 2019-07-21 14:41:22.000000000 +0200
  43. +++ python-rpi-gpio/source/constants.c 2020-08-07 09:32:15.522196618 +0200
  44. @@ -21,6 +21,7 @@
  45. */
  46. #include "Python.h"
  47. +#define CONSTANTS_C
  48. #include "constants.h"
  49. #include "common.h"
  50. #include "c_gpio.h"
  51. diff -purN python-rpi-gpio.org/source/constants.h python-rpi-gpio/source/constants.h
  52. --- python-rpi-gpio.org/source/constants.h 2019-07-21 14:41:22.000000000 +0200
  53. +++ python-rpi-gpio/source/constants.h 2020-08-07 09:32:15.522196618 +0200
  54. @@ -23,22 +23,28 @@ SOFTWARE.
  55. #define PY_PUD_CONST_OFFSET 20
  56. #define PY_EVENT_CONST_OFFSET 30
  57. -PyObject *high;
  58. -PyObject *low;
  59. -PyObject *input;
  60. -PyObject *output;
  61. -PyObject *pwm;
  62. -PyObject *serial;
  63. -PyObject *i2c;
  64. -PyObject *spi;
  65. -PyObject *unknown;
  66. -PyObject *board;
  67. -PyObject *bcm;
  68. -PyObject *pud_off;
  69. -PyObject *pud_up;
  70. -PyObject *pud_down;
  71. -PyObject *rising_edge;
  72. -PyObject *falling_edge;
  73. -PyObject *both_edge;
  74. +#ifdef CONSTANTS_C
  75. +#define MAYBE_EXTERN
  76. +#else
  77. +#define MAYBE_EXTERN extern
  78. +#endif
  79. +
  80. +MAYBE_EXTERN PyObject *high;
  81. +MAYBE_EXTERN PyObject *low;
  82. +MAYBE_EXTERN PyObject *input;
  83. +MAYBE_EXTERN PyObject *output;
  84. +MAYBE_EXTERN PyObject *pwm;
  85. +MAYBE_EXTERN PyObject *serial;
  86. +MAYBE_EXTERN PyObject *i2c;
  87. +MAYBE_EXTERN PyObject *spi;
  88. +MAYBE_EXTERN PyObject *unknown;
  89. +MAYBE_EXTERN PyObject *board;
  90. +MAYBE_EXTERN PyObject *bcm;
  91. +MAYBE_EXTERN PyObject *pud_off;
  92. +MAYBE_EXTERN PyObject *pud_up;
  93. +MAYBE_EXTERN PyObject *pud_down;
  94. +MAYBE_EXTERN PyObject *rising_edge;
  95. +MAYBE_EXTERN PyObject *falling_edge;
  96. +MAYBE_EXTERN PyObject *both_edge;
  97. void define_constants(PyObject *module);
  98. diff -purN python-rpi-gpio.org/source/event_gpio.c python-rpi-gpio/source/event_gpio.c
  99. --- python-rpi-gpio.org/source/event_gpio.c 2019-07-21 14:41:22.000000000 +0200
  100. +++ python-rpi-gpio/source/event_gpio.c 2020-08-07 09:42:05.564483136 +0200
  101. @@ -57,7 +57,7 @@ struct callback
  102. };
  103. struct callback *callbacks = NULL;
  104. -pthread_t threads;
  105. +static pthread_t threads;
  106. int event_occurred[54] = { 0 };
  107. int thread_running = 0;
  108. int epfd_thread = -1;
  109. diff -purN python-rpi-gpio.org/source/py_pwm.h python-rpi-gpio/source/py_pwm.h
  110. --- python-rpi-gpio.org/source/py_pwm.h 2019-07-21 14:41:22.000000000 +0200
  111. +++ python-rpi-gpio/source/py_pwm.h 2020-08-07 09:38:49.445646807 +0200
  112. @@ -20,5 +20,5 @@ OUT OF OR IN CONNECTION WITH THE SOFTWAR
  113. SOFTWARE.
  114. */
  115. -PyTypeObject PWMType;
  116. +extern PyTypeObject PWMType;
  117. PyTypeObject *PWM_init_PWMType(void);
  118. diff -purN python-rpi-gpio.org/source/soft_pwm.c python-rpi-gpio/source/soft_pwm.c
  119. --- python-rpi-gpio.org/source/soft_pwm.c 2019-07-21 14:41:22.000000000 +0200
  120. +++ python-rpi-gpio/source/soft_pwm.c 2020-08-07 09:42:40.753160437 +0200
  121. @@ -25,7 +25,7 @@ SOFTWARE.
  122. #include <time.h>
  123. #include "c_gpio.h"
  124. #include "soft_pwm.h"
  125. -pthread_t threads;
  126. +static pthread_t threads;
  127. struct pwm
  128. {
  129. diff -purN python-rpi-gpio.org/source/soft_pwm.h python-rpi-gpio/source/soft_pwm.h
  130. --- python-rpi-gpio.org/source/soft_pwm.h 2019-07-21 14:41:22.000000000 +0200
  131. +++ python-rpi-gpio/source/soft_pwm.h 2020-08-07 09:39:25.916811352 +0200
  132. @@ -26,4 +26,4 @@ void pwm_set_duty_cycle(unsigned int gpi
  133. void pwm_set_frequency(unsigned int gpio, float freq);
  134. void pwm_start(unsigned int gpio);
  135. void pwm_stop(unsigned int gpio);
  136. -int pwm_exists(unsigned int gpio);
  137. +extern int pwm_exists(unsigned int gpio);