Makefile 14 KB

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