Makefile 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458
  1. #Daala video codec
  2. #Copyright (c) 2002-2012 Daala project contributors. All rights reserved.
  3. #
  4. #Redistribution and use in source and binary forms, with or without
  5. #modification, are permitted provided that the following conditions are met:
  6. #
  7. #- Redistributions of source code must retain the above copyright notice, this
  8. # list of conditions and the following disclaimer.
  9. #
  10. #- Redistributions in binary form must reproduce the above copyright notice,
  11. # this list of conditions and the following disclaimer in the documentation
  12. # and/or other materials provided with the distribution.
  13. #
  14. #THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS”
  15. #AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  16. #IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  17. #DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
  18. #FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  19. #DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  20. #SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  21. #CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  22. #OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  23. #OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  24. MAKEDEPEND = $(CC) -MM
  25. CINCLUDE = `pkg-config ogg libpng --cflags`
  26. CFLAGS = -Wall -Wno-parentheses -Wno-overlength-strings -Wno-long-long -Wshadow
  27. CFLAGS += -std=c89 -pedantic -fopenmp
  28. CFLAGS += -O3
  29. CFLAGS += -g
  30. CFLAGS += -DOD_ENABLE_ASSERTIONS
  31. # You could instead set this to HAVE_GETTIMEOFDAY if you don't have ftime.
  32. CFLAGS += -DHAVE_FTIME
  33. CINCLUDE := -I../../include ${CINCLUDE}
  34. LIBSRCDIR=../../src
  35. LOCALSRCDIR=..
  36. WORKDIR=build
  37. #png2y4m
  38. P2Y_LOCAL_CSOURCES = \
  39. kiss99.c \
  40. png2y4m.c
  41. P2Y_LIB_CSOURCES =
  42. P2Y_LDFLAGS = `pkg-config ogg libpng --libs`
  43. P2Y_OBJS:=${P2Y_LOCAL_CSOURCES} ${P2Y_LIB_CSOURCES}
  44. P2Y_OBJS:=${P2Y_OBJS:%.c=${WORKDIR}/%.o}
  45. P2Y_CSOURCES:=${P2Y_LOCAL_CSOURCES:%=${LOCALSRCDIR}/%} ${P2Y_LIB_CSOURCES:%=${LIBSRCDIR}/%}
  46. P2Y_TARGET:=png2y4m
  47. #y4m2png
  48. Y2P_LOCAL_CSOURCES = \
  49. vidinput.c \
  50. y4m_input.c \
  51. y4m2png.c
  52. Y2P_LIB_CSOURCES =
  53. Y2P_LDFLAGS = `pkg-config ogg libpng --libs`
  54. Y2P_OBJS:=${Y2P_LOCAL_CSOURCES} ${Y2P_LIB_CSOURCES}
  55. Y2P_OBJS:=${Y2P_OBJS:%.c=${WORKDIR}/%.o}
  56. Y2P_CSOURCES:=${Y2P_LOCAL_CSOURCES:%=${LOCALSRCDIR}/%} ${Y2P_LIB_CSOURCES:%=${LIBSRCDIR}/%}
  57. Y2P_TARGET:=y4m2png
  58. #dump_psnr
  59. PSNR_LOCAL_CSOURCES = \
  60. vidinput.c \
  61. y4m_input.c \
  62. dump_psnr.c
  63. PSNR_LIB_CSOURCES =
  64. PSNR_LDFLAGS = `pkg-config ogg libpng --libs` -lm
  65. PSNR_OBJS:=${PSNR_LOCAL_CSOURCES} ${PSNR_LIB_CSOURCES}
  66. PSNR_OBJS:=${PSNR_OBJS:%.c=${WORKDIR}/%.o}
  67. PSNR_CSOURCES:=${PSNR_LOCAL_CSOURCES:%=${LOCALSRCDIR}/%} ${PSNR_LIB_CSOURCES:%=${LIBSRCDIR}/%}
  68. PSNR_TARGET:=dump_psnr
  69. #dump_psnrhvs
  70. PSNRHVS_LOCAL_CSOURCES = \
  71. vidinput.c \
  72. y4m_input.c \
  73. dct.c \
  74. dump_psnrhvs.c \
  75. tf.c \
  76. internal.c
  77. PSNRHVS_LIB_CSOURCES =
  78. PSNRHVS_LDFLAGS = `pkg-config ogg libpng --libs` -lm
  79. PSNRHVS_OBJS:=${PSNRHVS_LOCAL_CSOURCES} ${PSNRHVS_LIB_CSOURCES}
  80. PSNRHVS_OBJS:=${PSNRHVS_OBJS:%.c=${WORKDIR}/%.o}
  81. PSNRHVS_CSOURCES:=${PSNRHVS_LOCAL_CSOURCES:%=${LOCALSRCDIR}/%} ${PSNRHVS_LIB_CSOURCES:%=${LIBSRCDIR}/%}
  82. PSNRHVS_TARGET:=dump_psnrhvs
  83. #block_size_analysis
  84. BSIZE_LOCAL_CSOURCES = \
  85. block_size_analysis.c \
  86. block_size.c \
  87. block_size_enc.c \
  88. generic_encoder.c \
  89. generic_code.c \
  90. laplace_encoder.c \
  91. logging.c \
  92. laplace_tables.c \
  93. vidinput.c \
  94. y4m_input.c \
  95. dct.c \
  96. internal.c \
  97. entcode.c \
  98. entenc.c \
  99. filter.c \
  100. switch_table.c \
  101. tf.c
  102. BSIZE_LIB_CSOURCES =
  103. BSIZE_LDFLAGS = `pkg-config ogg libpng --libs` -lm
  104. BSIZE_OBJS:=${BSIZE_LOCAL_CSOURCES} ${BSIZE_LIB_CSOURCES}
  105. BSIZE_OBJS:=${BSIZE_OBJS:%.c=${WORKDIR}/%.o}
  106. BSIZE_CSOURCES:=${BSIZE_LOCAL_CSOURCES:%=${LOCALSRCDIR}/%} ${BSIZE_LIB_CSOURCES:%=${LIBSRCDIR}/%}
  107. BSIZE_TARGET:=block_size_analysis
  108. #to_monochrome
  109. MONO_LOCAL_CSOURCES = \
  110. vidinput.c \
  111. y4m_input.c \
  112. to_monochrome.c
  113. MONO_LIB_CSOURCES =
  114. MONO_LDFLAGS = `pkg-config ogg libpng --libs`
  115. MONO_OBJS:=${MONO_LOCAL_CSOURCES} ${MONO_LIB_CSOURCES}
  116. MONO_OBJS:=${MONO_OBJS:%.c=${WORKDIR}/%.o}
  117. MONO_CSOURCES:=${MONO_LOCAL_CSOURCES:%=${LOCALSRCDIR}/%} ${MONO_LIB_CSOURCES:%=${LIBSRCDIR}/%}
  118. MONO_TARGET:=to_monochrome
  119. #downsample
  120. DS_LOCAL_CSOURCES = \
  121. vidinput.c \
  122. y4m_input.c \
  123. downsample.c
  124. DS_LIB_CSOURCES =
  125. DS_LDFLAGS = `pkg-config ogg libpng --libs`
  126. DS_OBJS:=${DS_LOCAL_CSOURCES} ${DS_LIB_CSOURCES}
  127. DS_OBJS:=${DS_OBJS:%.c=${WORKDIR}/%.o}
  128. DS_CSOURCES:=${DS_LOCAL_CSOURCES:%=${LOCALSRCDIR}/%} ${DS_LIB_CSOURCES:%=${LIBSRCDIR}/%}
  129. DS_TARGET:=downsample
  130. #upsample
  131. US_LOCAL_CSOURCES = \
  132. vidinput.c \
  133. y4m_input.c \
  134. upsample.c
  135. US_LIB_CSOURCES = \
  136. dct.c \
  137. internal.c \
  138. generic_code.c \
  139. switch_table.c \
  140. logging.c \
  141. info.c \
  142. mc.c \
  143. pvq.c \
  144. state.c
  145. US_LDFLAGS = `pkg-config ogg libpng --libs` -lm
  146. US_OBJS:=${US_LOCAL_CSOURCES} ${US_LIB_CSOURCES}
  147. US_OBJS:=${US_OBJS:%.c=${WORKDIR}/%.o}
  148. US_CSOURCES:=${US_LOCAL_CSOURCES:%=${LOCALSRCDIR}/%} ${US_LIB_CSOURCES:%=${LIBSRCDIR}/%}
  149. US_TARGET:=upsample
  150. #trans
  151. T_LOCAL_CSOURCES = \
  152. trans.c \
  153. internal.c \
  154. vidinput.c \
  155. y4m_input.c \
  156. od_filter.c \
  157. trans_tools.c \
  158. int_search.c \
  159. trans_data.c \
  160. kiss99.c \
  161. svd.c \
  162. cholesky.c \
  163. tf.c
  164. T_LIB_CSOURCES = \
  165. filter.c \
  166. dct.c
  167. T_LDFLAGS = `pkg-config ogg libpng --libs` -lm
  168. T_OBJS:=${T_LOCAL_CSOURCES} ${T_LIB_CSOURCES}
  169. T_OBJS:=${T_OBJS:%.c=${WORKDIR}/%.o}
  170. T_CSOURCES:=${T_LOCAL_CSOURCES:%=${LOCALSRCDIR}/%} ${T_LIB_CSOURCES:%=${LIBSRCDIR}/%}
  171. T_TARGET:=trans
  172. #trans_gain
  173. TG_LOCAL_CSOURCES = \
  174. trans_gain.c \
  175. internal.c \
  176. vidinput.c \
  177. y4m_input.c \
  178. od_filter.c \
  179. trans_tools.c \
  180. tf.c
  181. TG_LIB_CSOURCES = \
  182. filter.c \
  183. dct.c
  184. TG_LDFLAGS = `pkg-config ogg libpng --libs` -lm
  185. TG_OBJS:=${TG_LOCAL_CSOURCES} ${TG_LIB_CSOURCES}
  186. TG_OBJS:=${TG_OBJS:%.c=${WORKDIR}/%.o}
  187. TG_CSOURCES:=${TG_LOCAL_CSOURCES:%=${LOCALSRCDIR}/%} ${TG_LIB_CSOURCES:%=${LIBSRCDIR}/%}
  188. TG_TARGET:=trans_gain
  189. #compute_basis
  190. CBASIS_LOCAL_CSOURCES = \
  191. compute_basis.c
  192. CBASIS_LIB_CSOURCES = \
  193. dct.c \
  194. filter.c \
  195. internal.c
  196. CBASIS_LDFLAGS = `pkg-config ogg libpng --libs` -lm
  197. CBASIS_OBJS:=${CBASIS_LOCAL_CSOURCES} ${CBASIS_LIB_CSOURCES}
  198. CBASIS_OBJS:=${CBASIS_OBJS:%.c=${WORKDIR}/%.o}
  199. CBASIS_CSOURCES:=${CBASIS_LOCAL_CSOURCES:%=${LOCALSRCDIR}/%} ${CBASIS_LIB_CSOURCES:%=${LIBSRCDIR}/%}
  200. CBASIS_TARGET:=compute_basis
  201. #trans2d
  202. T2D_LOCAL_CSOURCES = \
  203. trans2d.c \
  204. internal.c \
  205. vidinput.c \
  206. y4m_input.c \
  207. od_filter.c \
  208. trans_tools.c \
  209. int_search.c \
  210. trans_data.c \
  211. kiss99.c \
  212. svd.c \
  213. cholesky.c \
  214. tf.c
  215. T2D_LIB_CSOURCES = \
  216. filter.c \
  217. dct.c
  218. T2D_LDFLAGS = `pkg-config ogg libpng --libs` -lm
  219. T2D_OBJS:=${T2D_LOCAL_CSOURCES} ${T2D_LIB_CSOURCES}
  220. T2D_OBJS:=${T2D_OBJS:%.c=${WORKDIR}/%.o}
  221. T2D_CSOURCES:=${T2D_LOCAL_CSOURCES:%=${LOCALSRCDIR}/%} ${T2D_LIB_CSOURCES:%=${LIBSRCDIR}/%}
  222. T2D_TARGET:=trans2d
  223. #gen_cdf
  224. GEN_CDF_LOCAL_CSOURCES = \
  225. gen_cdf.c
  226. GEN_CDF_LIB_CSOURCES =
  227. GEN_CDF_LDFLAGS = -lm
  228. GEN_CDF_OBJS:=${GEN_CDF_LOCAL_CSOURCES} ${GEN_CDF_LIB_CSOURCES}
  229. GEN_CDF_OBJS:=${GEN_CDF_OBJS:%.c=${WORKDIR}/%.o}
  230. GEN_CDF_CSOURCES:=${GEN_CDF_LOCAL_CSOURCES:%=${LOCALSRCDIR}/%} \
  231. ${GEN_CDF_LIB_CSOURCES:%=${LIBSRCDIR}/%}
  232. GEN_CDF_TARGET:=gen_cdf
  233. #gen_laplace_tables
  234. GEN_LAPLACE_TABLES_LOCAL_CSOURCES = \
  235. gen_laplace_tables.c
  236. GEN_LAPLACE_TABLES_LIB_CSOURCES =
  237. GEN_LAPLACE_TABLES_LDFLAGS = -lm
  238. GEN_LAPLACE_TABLES_OBJS:=${GEN_LAPLACE_TABLES_LOCAL_CSOURCES} ${GEN_LAPLACE_TABLES_LIB_CSOURCES}
  239. GEN_LAPLACE_TABLES_OBJS:=${GEN_LAPLACE_TABLES_OBJS:%.c=${WORKDIR}/%.o}
  240. GEN_LAPLACE_TABLES_CSOURCES:= \
  241. ${GEN_LAPLACE_TABLES_LOCAL_CSOURCES:%=${LOCALSRCDIR}/%} \
  242. ${GEN_LAPLACE_TABLES_LIB_CSOURCES:%=${LIBSRCDIR}/%}
  243. GEN_LAPLACE_TABLES_TARGET:=gen_laplace_tables
  244. #bjontegaard
  245. BD_LOCAL_CSOURCES = \
  246. bjontegaard.c \
  247. cholesky.c \
  248. svd.c \
  249. qr.c
  250. BD_LIB_CSOURCES =
  251. BD_LDFLAGS = -lm
  252. BD_OBJS:=${BD_LOCAL_CSOURCES} ${BD_LIB_CSOURCES}
  253. BD_OBJS:=${BD_OBJS:%.c=${WORKDIR}/%.o}
  254. BD_CSOURCES:=${BD_LOCAL_CSOURCES:%=${LOCALSRCDIR}/%} \
  255. ${BD_LIB_CSOURCES:%=${LIBSRCDIR}/%}
  256. BD_TARGET:=bjontegaard
  257. #yuvjpeg
  258. YJ_LOCAL_CSOURCES = \
  259. yuvjpeg.c
  260. YJ_LIB_CSOURCES =
  261. YJ_LDFLAGS = -ljpeg
  262. YJ_OBJS:=${YJ_LOCAL_CSOURCES} ${YJ_LIB_CSOURCES}
  263. YJ_OBJS:=${YJ_OBJS:%.c=${WORKDIR}/%.o}
  264. YJ_CSOURCES:=${YJ_LOCAL_CSOURCES:%=${LOCALSRCDIR}/%} \
  265. ${YJ_LIB_CSOURCES:%=${LIBSRCDIR}/%}
  266. YJ_TARGET:=yuvjpeg
  267. #jpegyuv
  268. JY_LOCAL_CSOURCES = \
  269. jpegyuv.c
  270. JY_LIB_CSOURCES =
  271. JY_LDFLAGS = -ljpeg
  272. JY_OBJS:=${JY_LOCAL_CSOURCES} ${JY_LIB_CSOURCES}
  273. JY_OBJS:=${JY_OBJS:%.c=${WORKDIR}/%.o}
  274. JY_CSOURCES:=${JY_LOCAL_CSOURCES:%=${LOCALSRCDIR}/%} \
  275. ${JY_LIB_CSOURCES:%=${LIBSRCDIR}/%}
  276. JY_TARGET:=jpegyuv
  277. ALL_OBJS:=${P2Y_OBJS} ${Y2P_OBJS} ${PSNR_OBJS} ${PSNRHVS_OBJS} \
  278. ${GEN_CDF_OBJS} ${GEN_LAPLACE_TABLES_OBJS} ${T_OBJS} \
  279. ${TG_OBJS} ${CBASIS_OBJS} ${T2D_OBJS} ${BSIZE_OBJS} ${BD_OBJS} \
  280. ${YJ_OBJS} ${JY_OBJS} ${MONO_OBJS} ${DS_OBJS} ${US_OBJS}
  281. ALL_ASMS:=${ALL_OBJS:%.o=%.s}
  282. ALL_DEPS:=${ALL_OBJS:%.o=%.d}
  283. ALL_TARGETS:=${P2Y_TARGET} ${Y2P_TARGET} ${PSNR_TARGET} ${PSNRHVS_TARGET} \
  284. ${GEN_CDF_TARGET} \
  285. ${GEN_LAPLACE_TABLES_TARGET} \
  286. ${T_TARGET} ${TG_TARGET} ${CBASIS_TARGET} ${T2D_TARGET} ${BSIZE_TARGET} ${BD_TARGET} \
  287. ${YJ_TARGET} ${JY_TARGET} ${MONO_TARGET} ${DS_TARGET} ${US_TARGET}
  288. all: ${ALL_TARGETS}
  289. asm: ${ALL_ASM}
  290. check: all
  291. clean:
  292. ${RM} ${ALL_ASM} ${ALL_OBJS} ${ALL_DEPS}
  293. ${RM} ${ALL_TARGETS}
  294. -rmdir ${WORKDIR}
  295. ${BSIZE_TARGET}: ${BSIZE_OBJS}
  296. ${CC} ${CFLAGS} ${BSIZE_OBJS} ${BSIZE_LDFLAGS} -o $@
  297. ${P2Y_TARGET}: ${P2Y_OBJS}
  298. ${CC} ${CFLAGS} ${P2Y_OBJS} ${P2Y_LDFLAGS} -o $@
  299. ${Y2P_TARGET}: ${Y2P_OBJS}
  300. ${CC} ${CFLAGS} ${Y2P_OBJS} ${Y2P_LDFLAGS} -o $@
  301. ${PSNR_TARGET}: ${PSNR_OBJS}
  302. ${CC} ${CFLAGS} ${PSNR_OBJS} ${PSNR_LDFLAGS} -o $@
  303. ${PSNRHVS_TARGET}: ${PSNRHVS_OBJS}
  304. ${CC} ${CFLAGS} ${PSNRHVS_OBJS} ${PSNRHVS_LDFLAGS} -o $@
  305. ${T_TARGET}: ${T_OBJS}
  306. ${CC} ${CFLAGS} ${T_OBJS} ${T_LDFLAGS} -o $@
  307. ${TG_TARGET}: ${TG_OBJS}
  308. ${CC} ${CFLAGS} ${TG_OBJS} ${TG_LDFLAGS} -o $@
  309. ${CBASIS_TARGET}: ${CBASIS_OBJS}
  310. ${CC} ${CFLAGS} ${CBASIS_OBJS} ${CBASIS_LDFLAGS} -o $@
  311. ${T2D_TARGET}: ${T2D_OBJS}
  312. ${CC} ${CFLAGS} ${T2D_OBJS} ${T2D_LDFLAGS} -o $@
  313. ${GEN_CDF_TARGET}: ${GEN_CDF_OBJS}
  314. ${CC} ${CFLAGS} ${GEN_CDF_OBJS} ${GEN_CDF_LDFLAGS} -o $@
  315. ${GEN_LAPLACE_TABLES_TARGET}: ${GEN_LAPLACE_TABLES_OBJS}
  316. ${CC} ${CFLAGS} ${GEN_LAPLACE_TABLES_OBJS} ${GEN_LAPLACE_TABLES_LDFLAGS} -o $@
  317. ${BD_TARGET}: ${BD_OBJS}
  318. ${CC} ${CFLAGS} ${BD_OBJS} ${BD_LDFLAGS} -o $@
  319. ${YJ_TARGET}: ${YJ_OBJS}
  320. ${CC} ${CFLAGS} ${YJ_OBJS} ${YJ_LDFLAGS} -o $@
  321. ${JY_TARGET}: ${JY_OBJS}
  322. ${CC} ${CFLAGS} ${JY_OBJS} ${JY_LDFLAGS} -o $@
  323. ${MONO_TARGET}: ${MONO_OBJS}
  324. ${CC} ${CFLAGS} ${MONO_OBJS} ${MONO_LDFLAGS} -o $@
  325. ${DS_TARGET}: ${DS_OBJS}
  326. ${CC} ${CFLAGS} ${DS_OBJS} ${DS_LDFLAGS} -o $@
  327. ${US_TARGET}: ${US_OBJS}
  328. ${CC} ${CFLAGS} ${US_OBJS} ${US_LDFLAGS} -o $@
  329. ${ALL_OBJS} ${ALL_ASMS} ${ALL_DEPS} ${ALL_TARGETS}: Makefile
  330. .PHONY: all asm clean check
  331. ${WORKDIR}/%.d: ${LIBSRCDIR}/%.c
  332. mkdir -p ${dir $@}
  333. ${MAKEDEPEND} ${CINCLUDE} ${CFLAGS} $< -MT ${@:%.d=%.o} > $@
  334. ${MAKEDEPEND} ${CINCLUDE} ${CFLAGS} $< -MT ${@:%.d=%.s} >> $@
  335. ${MAKEDEPEND} ${CINCLUDE} ${CFLAGS} $< -MT $@ >> $@
  336. ${WORKDIR}/%.s: ${LIBSRCDIR}/%.c
  337. mkdir -p ${dir $@}
  338. ${CC} ${CINCLUDE} ${CFLAGS} -S -o $@ $<
  339. ${WORKDIR}/%.o: ${LIBSRCDIR}/%.c
  340. mkdir -p ${dir $@}
  341. ${CC} ${CINCLUDE} ${CFLAGS} -c -o $@ $<
  342. ${WORKDIR}/%.d: ${LOCALSRCDIR}/%.c
  343. mkdir -p ${dir $@}
  344. ${MAKEDEPEND} ${CINCLUDE} ${CFLAGS} $< -MT ${@:%.d=%.o} > $@
  345. ${MAKEDEPEND} ${CINCLUDE} ${CFLAGS} $< -MT ${@:%.d=%.s} >> $@
  346. ${MAKEDEPEND} ${CINCLUDE} ${CFLAGS} $< -MT $@ >> $@
  347. ${WORKDIR}/%.s: ${LOCALSRCDIR}/%.c
  348. mkdir -p ${dir $@}
  349. ${CC} ${CINCLUDE} ${CFLAGS} -S -o $@ $<
  350. ${WORKDIR}/%.o: ${LOCALSRCDIR}/%.c
  351. mkdir -p ${dir $@}
  352. ${CC} ${CINCLUDE} ${CFLAGS} -c -o $@ $<
  353. # Include header file dependencies
  354. include ${ALL_DEPS}