Makefile 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  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), epd2in66g)
  57. OBJ_C_EPD = ${DIR_EPD}/EPD_2in66g.c
  58. OBJ_C_Examples = ${DIR_Examples}/EPD_2in66g_test.c
  59. else ifeq ($(EPD), epd2in7)
  60. OBJ_C_EPD = ${DIR_EPD}/EPD_2in7.c
  61. OBJ_C_Examples = ${DIR_Examples}/EPD_2in7_test.c
  62. else ifeq ($(EPD), epd2in7V2)
  63. OBJ_C_EPD = ${DIR_EPD}/EPD_2in7_V2.c
  64. OBJ_C_Examples = ${DIR_Examples}/EPD_2in7_V2_test.c
  65. else ifeq ($(EPD), epd2in7b)
  66. OBJ_C_EPD = ${DIR_EPD}/EPD_2in7b.c
  67. OBJ_C_Examples = ${DIR_Examples}/EPD_2in7b_test.c
  68. else ifeq ($(EPD), epd2in7bV2)
  69. OBJ_C_EPD = ${DIR_EPD}/EPD_2in7b_V2.c
  70. OBJ_C_Examples = ${DIR_Examples}/EPD_2in7b_V2_test.c
  71. else ifeq ($(EPD), epd2in9)
  72. OBJ_C_EPD = ${DIR_EPD}/EPD_2in9.c
  73. OBJ_C_Examples = ${DIR_Examples}/EPD_2in9_test.c
  74. else ifeq ($(EPD), epd2in9V2)
  75. OBJ_C_EPD = ${DIR_EPD}/EPD_2in9_V2.c
  76. OBJ_C_Examples = ${DIR_Examples}/EPD_2in9_V2_test.c
  77. else ifeq ($(EPD), epd2in9bc)
  78. OBJ_C_EPD = ${DIR_EPD}/EPD_2in9bc.c
  79. OBJ_C_Examples = ${DIR_Examples}/EPD_2in9bc_test.c
  80. else ifeq ($(EPD), epd2in9bV3)
  81. OBJ_C_EPD = ${DIR_EPD}/EPD_2in9b_V3.c
  82. OBJ_C_Examples = ${DIR_Examples}/EPD_2in9b_V3_test.c
  83. else ifeq ($(EPD), epd2in9bV4)
  84. OBJ_C_EPD = ${DIR_EPD}/EPD_2in9b_V4.c
  85. OBJ_C_Examples = ${DIR_Examples}/EPD_2in9b_V4_test.c
  86. else ifeq ($(EPD), epd2in9d)
  87. OBJ_C_EPD = ${DIR_EPD}/EPD_2in9d.c
  88. OBJ_C_Examples = ${DIR_Examples}/EPD_2in9d_test.c
  89. else ifeq ($(EPD), epd2in13)
  90. OBJ_C_EPD = ${DIR_EPD}/EPD_2in13.c
  91. OBJ_C_Examples = ${DIR_Examples}/EPD_2in13_test.c
  92. else ifeq ($(EPD), epd2in13V2)
  93. OBJ_C_EPD = ${DIR_EPD}/EPD_2in13_V2.c
  94. OBJ_C_Examples = ${DIR_Examples}/EPD_2in13_V2_test.c
  95. else ifeq ($(EPD), epd2in13V3)
  96. OBJ_C_EPD = ${DIR_EPD}/EPD_2in13_V3.c
  97. OBJ_C_Examples = ${DIR_Examples}/EPD_2in13_V3_test.c
  98. else ifeq ($(EPD), epd2in13V4)
  99. OBJ_C_EPD = ${DIR_EPD}/EPD_2in13_V4.c
  100. OBJ_C_Examples = ${DIR_Examples}/EPD_2in13_V4_test.c
  101. else ifeq ($(EPD), epd2in13bc)
  102. OBJ_C_EPD = ${DIR_EPD}/EPD_2in13bc.c
  103. OBJ_C_Examples = ${DIR_Examples}/EPD_2in13bc_test.c
  104. else ifeq ($(EPD), epd2in13bV3)
  105. OBJ_C_EPD = ${DIR_EPD}/EPD_2in13b_V3.c
  106. OBJ_C_Examples = ${DIR_Examples}/EPD_2in13b_V3_test.c
  107. else ifeq ($(EPD), epd2in13bV4)
  108. OBJ_C_EPD = ${DIR_EPD}/EPD_2in13b_V4.c
  109. OBJ_C_Examples = ${DIR_Examples}/EPD_2in13b_V4_test.c
  110. else ifeq ($(EPD), epd2in13d)
  111. OBJ_C_EPD = ${DIR_EPD}/EPD_2in13d.c
  112. OBJ_C_Examples = ${DIR_Examples}/EPD_2in13d_test.c
  113. else ifeq ($(EPD), epd2in13g)
  114. OBJ_C_EPD = ${DIR_EPD}/EPD_2in13g.c
  115. OBJ_C_Examples = ${DIR_Examples}/EPD_2in13g_test.c
  116. else ifeq ($(EPD), epd2in15b)
  117. OBJ_C_EPD = ${DIR_EPD}/EPD_2in15b.c
  118. OBJ_C_Examples = ${DIR_Examples}/EPD_2in15b_test.c
  119. else ifeq ($(EPD), epd2in15g)
  120. OBJ_C_EPD = ${DIR_EPD}/EPD_2in15g.c
  121. OBJ_C_Examples = ${DIR_Examples}/EPD_2in15g_test.c
  122. else ifeq ($(EPD), epd3in52)
  123. OBJ_C_EPD = ${DIR_EPD}/EPD_3in52.c
  124. OBJ_C_Examples = ${DIR_Examples}/EPD_3in52_test.c
  125. else ifeq ($(EPD), epd3in7)
  126. OBJ_C_EPD = ${DIR_EPD}/EPD_3in7.c
  127. OBJ_C_Examples = ${DIR_Examples}/EPD_3in7_test.c
  128. else ifeq ($(EPD), epd4in01f)
  129. OBJ_C_EPD = ${DIR_EPD}/EPD_4in01f.c
  130. OBJ_C_Examples = ${DIR_Examples}/EPD_4in01f_test.c
  131. else ifeq ($(EPD), epd4in2)
  132. OBJ_C_EPD = ${DIR_EPD}/EPD_4in2.c
  133. OBJ_C_Examples = ${DIR_Examples}/EPD_4in2_test.c
  134. else ifeq ($(EPD), epd4in2V2)
  135. OBJ_C_EPD = ${DIR_EPD}/EPD_4in2_V2.c
  136. OBJ_C_Examples = ${DIR_Examples}/EPD_4in2_V2_test.c
  137. else ifeq ($(EPD), epd4in2bc)
  138. OBJ_C_EPD = ${DIR_EPD}/EPD_4in2bc.c
  139. OBJ_C_Examples = ${DIR_Examples}/EPD_4in2bc_test.c
  140. else ifeq ($(EPD), epd4in2bV2)
  141. OBJ_C_EPD = ${DIR_EPD}/EPD_4in2b_V2.c
  142. OBJ_C_Examples = ${DIR_Examples}/EPD_4in2b_V2_test.c
  143. else ifeq ($(EPD), epd4in2bV2_old)
  144. OBJ_C_EPD = ${DIR_EPD}/EPD_4in2b_V2_old.c
  145. OBJ_C_Examples = ${DIR_Examples}/EPD_4in2b_V2_test_old.c
  146. else ifeq ($(EPD), epd4in26)
  147. OBJ_C_EPD = ${DIR_EPD}/EPD_4in26.c
  148. OBJ_C_Examples = ${DIR_Examples}/EPD_4in26_test.c
  149. else ifeq ($(EPD), epd4in37b)
  150. OBJ_C_EPD = ${DIR_EPD}/EPD_4in37b.c
  151. OBJ_C_Examples = ${DIR_Examples}/EPD_4in37b_test.c
  152. else ifeq ($(EPD), epd5in65f)
  153. OBJ_C_EPD = ${DIR_EPD}/EPD_5in65f.c
  154. OBJ_C_Examples = ${DIR_Examples}/EPD_5in65f_test.c
  155. else ifeq ($(EPD), epd5in79)
  156. OBJ_C_EPD = ${DIR_EPD}/EPD_5in79.c
  157. OBJ_C_Examples = ${DIR_Examples}/EPD_5in79_test.c
  158. else ifeq ($(EPD), epd5in79b)
  159. OBJ_C_EPD = ${DIR_EPD}/EPD_5in79b.c
  160. OBJ_C_Examples = ${DIR_Examples}/EPD_5in79b_test.c
  161. else ifeq ($(EPD), epd5in79g)
  162. OBJ_C_EPD = ${DIR_EPD}/EPD_5in79g.c
  163. OBJ_C_Examples = ${DIR_Examples}/EPD_5in79g_test.c
  164. else ifeq ($(EPD), epd5in83)
  165. OBJ_C_EPD = ${DIR_EPD}/EPD_5in83.c
  166. OBJ_C_Examples = ${DIR_Examples}/EPD_5in83_test.c
  167. else ifeq ($(EPD), epd5in83V2)
  168. OBJ_C_EPD = ${DIR_EPD}/EPD_5in83_V2.c
  169. OBJ_C_Examples = ${DIR_Examples}/EPD_5in83_V2_test.c
  170. else ifeq ($(EPD), epd5in83bc)
  171. OBJ_C_EPD = ${DIR_EPD}/EPD_5in83bc.c
  172. OBJ_C_Examples = ${DIR_Examples}/EPD_5in83bc_test.c
  173. else ifeq ($(EPD), epd5in83bV2)
  174. OBJ_C_EPD = ${DIR_EPD}/EPD_5in83b_V2.c
  175. OBJ_C_Examples = ${DIR_Examples}/EPD_5in83b_V2_test.c
  176. else ifeq ($(EPD), epd5in84)
  177. OBJ_C_EPD = ${DIR_EPD}/EPD_5in84.c
  178. OBJ_C_Examples = ${DIR_Examples}/EPD_5in84_test.c
  179. else ifeq ($(EPD), epd7in3e)
  180. OBJ_C_EPD = ${DIR_EPD}/EPD_7in3e.c
  181. OBJ_C_Examples = ${DIR_Examples}/EPD_7in3e_test.c
  182. else ifeq ($(EPD), epd7in3f)
  183. OBJ_C_EPD = ${DIR_EPD}/EPD_7in3f.c
  184. OBJ_C_Examples = ${DIR_Examples}/EPD_7in3f_test.c
  185. else ifeq ($(EPD), epd7in5)
  186. OBJ_C_EPD = ${DIR_EPD}/EPD_7in5.c
  187. OBJ_C_Examples = ${DIR_Examples}/EPD_7in5_test.c
  188. else ifeq ($(EPD), epd7in5V2)
  189. OBJ_C_EPD = ${DIR_EPD}/EPD_7in5_V2.c
  190. OBJ_C_Examples = ${DIR_Examples}/EPD_7in5_V2_test.c
  191. else ifeq ($(EPD), epd7in5V2_old)
  192. OBJ_C_EPD = ${DIR_EPD}/EPD_7in5_V2_old.c
  193. OBJ_C_Examples = ${DIR_Examples}/EPD_7in5_V2_test_old.c
  194. else ifeq ($(EPD), epd7in5bc)
  195. OBJ_C_EPD = ${DIR_EPD}/EPD_7in5bc.c
  196. OBJ_C_Examples = ${DIR_Examples}/EPD_7in5bc_test.c
  197. else ifeq ($(EPD), epd7in5bV2)
  198. OBJ_C_EPD = ${DIR_EPD}/EPD_7in5b_V2.c
  199. OBJ_C_Examples = ${DIR_Examples}/EPD_7in5b_V2_test.c
  200. else ifeq ($(EPD), epd7in5bV2_old)
  201. OBJ_C_EPD = ${DIR_EPD}/EPD_7in5b_V2_old.c
  202. OBJ_C_Examples = ${DIR_Examples}/EPD_7in5b_V2_test_old.c
  203. else ifeq ($(EPD), epd7in5HD)
  204. OBJ_C_EPD = ${DIR_EPD}/EPD_7in5_HD.c
  205. OBJ_C_Examples = ${DIR_Examples}/EPD_7in5_HD_test.c
  206. else ifeq ($(EPD), epd7in5bHD)
  207. OBJ_C_EPD = ${DIR_EPD}/EPD_7in5b_HD.c
  208. OBJ_C_Examples = ${DIR_Examples}/EPD_7in5b_HD_test.c
  209. else ifeq ($(EPD), epd10in2b)
  210. OBJ_C_EPD = ${DIR_EPD}/EPD_10in2b.c
  211. OBJ_C_Examples = ${DIR_Examples}/EPD_10in2b_test.c
  212. else ifeq ($(EPD), epd13in3b)
  213. OBJ_C_EPD = ${DIR_EPD}/EPD_13in3b.c
  214. OBJ_C_Examples = ${DIR_Examples}/EPD_13in3b_test.c
  215. else ifeq ($(EPD), epd13in3k)
  216. OBJ_C_EPD = ${DIR_EPD}/EPD_13in3k.c
  217. OBJ_C_Examples = ${DIR_Examples}/EPD_13in3k_test.c
  218. else
  219. OBJ_C_EPD = NULL
  220. OBJ_C_Examples = NULL
  221. endif
  222. 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 )
  223. OBJ_O = $(patsubst %.c,${DIR_BIN}/%.o,$(notdir ${OBJ_C}))
  224. RPI_DEV_C = $(wildcard $(DIR_BIN)/dev_hardware_SPI.o $(DIR_BIN)/RPI_gpiod.o $(DIR_BIN)/DEV_Config.o )
  225. JETSON_DEV_C = $(wildcard $(DIR_BIN)/sysfs_software_spi.o $(DIR_BIN)/sysfs_gpio.o $(DIR_BIN)/DEV_Config.o )
  226. DEBUG = -D DEBUG
  227. # USELIB_RPI = USE_BCM2835_LIB
  228. # USELIB_RPI = USE_WIRINGPI_LIB
  229. USELIB_RPI = USE_LGPIO_LIB
  230. # USELIB_RPI = USE_DEV_LIB
  231. LIB_RPI=-Wl,--gc-sections
  232. ifeq ($(USELIB_RPI), USE_BCM2835_LIB)
  233. LIB_RPI += -lbcm2835 -lm
  234. else ifeq ($(USELIB_RPI), USE_WIRINGPI_LIB)
  235. LIB_RPI += -lwiringPi -lm
  236. else ifeq ($(USELIB_RPI), USE_LGPIO_LIB)
  237. LIB_RPI += -llgpio -lm
  238. else ifeq ($(USELIB_RPI), USE_DEV_LIB)
  239. LIB_RPI += -lgpiod -lm
  240. endif
  241. DEBUG_RPI = -D $(USELIB_RPI) -D RPI
  242. USELIB_JETSONI = USE_DEV_LIB
  243. # USELIB_JETSONI = USE_HARDWARE_LIB
  244. ifeq ($(USELIB_JETSONI), USE_DEV_LIB)
  245. LIB_JETSONI = -lm
  246. else ifeq ($(USELIB_JETSONI), USE_HARDWARE_LIB)
  247. LIB_JETSONI = -lm
  248. endif
  249. DEBUG_JETSONI = -D $(USELIB_JETSONI) -D JETSON
  250. .PHONY : RPI JETSON clean
  251. RPI:RPI_DEV RPI_epd
  252. JETSON: JETSON_DEV JETSON_epd
  253. TARGET = epd
  254. CC = gcc
  255. MSG = -g -O -ffunction-sections -fdata-sections -Wall
  256. CFLAGS += $(MSG) -D $(EPD)
  257. RPI_epd:${OBJ_O}
  258. echo $(@)
  259. $(CC) $(CFLAGS) -D RPI $(OBJ_O) $(RPI_DEV_C) -o $(TARGET) $(LIB_RPI) $(DEBUG)
  260. JETSON_epd:${OBJ_O}
  261. echo $(@)
  262. $(CC) $(CFLAGS) $(OBJ_O) $(JETSON_DEV_C) -o $(TARGET) $(LIB_JETSONI) $(DEBUG)
  263. $(shell mkdir -p $(DIR_BIN))
  264. ${DIR_BIN}/%.o:$(DIR_Examples)/%.c
  265. $(CC) $(CFLAGS) -c $< -o $@ -I $(DIR_Config) -I $(DIR_GUI) -I $(DIR_EPD) $(DEBUG)
  266. ${DIR_BIN}/%.o:$(DIR_EPD)/%.c
  267. $(CC) $(CFLAGS) -c $< -o $@ -I $(DIR_Config) $(DEBUG)
  268. ${DIR_BIN}/%.o:$(DIR_FONTS)/%.c
  269. $(CC) $(CFLAGS) -c $< -o $@ $(DEBUG)
  270. ${DIR_BIN}/%.o:$(DIR_GUI)/%.c
  271. $(CC) $(CFLAGS) -c $< -o $@ -I $(DIR_Config) $(DEBUG)
  272. RPI_DEV:
  273. ifeq ($(USELIB_RPI), USE_DEV_LIB)
  274. $(CC) $(CFLAGS) $(DEBUG_RPI) -c $(DIR_Config)/dev_hardware_SPI.c -o $(DIR_BIN)/dev_hardware_SPI.o $(LIB_RPI) $(DEBUG)
  275. $(CC) $(CFLAGS) $(DEBUG_RPI) -c $(DIR_Config)/DEV_Config.c -o $(DIR_BIN)/DEV_Config.o $(LIB_RPI) $(DEBUG)
  276. $(CC) $(CFLAGS) $(DEBUG_RPI) -c $(DIR_Config)/RPI_gpiod.c -o $(DIR_BIN)/RPI_gpiod.o $(LIB_RPI) $(DEBUG)
  277. else
  278. $(CC) $(CFLAGS) $(DEBUG_RPI) -c $(DIR_Config)/dev_hardware_SPI.c -o $(DIR_BIN)/dev_hardware_SPI.o $(LIB_RPI) $(DEBUG)
  279. $(CC) $(CFLAGS) $(DEBUG_RPI) -c $(DIR_Config)/DEV_Config.c -o $(DIR_BIN)/DEV_Config.o $(LIB_RPI) $(DEBUG)
  280. endif
  281. JETSON_DEV:
  282. $(CC) $(CFLAGS) $(DEBUG_JETSONI) -c $(DIR_Config)/sysfs_software_spi.c -o $(DIR_BIN)/sysfs_software_spi.o $(LIB_JETSONI) $(DEBUG)
  283. $(CC) $(CFLAGS) $(DEBUG_JETSONI) -c $(DIR_Config)/sysfs_gpio.c -o $(DIR_BIN)/sysfs_gpio.o $(LIB_JETSONI) $(DEBUG)
  284. $(CC) $(CFLAGS) $(DEBUG_JETSONI) -c $(DIR_Config)/DEV_Config.c -o $(DIR_BIN)/DEV_Config.o $(LIB_JETSONI) $(DEBUG)
  285. clean :
  286. rm $(DIR_BIN)/*.*
  287. rm $(TARGET)