Makefile 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. DIR_Config = ./lib/Config
  2. DIR_EPD = ./lib/e-Paper
  3. DIR_FONTS = ./lib/Fonts
  4. DIR_GUI = ./lib/GUI
  5. DIR_Examples = ./examples
  6. DIR_BIN = ./bin
  7. EPD = NULL
  8. ifeq ($(EPD), epd1in64g)
  9. OBJ_C_EPD = ${DIR_EPD}/EPD_1in64g.c
  10. OBJ_C_Examples = ${DIR_Examples}/EPD_1in64g_test.c
  11. else ifeq ($(EPD), epd2in36g)
  12. OBJ_C_EPD = ${DIR_EPD}/EPD_2in36g.c
  13. OBJ_C_Examples = ${DIR_Examples}/EPD_2in36g_test.c
  14. else ifeq ($(EPD), epd3in0g)
  15. OBJ_C_EPD = ${DIR_EPD}/EPD_3in0g.c
  16. OBJ_C_Examples = ${DIR_Examples}/EPD_3in0g_test.c
  17. else ifeq ($(EPD), epd4in37g)
  18. OBJ_C_EPD = ${DIR_EPD}/EPD_4in37g.c
  19. OBJ_C_Examples = ${DIR_Examples}/EPD_4in37g_test.c
  20. else ifeq ($(EPD), epd7in3g)
  21. OBJ_C_EPD = ${DIR_EPD}/EPD_7in3g.c
  22. OBJ_C_Examples = ${DIR_Examples}/EPD_7in3g_test.c
  23. else ifeq ($(EPD), epd1in54des)
  24. OBJ_C_EPD = ${DIR_EPD}/EPD_1in54_DES.c
  25. OBJ_C_Examples = ${DIR_Examples}/EPD_1in54_DES_test.c
  26. else ifeq ($(EPD), epd2in13des)
  27. OBJ_C_EPD = ${DIR_EPD}/EPD_2in13_DES.c
  28. OBJ_C_Examples = ${DIR_Examples}/EPD_2in13_DES_test.c
  29. else ifeq ($(EPD), epd2in9des)
  30. OBJ_C_EPD = ${DIR_EPD}/EPD_2in9_DES.c
  31. OBJ_C_Examples = ${DIR_Examples}/EPD_2in9_DES_test.c
  32. else ifeq ($(EPD), epd1in02d)
  33. OBJ_C_EPD = ${DIR_EPD}/EPD_1in02d.c
  34. OBJ_C_Examples = ${DIR_Examples}/EPD_1in02d_test.c
  35. else ifeq ($(EPD), epd1in54)
  36. OBJ_C_EPD = ${DIR_EPD}/EPD_1in54.c
  37. OBJ_C_Examples = ${DIR_Examples}/EPD_1in54_test.c
  38. else ifeq ($(EPD), epd1in54V2)
  39. OBJ_C_EPD = ${DIR_EPD}/EPD_1in54_V2.c
  40. OBJ_C_Examples = ${DIR_Examples}/EPD_1in54_V2_test.c
  41. else ifeq ($(EPD), epd1in54b)
  42. OBJ_C_EPD = ${DIR_EPD}/EPD_1in54b.c
  43. OBJ_C_Examples = ${DIR_Examples}/EPD_1in54b_test.c
  44. else ifeq ($(EPD), epd1in54bV2)
  45. OBJ_C_EPD = ${DIR_EPD}/EPD_1in54b_V2.c
  46. OBJ_C_Examples = ${DIR_Examples}/EPD_1in54b_V2_test.c
  47. else ifeq ($(EPD), epd1in54c)
  48. OBJ_C_EPD = ${DIR_EPD}/EPD_1in54c.c
  49. OBJ_C_Examples = ${DIR_Examples}/EPD_1in54c_test.c
  50. else ifeq ($(EPD), epd2in66)
  51. OBJ_C_EPD = ${DIR_EPD}/EPD_2in66.c
  52. OBJ_C_Examples = ${DIR_Examples}/EPD_2in66_test.c
  53. else ifeq ($(EPD), epd2in66b)
  54. OBJ_C_EPD = ${DIR_EPD}/EPD_2in66b.c
  55. OBJ_C_Examples = ${DIR_Examples}/EPD_2in66b_test.c
  56. else ifeq ($(EPD), epd2in7)
  57. OBJ_C_EPD = ${DIR_EPD}/EPD_2in7.c
  58. OBJ_C_Examples = ${DIR_Examples}/EPD_2in7_test.c
  59. else ifeq ($(EPD), epd2in7V2)
  60. OBJ_C_EPD = ${DIR_EPD}/EPD_2in7_V2.c
  61. OBJ_C_Examples = ${DIR_Examples}/EPD_2in7_V2_test.c
  62. else ifeq ($(EPD), epd2in7b)
  63. OBJ_C_EPD = ${DIR_EPD}/EPD_2in7b.c
  64. OBJ_C_Examples = ${DIR_Examples}/EPD_2in7b_test.c
  65. else ifeq ($(EPD), epd2in7bV2)
  66. OBJ_C_EPD = ${DIR_EPD}/EPD_2in7b_V2.c
  67. OBJ_C_Examples = ${DIR_Examples}/EPD_2in7b_V2_test.c
  68. else ifeq ($(EPD), epd2in9)
  69. OBJ_C_EPD = ${DIR_EPD}/EPD_2in9.c
  70. OBJ_C_Examples = ${DIR_Examples}/EPD_2in9_test.c
  71. else ifeq ($(EPD), epd2in9V2)
  72. OBJ_C_EPD = ${DIR_EPD}/EPD_2in9_V2.c
  73. OBJ_C_Examples = ${DIR_Examples}/EPD_2in9_V2_test.c
  74. else ifeq ($(EPD), epd2in9bc)
  75. OBJ_C_EPD = ${DIR_EPD}/EPD_2in9bc.c
  76. OBJ_C_Examples = ${DIR_Examples}/EPD_2in9bc_test.c
  77. else ifeq ($(EPD), epd2in9bV3)
  78. OBJ_C_EPD = ${DIR_EPD}/EPD_2in9b_V3.c
  79. OBJ_C_Examples = ${DIR_Examples}/EPD_2in9b_V3_test.c
  80. else ifeq ($(EPD), epd2in9d)
  81. OBJ_C_EPD = ${DIR_EPD}/EPD_2in9d.c
  82. OBJ_C_Examples = ${DIR_Examples}/EPD_2in9d_test.c
  83. else ifeq ($(EPD), epd2in13)
  84. OBJ_C_EPD = ${DIR_EPD}/EPD_2in13.c
  85. OBJ_C_Examples = ${DIR_Examples}/EPD_2in13_test.c
  86. else ifeq ($(EPD), epd2in13V2)
  87. OBJ_C_EPD = ${DIR_EPD}/EPD_2in13_V2.c
  88. OBJ_C_Examples = ${DIR_Examples}/EPD_2in13_V2_test.c
  89. else ifeq ($(EPD), epd2in13V3)
  90. OBJ_C_EPD = ${DIR_EPD}/EPD_2in13_V3.c
  91. OBJ_C_Examples = ${DIR_Examples}/EPD_2in13_V3_test.c
  92. else ifeq ($(EPD), epd2in13V4)
  93. OBJ_C_EPD = ${DIR_EPD}/EPD_2in13_V4.c
  94. OBJ_C_Examples = ${DIR_Examples}/EPD_2in13_V4_test.c
  95. else ifeq ($(EPD), epd2in13bc)
  96. OBJ_C_EPD = ${DIR_EPD}/EPD_2in13bc.c
  97. OBJ_C_Examples = ${DIR_Examples}/EPD_2in13bc_test.c
  98. else ifeq ($(EPD), epd2in13bV3)
  99. OBJ_C_EPD = ${DIR_EPD}/EPD_2in13b_V3.c
  100. OBJ_C_Examples = ${DIR_Examples}/EPD_2in13b_V3_test.c
  101. else ifeq ($(EPD), epd2in13bV4)
  102. OBJ_C_EPD = ${DIR_EPD}/EPD_2in13b_V4.c
  103. OBJ_C_Examples = ${DIR_Examples}/EPD_2in13b_V4_test.c
  104. else ifeq ($(EPD), epd2in13d)
  105. OBJ_C_EPD = ${DIR_EPD}/EPD_2in13d.c
  106. OBJ_C_Examples = ${DIR_Examples}/EPD_2in13d_test.c
  107. else ifeq ($(EPD), epd2in13g)
  108. OBJ_C_EPD = ${DIR_EPD}/EPD_2in13g.c
  109. OBJ_C_Examples = ${DIR_Examples}/EPD_2in13g_test.c
  110. else ifeq ($(EPD), epd3in52)
  111. OBJ_C_EPD = ${DIR_EPD}/EPD_3in52.c
  112. OBJ_C_Examples = ${DIR_Examples}/EPD_3in52_test.c
  113. else ifeq ($(EPD), epd3in7)
  114. OBJ_C_EPD = ${DIR_EPD}/EPD_3in7.c
  115. OBJ_C_Examples = ${DIR_Examples}/EPD_3in7_test.c
  116. else ifeq ($(EPD), epd4in01f)
  117. OBJ_C_EPD = ${DIR_EPD}/EPD_4in01f.c
  118. OBJ_C_Examples = ${DIR_Examples}/EPD_4in01f_test.c
  119. else ifeq ($(EPD), epd4in2)
  120. OBJ_C_EPD = ${DIR_EPD}/EPD_4in2.c
  121. OBJ_C_Examples = ${DIR_Examples}/EPD_4in2_test.c
  122. else ifeq ($(EPD), epd4in2V2)
  123. OBJ_C_EPD = ${DIR_EPD}/EPD_4in2_V2.c
  124. OBJ_C_Examples = ${DIR_Examples}/EPD_4in2_V2_test.c
  125. else ifeq ($(EPD), epd4in2bc)
  126. OBJ_C_EPD = ${DIR_EPD}/EPD_4in2bc.c
  127. OBJ_C_Examples = ${DIR_Examples}/EPD_4in2bc_test.c
  128. else ifeq ($(EPD), epd4in2bV2)
  129. OBJ_C_EPD = ${DIR_EPD}/EPD_4in2b_V2.c
  130. OBJ_C_Examples = ${DIR_Examples}/EPD_4in2b_V2_test.c
  131. else ifeq ($(EPD), epd4in37b)
  132. OBJ_C_EPD = ${DIR_EPD}/EPD_4in37b.c
  133. OBJ_C_Examples = ${DIR_Examples}/EPD_4in37b_test.c
  134. else ifeq ($(EPD), epd5in65f)
  135. OBJ_C_EPD = ${DIR_EPD}/EPD_5in65f.c
  136. OBJ_C_Examples = ${DIR_Examples}/EPD_5in65f_test.c
  137. else ifeq ($(EPD), epd5in83)
  138. OBJ_C_EPD = ${DIR_EPD}/EPD_5in83.c
  139. OBJ_C_Examples = ${DIR_Examples}/EPD_5in83_test.c
  140. else ifeq ($(EPD), epd5in83V2)
  141. OBJ_C_EPD = ${DIR_EPD}/EPD_5in83_V2.c
  142. OBJ_C_Examples = ${DIR_Examples}/EPD_5in83_V2_test.c
  143. else ifeq ($(EPD), epd5in83bc)
  144. OBJ_C_EPD = ${DIR_EPD}/EPD_5in83bc.c
  145. OBJ_C_Examples = ${DIR_Examples}/EPD_5in83bc_test.c
  146. else ifeq ($(EPD), epd5in83bV2)
  147. OBJ_C_EPD = ${DIR_EPD}/EPD_5in83b_V2.c
  148. OBJ_C_Examples = ${DIR_Examples}/EPD_5in83b_V2_test.c
  149. else ifeq ($(EPD), epd5in84)
  150. OBJ_C_EPD = ${DIR_EPD}/EPD_5in84.c
  151. OBJ_C_Examples = ${DIR_Examples}/EPD_5in84_test.c
  152. else ifeq ($(EPD), epd7in3f)
  153. OBJ_C_EPD = ${DIR_EPD}/EPD_7in3f.c
  154. OBJ_C_Examples = ${DIR_Examples}/EPD_7in3f_test.c
  155. else ifeq ($(EPD), epd7in5)
  156. OBJ_C_EPD = ${DIR_EPD}/EPD_7in5.c
  157. OBJ_C_Examples = ${DIR_Examples}/EPD_7in5_test.c
  158. else ifeq ($(EPD), epd7in5V2)
  159. OBJ_C_EPD = ${DIR_EPD}/EPD_7in5_V2.c
  160. OBJ_C_Examples = ${DIR_Examples}/EPD_7in5_V2_test.c
  161. else ifeq ($(EPD), epd7in5bc)
  162. OBJ_C_EPD = ${DIR_EPD}/EPD_7in5bc.c
  163. OBJ_C_Examples = ${DIR_Examples}/EPD_7in5bc_test.c
  164. else ifeq ($(EPD), epd7in5bV2)
  165. OBJ_C_EPD = ${DIR_EPD}/EPD_7in5b_V2.c
  166. OBJ_C_Examples = ${DIR_Examples}/EPD_7in5b_V2_test.c
  167. else ifeq ($(EPD), epd7in5HD)
  168. OBJ_C_EPD = ${DIR_EPD}/EPD_7in5_HD.c
  169. OBJ_C_Examples = ${DIR_Examples}/EPD_7in5_HD_test.c
  170. else ifeq ($(EPD), epd7in5bHD)
  171. OBJ_C_EPD = ${DIR_EPD}/EPD_7in5b_HD.c
  172. OBJ_C_Examples = ${DIR_Examples}/EPD_7in5b_HD_test.c
  173. else ifeq ($(EPD), epd10in2b)
  174. OBJ_C_EPD = ${DIR_EPD}/EPD_10in2b.c
  175. OBJ_C_Examples = ${DIR_Examples}/EPD_10in2b_test.c
  176. else ifeq ($(EPD), epd13in3k)
  177. OBJ_C_EPD = ${DIR_EPD}/EPD_13in3k.c
  178. OBJ_C_Examples = ${DIR_Examples}/EPD_13in3k_test.c
  179. else
  180. OBJ_C_EPD = NULL
  181. OBJ_C_Examples = NULL
  182. endif
  183. OBJ_C = $(wildcard ${OBJ_C_EPD} ${DIR_GUI}/*.c ${OBJ_C_Examples} ${DIR_Examples}/main.c ${DIR_Examples}/ImageData2.c ${DIR_Examples}/ImageData.c ${DIR_FONTS}/*.c )
  184. OBJ_O = $(patsubst %.c,${DIR_BIN}/%.o,$(notdir ${OBJ_C}))
  185. RPI_DEV_C = $(wildcard $(DIR_BIN)/dev_hardware_SPI.o $(DIR_BIN)/RPI_gpiod.o $(DIR_BIN)/DEV_Config.o )
  186. JETSON_DEV_C = $(wildcard $(DIR_BIN)/sysfs_software_spi.o $(DIR_BIN)/sysfs_gpio.o $(DIR_BIN)/DEV_Config.o )
  187. DEBUG = -D DEBUG
  188. # USELIB_RPI = USE_BCM2835_LIB
  189. # USELIB_RPI = USE_WIRINGPI_LIB
  190. USELIB_RPI = USE_DEV_LIB
  191. LIB_RPI=-Wl,--gc-sections
  192. ifeq ($(USELIB_RPI), USE_BCM2835_LIB)
  193. LIB_RPI += -lbcm2835 -lm
  194. else ifeq ($(USELIB_RPI), USE_WIRINGPI_LIB)
  195. LIB_RPI += -lwiringPi -lm
  196. else ifeq ($(USELIB_RPI), USE_DEV_LIB)
  197. LIB_RPI += -lgpiod -lm
  198. endif
  199. DEBUG_RPI = -D $(USELIB_RPI) -D RPI
  200. USELIB_JETSONI = USE_DEV_LIB
  201. # USELIB_JETSONI = USE_HARDWARE_LIB
  202. ifeq ($(USELIB_JETSONI), USE_DEV_LIB)
  203. LIB_JETSONI = -lm
  204. else ifeq ($(USELIB_JETSONI), USE_HARDWARE_LIB)
  205. LIB_JETSONI = -lm
  206. endif
  207. DEBUG_JETSONI = -D $(USELIB_JETSONI) -D JETSON
  208. .PHONY : RPI JETSON clean
  209. RPI:RPI_DEV RPI_epd
  210. JETSON: JETSON_DEV JETSON_epd
  211. TARGET = epd
  212. CC = gcc
  213. MSG = -g -O -ffunction-sections -fdata-sections -Wall
  214. CFLAGS += $(MSG) -D $(EPD)
  215. RPI_epd:${OBJ_O}
  216. echo $(@)
  217. $(CC) $(CFLAGS) -D RPI $(OBJ_O) $(RPI_DEV_C) -o $(TARGET) $(LIB_RPI) $(DEBUG)
  218. JETSON_epd:${OBJ_O}
  219. echo $(@)
  220. $(CC) $(CFLAGS) $(OBJ_O) $(JETSON_DEV_C) -o $(TARGET) $(LIB_JETSONI) $(DEBUG)
  221. $(shell mkdir -p $(DIR_BIN))
  222. ${DIR_BIN}/%.o:$(DIR_Examples)/%.c
  223. $(CC) $(CFLAGS) -c $< -o $@ -I $(DIR_Config) -I $(DIR_GUI) -I $(DIR_EPD) $(DEBUG)
  224. ${DIR_BIN}/%.o:$(DIR_EPD)/%.c
  225. $(CC) $(CFLAGS) -c $< -o $@ -I $(DIR_Config) $(DEBUG)
  226. ${DIR_BIN}/%.o:$(DIR_FONTS)/%.c
  227. $(CC) $(CFLAGS) -c $< -o $@ $(DEBUG)
  228. ${DIR_BIN}/%.o:$(DIR_GUI)/%.c
  229. $(CC) $(CFLAGS) -c $< -o $@ -I $(DIR_Config) $(DEBUG)
  230. RPI_DEV:
  231. $(CC) $(CFLAGS) $(DEBUG_RPI) -c $(DIR_Config)/dev_hardware_SPI.c -o $(DIR_BIN)/dev_hardware_SPI.o $(LIB_RPI) $(DEBUG)
  232. $(CC) $(CFLAGS) $(DEBUG_RPI) -c $(DIR_Config)/RPI_gpiod.c -o $(DIR_BIN)/RPI_gpiod.o $(LIB_RPI) $(DEBUG)
  233. $(CC) $(CFLAGS) $(DEBUG_RPI) -c $(DIR_Config)/DEV_Config.c -o $(DIR_BIN)/DEV_Config.o $(LIB_RPI) $(DEBUG)
  234. JETSON_DEV:
  235. $(CC) $(CFLAGS) $(DEBUG_JETSONI) -c $(DIR_Config)/sysfs_software_spi.c -o $(DIR_BIN)/sysfs_software_spi.o $(LIB_JETSONI) $(DEBUG)
  236. $(CC) $(CFLAGS) $(DEBUG_JETSONI) -c $(DIR_Config)/sysfs_gpio.c -o $(DIR_BIN)/sysfs_gpio.o $(LIB_JETSONI) $(DEBUG)
  237. $(CC) $(CFLAGS) $(DEBUG_JETSONI) -c $(DIR_Config)/DEV_Config.c -o $(DIR_BIN)/DEV_Config.o $(LIB_JETSONI) $(DEBUG)
  238. clean :
  239. rm $(DIR_BIN)/*.*
  240. rm $(TARGET)