Makefile 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441
  1. #Daala video codec
  2. #Copyright (c) 2002-2013 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. # NOTE: This Makefile requires GNU make
  25. # Location to put the targets.
  26. TARGETBINDIR = .
  27. TESTBINDIR = tests
  28. TARGETLIBDIR = .
  29. # Name of the targets
  30. LIBDAALABASE_TARGET = libdaalabase.a
  31. LIBDAALAENC_TARGET = libdaalaenc.a
  32. LIBDAALADEC_TARGET = libdaaladec.a
  33. DUMP_VIDEO_TARGET = dump_video
  34. ENCODER_EXAMPLE_TARGET = encoder_example
  35. PLAYER_EXAMPLE_TARGET = player_example
  36. # Test targets
  37. DCTTEST_TARGET = dcttest
  38. ECTEST_TARGET = ectest
  39. TEST_CHECK_INITIAL_TARGET = check_initial
  40. TEST_COEF_CODER_TARGET = test_coef_coder
  41. TEST_HEADER_TARGET = check_tests
  42. TEST_LOGGING_TARGET = logging_test
  43. TEST_DIVU_SMALL_TARGET = test_divu_small
  44. TEST_FILTERS_TARGET = test_filters
  45. # The command to use to generate dependency information
  46. MAKEDEPEND = $(CC) -MM
  47. #MAKEDEPEND = makedepend -f- -Y --
  48. # The location of include files.
  49. # Modify these to point to your Ogg and Vorbis include directories if they are
  50. # not installed in a standard location.
  51. CINCLUDE = `sdl-config --cflags` `pkg-config ogg --cflags`
  52. # These are gcc-only, but not actually critical.
  53. # Extra compilation flags.
  54. # You may get speed increases by including flags such as -O2 or -O3 or
  55. # -ffast-math, or additional flags, depending on your system and compiler.
  56. # The -g flag will generally include debugging information.
  57. CFLAGS := -g $(CFLAGS)
  58. CFLAGS := -DOD_LOGGING_ENABLED $(CFLAGS)
  59. CFLAGS := -DOD_ENABLE_ASSERTIONS $(CFLAGS)
  60. #CFLAGS := -DOD_CHECKASM $(CFLAGS)
  61. #CFLAGS := -DOD_DUMP_IMAGES $(CFLAGS)
  62. #CFLAGS := -DOD_ENCODER_CHECK $(CFLAGS)
  63. #CFLAGS := -DOD_ANIMATE $(CFLAGS)
  64. #CFLAGS := -DOD_LOGGING_ENABLED $(CFLAGS)
  65. CFLAGS := -DOD_ACCOUNTING $(CFLAGS)
  66. CFLAGS := -fPIC $(CFLAGS)
  67. CFLAGS := -std=c89 -pedantic $(CFLAGS)
  68. CFLAGS := -fvisibility=hidden $(CFLAGS)
  69. CFLAGS := -Wextra -Wno-parentheses -Wno-long-long -Wno-overlength-strings $(CFLAGS)
  70. CFLAGS := -Wall $(CFLAGS)
  71. CFLAGS := -I/opt/local/include $(CFLAGS)
  72. # Set machine-specific flags
  73. HOST := $(shell uname -m)
  74. ifneq (,$(findstring 86,${HOST}))
  75. CFLAGS := -DOD_X86ASM $(CFLAGS)
  76. else ifneq (,$(findstring arm,${HOST}))
  77. CFLAGS := -DOD_ARMASM $(CFLAGS)
  78. #CFLAGS := -march=armv7 $(CFLAGS)
  79. endif
  80. # Libraries to link with, and the location of library files.
  81. # Add -lpng -lz if you want to use -DOD_DUMP_IMAGES.
  82. LIBS = `pkg-config ogg --libs` `sdl-config --libs` -lm
  83. ifeq ($(findstring -DOD_DUMP_IMAGES,${CFLAGS}),-DOD_DUMP_IMAGES)
  84. LIBS += -lpng -lz
  85. endif
  86. LIBDAALAENC_LIBS = ${LIBDAALAENC_TARGET}
  87. ifeq ($(findstring -DOD_ENCODER_CHECK,${CFLAGS}),-DOD_ENCODER_CHECK)
  88. LIBDAALAENC_LIBS += ${LIBDAALADEC_TARGET}
  89. endif
  90. CHECK_LIBS := -pthread $(shell pkg-config check --libs)
  91. DCTTEST_LIBS = -lm
  92. ECTEST_LIBS = -lm
  93. TEST_COEF_CODER_LIBS =
  94. TEST_HEADER_LIBS = ${CHECK_LIBS}
  95. TEST_LOGGING_LIBS =
  96. TEST_CHECK_INITIAL_LIBS = ${CHECK_LIBS}
  97. TEST_DIVU_SMALL_LIBS =
  98. TEST_FILTER_LIBS =
  99. # ANYTHING BELOW THIS LINE PROBABLY DOES NOT NEED EDITING
  100. CINCLUDE := -I../include ${CINCLUDE}
  101. LIBSRCDIR = ../src
  102. BINSRCDIR = ../examples
  103. TESTSRCDIR = ${LIBSRCDIR}
  104. WORKDIR = objs
  105. # C source file lists
  106. LIBDAALABASE_CSOURCES = \
  107. adapt.c \
  108. block_size.c \
  109. entcode.c \
  110. entdec.c \
  111. filter.c \
  112. generic_code.c \
  113. generic_decoder.c \
  114. info.c \
  115. internal.c \
  116. intra.c \
  117. intradata.c \
  118. laplace_decoder.c \
  119. laplace_tables.c \
  120. logging.c \
  121. mc.c \
  122. dct.c \
  123. partition.c \
  124. pvq.c \
  125. pvq_code.c \
  126. pvq_decoder.c \
  127. state.c \
  128. switch_table.c \
  129. tf.c \
  130. zigzag4.c \
  131. zigzag8.c \
  132. zigzag16.c \
  133. $(if $(findstring -DOD_X86ASM,${CFLAGS}), \
  134. x86/cpu.c \
  135. x86/sse2mc.c \
  136. x86/x86state.c \
  137. ) \
  138. $(if $(findstring -DOD_LOGGING_ENABLED,${CFLAGS}), \
  139. logging.c \
  140. )
  141. LIBDAALABASE_CHEADERS = \
  142. adapt.h \
  143. block_size.h \
  144. entcode.h \
  145. entdec.h \
  146. filter.h \
  147. generic_code.h \
  148. laplace_code.h \
  149. partition.h \
  150. pvq_code.h \
  151. internal.h \
  152. intra.h \
  153. logging.h \
  154. mc.h \
  155. mcenc.h \
  156. odintrin.h \
  157. pvq.h \
  158. state.h \
  159. tf.h \
  160. ../include/daala/codec.h \
  161. LIBDAALADEC_CSOURCES = \
  162. block_size_dec.c \
  163. decode.c \
  164. infodec.c \
  165. LIBDAALADEC_CHEADERS = \
  166. ${LIBDAALABASE_CHEADERS} \
  167. decint.h \
  168. ../include/daala/daaladec.h \
  169. LIBDAALAENC_CSOURCES = \
  170. block_size_dec.c \
  171. block_size_enc.c \
  172. encode.c \
  173. entenc.c \
  174. generic_encoder.c \
  175. infoenc.c \
  176. laplace_encoder.c \
  177. mcenc.c \
  178. $(if $(findstring -DOD_ACCOUNTING,${CFLAGS}), \
  179. accounting.c \
  180. ) \
  181. pvq_encoder.c \
  182. $(if $(findstring -DOD_X86ASM,${CFLAGS}), \
  183. x86/x86enc.c \
  184. x86/x86mcenc.c \
  185. ) \
  186. LIBDAALAENC_CHEADERS = \
  187. ${LIBDAALABASE_CHEADERS} \
  188. encint.h \
  189. entenc.h \
  190. laplace_encoder.h \
  191. ../include/daala/daalaenc.h \
  192. DUMP_VIDEO_CSOURCES = dump_video.c
  193. ENCODER_EXAMPLE_CSOURCES = encoder_example.c
  194. PLAYER_EXAMPLE_CSOURCES = player_example.c
  195. DCTTEST_CSOURCES = \
  196. dct.c \
  197. filter.c \
  198. $(if $(findstring -DOD_ENABLE_ASSERTIONS,${CFLAGS}), \
  199. internal.c \
  200. )
  201. ECTEST_CSOURCES = tests/ectest.c
  202. TEST_COEF_CODER_CSOURCES = \
  203. tests/test_coef_coder.c \
  204. $(if $(findstring -DOD_LOGGING_ENABLED,${CFLAGS}), \
  205. logging.c \
  206. )
  207. TEST_CHECK_INITIAL_CSOURCES = tests/check_initial.c
  208. TEST_HEADER_CSOURCES=tests/check_main.c tests/headerencode_test.c
  209. TEST_LOGGING_CSOURCES=tests/logging_test.c
  210. TEST_DIVU_SMALL_CSOURCES=tests/test_divu_small.c
  211. TEST_FILTERS_CSOURCES=tests/test_filters.c
  212. # Create object file list.
  213. LIBDAALABASE_OBJS:= ${LIBDAALABASE_CSOURCES:%.c=${WORKDIR}/%.o}
  214. LIBDAALABASE_ASMS:= ${LIBDAALABASE_OBJS:%.o=%.s}
  215. LIBDAALABASE_DEPS:= ${LIBDAALABASE_OBJS:%.o=%.d}
  216. LIBDAALADEC_OBJS:= ${LIBDAALADEC_CSOURCES:%.c=${WORKDIR}/%.o}
  217. LIBDAALADEC_ASMS:= ${LIBDAALADEC_OBJS:%.o=%.s}
  218. LIBDAALADEC_DEPS:= ${LIBDAALADEC_OBJS:%.o=%.d}
  219. LIBDAALAENC_OBJS:= ${LIBDAALAENC_CSOURCES:%.c=${WORKDIR}/%.o}
  220. LIBDAALAENC_ASMS:= ${LIBDAALAENC_OBJS:%.o=%.s}
  221. LIBDAALAENC_DEPS:= ${LIBDAALAENC_OBJS:%.o=%.d}
  222. DUMP_VIDEO_OBJS:= ${DUMP_VIDEO_CSOURCES:%.c=${WORKDIR}/%.o}
  223. ENCODER_EXAMPLE_OBJS:= ${ENCODER_EXAMPLE_CSOURCES:%.c=${WORKDIR}/%.o}
  224. PLAYER_EXAMPLE_OBJS:= ${PLAYER_EXAMPLE_CSOURCES:%.c=${WORKDIR}/%.o}
  225. ECTEST_OBJS:= ${ECTEST_CSOURCES:%.c=${WORKDIR}/%.o}
  226. TEST_CHECK_INITIAL_OBJS:= ${TEST_CHECK_INITIAL_CSOURCES:%.c=${WORKDIR}/%.o}
  227. TEST_COEF_CODER_OBJS:= ${TEST_COEF_CODER_CSOURCES:%.c=${WORKDIR}/%.o}
  228. TEST_HEADER_OBJS:= ${TEST_HEADER_CSOURCES:%.c=${WORKDIR}/%.o}
  229. TEST_LOGGING_OBJS:= ${TEST_LOGGING_CSOURCES:%.c=${WORKDIR}/%.o}
  230. TEST_DIVU_SMALL_OBJS:= ${TEST_DIVU_SMALL_CSOURCES:%.c=${WORKDIR}/%.o}
  231. TEST_FILTERS_OBJS:= ${TEST_FILTERS_CSOURCES:%.c=${WORKDIR}/%.o}
  232. ALL_OBJS:= ${LIBDAALABASE_OBJS} ${LIBDAALADEC_OBJS} ${LIBDAALAENC_OBJS} \
  233. ${DUMP_VIDEO_OBJS} ${ENCODER_EXAMPLE_OBJS} ${PLAYER_EXAMPLE_OBJS} \
  234. ${ECTEST_OBJS} ${TEST_CHECK_INITIAL_OBJS} ${TEST_COEF_CODER_OBJS} \
  235. ${TEST_HEADER_OBJS} ${TEST_LOGGING_OBJS} ${TEST_DIVU_SMALL_OBJS} \
  236. ${TEST_FILTERS_OBJS}
  237. # Create the dependency file list
  238. ALL_DEPS:= ${ALL_OBJS:%.o=%.d}
  239. # Prepend source path to file names.
  240. LIBDAALABASE_CSOURCES:= ${LIBDAALABASE_CSOURCES:%=${LIBSRCDIR}/%}
  241. LIBDAALABASE_CHEADERS:= ${LIBDAALABASE_CHEADERS:%=${LIBSRCDIR}/%}
  242. LIBDAALADEC_CSOURCES:= ${LIBDAALADEC_CSOURCES:%=${LIBSRCDIR}/%}
  243. LIBDAALADEC_CHEADERS:= ${LIBDAALADEC_CHEADERS:%=${LIBSRCDIR}/%}
  244. LIBDAALAENC_CSOURCES:= ${LIBDAALAENC_CSOURCES:%=${LIBSRCDIR}/%}
  245. LIBDAALAENC_CHEADERS:= ${LIBDAALAENC_CHEADERS:%=${LIBSRCDIR}/%}
  246. DUMP_VIDEO_CSOURCES:= ${DUMP_VIDEO_CSOURCES:%=${BINSRCDIR}/%}
  247. ENCODER_EXAMPLE_CSOURCES:= ${ENCODER_EXAMPLE_CSOURCES:%=${BINSRCDIR}/%}
  248. PLAYER_EXAMPLE_CSOURCES:= ${PLAYER_EXAMPLE_CSOURCES:%=${BINSRCDIR}/%}
  249. DCTTEST_CSOURCES:= ${DCTTEST_CSOURCES:%=${LIBSRCDIR}/%}
  250. ECTEST_CSOURCES:= ${ECTEST_CSOURCES:%=${TESTSRCDIR}/%}
  251. TEST_CHECK_INITIAL_CSOURCES:= ${TEST_CHECK_INITIAL_CSOURCES:%=${TESTSRCDIR}/%}
  252. TEST_COEF_CODER_CSOURCES:= ${TEST_COEF_CODER_CSOURCES:%=${TESTSRCDIR}/%}
  253. ALL_CSOURCES:= ${LIBDAALABASE_CSOURCES} ${LIBDAALADEC_CSOURCES} \
  254. ${LIBDAALAENC_CSOURCES} ${DUMP_VIDEO_CSOURCES} ${ENCODER_EXAMPLE_CSOURCES} \
  255. ${PLAYER_EXAMPLE_CSOURCES} ${DCTTEST_CSOURCES} ${ECTEST_CSOURCES} \
  256. ${TEST_COEF_CODER_CSOURCES} ${TEST_CHECK_INITIAL_CSOURCES}
  257. # Prepand target path to file names.
  258. LIBDAALABASE_TARGET:= ${TARGETLIBDIR}/${LIBDAALABASE_TARGET}
  259. LIBDAALADEC_TARGET:= ${TARGETLIBDIR}/${LIBDAALADEC_TARGET}
  260. LIBDAALAENC_TARGET:= ${TARGETLIBDIR}/${LIBDAALAENC_TARGET}
  261. DUMP_VIDEO_TARGET:= ${TARGETBINDIR}/${DUMP_VIDEO_TARGET}
  262. ENCODER_EXAMPLE_TARGET:= ${TARGETBINDIR}/${ENCODER_EXAMPLE_TARGET}
  263. PLAYER_EXAMPLE_TARGET:= ${TARGETBINDIR}/${PLAYER_EXAMPLE_TARGET}
  264. # Prepend test path to file names.
  265. DCTTEST_TARGET:= ${TESTBINDIR}/${DCTTEST_TARGET}
  266. ECTEST_TARGET:= ${TESTBINDIR}/${ECTEST_TARGET}
  267. TEST_CHECK_INITIAL_TARGET:= ${TESTBINDIR}/${TEST_CHECK_INITIAL_TARGET}
  268. TEST_COEF_CODER_TARGET:= ${TESTBINDIR}/${TEST_COEF_CODER_TARGET}
  269. TEST_HEADER_TARGET:= ${TESTBINDIR}/${TEST_HEADER_TARGET}
  270. TEST_LOGGING_TARGET:= ${TESTBINDIR}/${TEST_LOGGING_TARGET}
  271. TEST_DIVU_SMALL_TARGET:=${TESTBINDIR}/${TEST_DIVU_SMALL_TARGET}
  272. TEST_FILTERS_TARGET:=${TESTBINDIR}/${TEST_FILTERS_TARGET}
  273. # Complete set of targets
  274. ALL_TARGETS:= ${LIBDAALABASE_TARGET} ${LIBDAALADEC_TARGET} \
  275. ${LIBDAALAENC_TARGET} ${DUMP_VIDEO_TARGET} ${ENCODER_EXAMPLE_TARGET} \
  276. ${PLAYER_EXAMPLE_TARGET} ${DCTTEST_TARGET} ${ECTEST_TARGET} \
  277. ${TEST_COEF_CODER_TARGET} ${TEST_HEADER_TARGET} ${TEST_LOGGING_TARGET} \
  278. ${TEST_CHECK_INITIAL_TARGET} ${TEST_DIVU_SMALL_TARGET} ${TEST_FILTERS_TARGET}
  279. # Targets:
  280. # Everything (default)
  281. all: ${ALL_TARGETS}
  282. # libdaalabase
  283. ${LIBDAALABASE_TARGET}: ${LIBDAALABASE_OBJS}
  284. mkdir -p ${TARGETLIBDIR}
  285. ar crs $@ ${LIBDAALABASE_OBJS}
  286. # libdaaladec
  287. ${LIBDAALADEC_TARGET}: ${LIBDAALADEC_OBJS}
  288. mkdir -p ${TARGETLIBDIR}
  289. ar crs $@ ${LIBDAALADEC_OBJS}
  290. # libdaalaenc
  291. ${LIBDAALAENC_TARGET}: ${LIBDAALAENC_OBJS}
  292. mkdir -p ${TARGETLIBDIR}
  293. ar crs $@ ${LIBDAALAENC_OBJS}
  294. # dump_video
  295. ${DUMP_VIDEO_TARGET}: ${DUMP_VIDEO_OBJS} ${LIBDAALABASE_TARGET} \
  296. ${LIBDAALADEC_TARGET}
  297. mkdir -p ${TARGETBINDIR}
  298. ${CC} ${CFLAGS} -o $@ ${DUMP_VIDEO_OBJS} \
  299. ${LIBDAALADEC_TARGET} ${LIBDAALABASE_TARGET} ${LIBS}
  300. # encoder_example
  301. ${ENCODER_EXAMPLE_TARGET}: ${ENCODER_EXAMPLE_OBJS} ${LIBDAALABASE_TARGET} \
  302. ${LIBDAALAENC_TARGET}
  303. mkdir -p ${TARGETBINDIR}
  304. ${CC} ${CFLAGS} -o $@ ${ENCODER_EXAMPLE_OBJS} \
  305. ${LIBDAALAENC_LIBS} ${LIBDAALABASE_TARGET} ${LIBS}
  306. # player_example
  307. ${PLAYER_EXAMPLE_TARGET}: ${PLAYER_EXAMPLE_OBJS} ${LIBDAALABASE_TARGET} \
  308. ${LIBDAALADEC_TARGET}
  309. mkdir -p ${TARGETBINDIR}
  310. ${CC} ${CFLAGS} -o $@ ${PLAYER_EXAMPLE_OBJS} \
  311. ${LIBDAALADEC_TARGET} ${LIBDAALABASE_TARGET} ${LIBS}
  312. # check_initial
  313. ${TEST_CHECK_INITIAL_TARGET}: ${TEST_CHECK_INITIAL_OBJS}
  314. mkdir -p ${TESTBINDIR}
  315. ${CC} ${CFLAGS} ${TEST_CHECK_INITIAL_OBJS} ${TEST_CHECK_INITIAL_LIBS} -o $@
  316. # dcttest
  317. ${DCTTEST_TARGET}: ${DCTTEST_CSOURCES}
  318. mkdir -p ${TESTBINDIR}
  319. ${CC} ${CFLAGS} -DOD_DCT_CHECK_OVERFLOW -DOD_DCT_TEST ${DCTTEST_CSOURCES} \
  320. ${DCTTEST_LIBS} -o $@
  321. # ectest
  322. ${ECTEST_TARGET}: ${ECTEST_OBJS}
  323. mkdir -p ${TESTBINDIR}
  324. ${CC} ${CFLAGS} ${ECTEST_OBJS} ${ECTEST_LIBS} -o $@
  325. # test_coef_coder
  326. ${TEST_COEF_CODER_TARGET}: ${TEST_COEF_CODER_OBJS} ${LIBDAALABASE_TARGET}
  327. mkdir -p ${TESTBINDIR}
  328. ${CC} ${CFLAGS} ${TEST_COEF_CODER_OBJS} ${TEST_COEF_CODER_LIBS} -o $@ \
  329. ${LIBDAALABASE_TARGET} -lm
  330. # test_header
  331. ${TEST_HEADER_TARGET}: ${TEST_HEADER_OBJS} ${LIBDAALADEC_TARGET} \
  332. ${LIBDAALAENC_TARGET} ${LIBDAALABASE_TARGET}
  333. mkdir -p ${TESTBINDIR}
  334. ${CC} ${CFLAGS} ${TEST_HEADER_OBJS} ${TEST_HEADER_LIBS} -o $@ \
  335. ${LIBDAALAENC_TARGET} ${LIBDAALADEC_TARGET} ${LIBDAALABASE_TARGET} \
  336. -lm
  337. # logging_test
  338. ${TEST_LOGGING_TARGET}: ${TEST_LOGGING_OBJS} ${LIBDAALABASE_TARGET}
  339. mkdir -p ${TESTBINDIR}
  340. ${CC} ${CFLAGS} ${TEST_LOGGING_OBJS} ${TEST_LOGGING_LIBS} -o $@ \
  341. ${LIBDAALABASE_TARGET} -lm
  342. # test_divu_small
  343. ${TEST_DIVU_SMALL_TARGET}: ${TEST_DIVU_SMALL_OBJS} ${LIBDAALABASE_TARGET}
  344. mkdir -p ${TESTBINDIR}
  345. ${CC} ${CFLAGS} ${TEST_DIVU_SMALL_OBJS} ${TEST_DIVU_SMALL_LIBS} -o $@ \
  346. ${LIBDAALABASE_TARGET} -lm
  347. # test_filters
  348. ${TEST_FILTERS_TARGET}: ${TEST_FILTERS_OBJS} ${LIBDAALABASE_TARGET}
  349. mkdir -p ${TESTBINDIR}
  350. ${CC} ${CFLAGS} ${TEST_FILTERS_OBJS} ${TEST_FILTERS_LIBS} -o $@ \
  351. ${LIBDAALABASE_TARGET} -lm
  352. # Assembly listing
  353. ALL_ASM := ${ALL_OBJS:%.o=%.s}
  354. asm: ${ALL_ASM}
  355. # check that build is complete
  356. check: all
  357. ${DCTTEST_TARGET}
  358. ${ECTEST_TARGET}
  359. ${TEST_CHECK_INITIAL_TARGET}
  360. ${TEST_COEF_CODER_TARGET}
  361. ${TEST_HEADER_TARGET}
  362. ${TEST_LOGGING_TARGET}
  363. ${TEST_DIVU_SMALL_TARGET}
  364. ${TEST_FILTERS_TARGET}
  365. # Remove all targets.
  366. clean:
  367. ${RM} ${ALL_ASM} ${ALL_OBJS} ${ALL_DEPS}
  368. ${RM} ${ALL_TARGETS}
  369. -rmdir ${TESTBINDIR} ${WORKDIR}/tests ${WORKDIR}/x86 ${WORKDIR}
  370. # Make everything depend on changes in the Makefile
  371. ${ALL_ASM} ${ALL_OBJS} ${ALL_DEPS} ${ALL_TARGETS} : Makefile
  372. # Specify which targets are phony for GNU make
  373. .PHONY : all clean check
  374. # Rules
  375. # These are set up to compile each library as a single unit, to allow gcc to do
  376. # Inter Module Analysis (IMA) when optimizing.
  377. ${WORKDIR}/%.d: ${LIBSRCDIR}/%.c
  378. mkdir -p ${dir $@}
  379. ${MAKEDEPEND} ${CINCLUDE} ${CFLAGS} $< -MT ${@:%.d=%.o} > $@
  380. ${MAKEDEPEND} ${CINCLUDE} ${CFLAGS} $< -MT ${@:%.d=%.s} >> $@
  381. ${MAKEDEPEND} ${CINCLUDE} ${CFLAGS} $< -MT $@ >> $@
  382. ${WORKDIR}/%.s: ${LIBSRCDIR}/%.c
  383. mkdir -p ${dir $@}
  384. ${CC} ${CINCLUDE} ${CFLAGS} -S -o $@ $<
  385. ${WORKDIR}/%.o: ${LIBSRCDIR}/%.c
  386. mkdir -p ${dir $@}
  387. ${CC} ${CINCLUDE} ${CFLAGS} -c -o $@ $<
  388. ${WORKDIR}/%.d : ${BINSRCDIR}/%.c
  389. mkdir -p ${dir $@}
  390. ${MAKEDEPEND} ${CINCLUDE} ${CFLAGS} $< -MT ${@:%.d=%.o} > $@
  391. ${WORKDIR}/%.s : ${BINSRCDIR}/%.c ${WORKDIR}/%.o
  392. mkdir -p ${dir $@}
  393. ${CC} ${CINCLUDE} ${CFLAGS} -S -o $@ $<
  394. ${WORKDIR}/%.o : ${BINSRCDIR}/%.c
  395. mkdir -p ${dir $@}
  396. ${CC} ${CINCLUDE} ${CFLAGS} -c -o $@ $<
  397. # Include header file dependencies
  398. include ${ALL_DEPS}