From f3876ea4850dcb52c200cf7b8955dc6790626829 Mon Sep 17 00:00:00 2001 From: Diego Biurrun Date: Wed, 15 Jun 2011 00:30:03 +0200 Subject: [PATCH 1/8] Move some variable declarations below the proper #ifdefs. This avoids warnings about set-but-unused variables. --- ffplay.c | 4 ++-- libavcodec/fft-test.c | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ffplay.c b/ffplay.c index 43cd50c5eb..73b30c400b 100644 --- a/ffplay.c +++ b/ffplay.c @@ -1313,9 +1313,10 @@ static void alloc_picture(void *opaque) static int queue_picture(VideoState *is, AVFrame *src_frame, double pts, int64_t pos) { VideoPicture *vp; - int dst_pix_fmt; #if CONFIG_AVFILTER AVPicture pict_src; +#else + int dst_pix_fmt = PIX_FMT_YUV420P; #endif /* wait until we have space to put a new picture */ SDL_LockMutex(is->pictq_mutex); @@ -1376,7 +1377,6 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts, int64_t /* get a pointer on the bitmap */ SDL_LockYUVOverlay (vp->bmp); - dst_pix_fmt = PIX_FMT_YUV420P; memset(&pict,0,sizeof(AVPicture)); pict.data[0] = vp->bmp->pixels[0]; pict.data[1] = vp->bmp->pixels[2]; diff --git a/libavcodec/fft-test.c b/libavcodec/fft-test.c index 0112c6fcbb..59a53ddeb6 100644 --- a/libavcodec/fft-test.c +++ b/libavcodec/fft-test.c @@ -252,8 +252,9 @@ int main(int argc, char **argv) #if CONFIG_FFT_FLOAT RDFTContext r1, *r = &r1; DCTContext d1, *d = &d1; + int fft_size_2; #endif - int fft_nbits, fft_size, fft_size_2; + int fft_nbits, fft_size; double scale = 1.0; AVLFG prng; av_lfg_init(&prng, 1); @@ -292,7 +293,6 @@ int main(int argc, char **argv) } fft_size = 1 << fft_nbits; - fft_size_2 = fft_size >> 1; tab = av_malloc(fft_size * sizeof(FFTComplex)); tab1 = av_malloc(fft_size * sizeof(FFTComplex)); tab_ref = av_malloc(fft_size * sizeof(FFTComplex)); @@ -372,6 +372,7 @@ int main(int argc, char **argv) break; #if CONFIG_FFT_FLOAT case TRANSFORM_RDFT: + fft_size_2 = fft_size >> 1; if (do_inverse) { tab1[ 0].im = 0; tab1[fft_size_2].im = 0; From 9ddf1b1ae4d654008501726f98a244627b8765a0 Mon Sep 17 00:00:00 2001 From: Alexis Ballier Date: Wed, 22 Jun 2011 22:25:14 +0200 Subject: [PATCH 2/8] configure: allow post-fixed cpu strings for athlon64, k8, and opteron when setting the -march flag. This is to match gcc's {athlon64,k8,opteron}-sse3 -march flags. Signed-off-by: Justin Ruggles --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 70317178ad..db3277f262 100755 --- a/configure +++ b/configure @@ -2233,7 +2233,7 @@ elif enabled x86; then disable cmov ;; # targets that do support conditional mov (cmov) - i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2|amdfam10|barcelona|atom) + i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64*|k8*|opteron*|athlon-fx|core2|amdfam10|barcelona|atom) cpuflags="-march=$cpu" enable cmov enable fast_cmov From 3fbc9bbb884da6a1fb331b1cb03945008ee36312 Mon Sep 17 00:00:00 2001 From: Diego Biurrun Date: Sun, 26 Jun 2011 16:37:07 +0200 Subject: [PATCH 3/8] mpeg4videoenc: Remove disabled variant of mpeg4_encode_block(). MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As a nice sideeffect this fixes the following warning: libavcodec/mpeg4videoenc.c:302:20: warning: variable ‘rl’ set but not used [-Wunused-but-set-variable] --- libavcodec/mpeg4videoenc.c | 65 -------------------------------------- 1 file changed, 65 deletions(-) diff --git a/libavcodec/mpeg4videoenc.c b/libavcodec/mpeg4videoenc.c index 8a9bd198df..8a044d6d23 100644 --- a/libavcodec/mpeg4videoenc.c +++ b/libavcodec/mpeg4videoenc.c @@ -296,10 +296,6 @@ static inline void mpeg4_encode_block(MpegEncContext * s, DCTELEM * block, int n uint8_t *scan_table, PutBitContext *dc_pb, PutBitContext *ac_pb) { int i, last_non_zero; -#if 0 //variables for the outcommented version - int code, sign, last; -#endif - const RLTable *rl; uint32_t *bits_tab; uint8_t *len_tab; const int last_index = s->block_last_index[n]; @@ -309,20 +305,17 @@ static inline void mpeg4_encode_block(MpegEncContext * s, DCTELEM * block, int n mpeg4_encode_dc(dc_pb, intra_dc, n); if(last_index<1) return; i = 1; - rl = &ff_mpeg4_rl_intra; bits_tab= uni_mpeg4_intra_rl_bits; len_tab = uni_mpeg4_intra_rl_len; } else { if(last_index<0) return; i = 0; - rl = &ff_h263_rl_inter; bits_tab= uni_mpeg4_inter_rl_bits; len_tab = uni_mpeg4_inter_rl_len; } /* AC coefs */ last_non_zero = i - 1; -#if 1 for (; i < last_index; i++) { int level = block[ scan_table[i] ]; if (level) { @@ -348,64 +341,6 @@ static inline void mpeg4_encode_block(MpegEncContext * s, DCTELEM * block, int n put_bits(ac_pb, 7+2+1+6+1+12+1, (3<<23)+(3<<21)+(1<<20)+(run<<14)+(1<<13)+(((level-64)&0xfff)<<1)+1); } } -#else - for (; i <= last_index; i++) { - const int slevel = block[ scan_table[i] ]; - if (slevel) { - int level; - int run = i - last_non_zero - 1; - last = (i == last_index); - sign = 0; - level = slevel; - if (level < 0) { - sign = 1; - level = -level; - } - code = get_rl_index(rl, last, run, level); - put_bits(ac_pb, rl->table_vlc[code][1], rl->table_vlc[code][0]); - if (code == rl->n) { - int level1, run1; - level1 = level - rl->max_level[last][run]; - if (level1 < 1) - goto esc2; - code = get_rl_index(rl, last, run, level1); - if (code == rl->n) { - esc2: - put_bits(ac_pb, 1, 1); - if (level > MAX_LEVEL) - goto esc3; - run1 = run - rl->max_run[last][level] - 1; - if (run1 < 0) - goto esc3; - code = get_rl_index(rl, last, run1, level); - if (code == rl->n) { - esc3: - /* third escape */ - put_bits(ac_pb, 1, 1); - put_bits(ac_pb, 1, last); - put_bits(ac_pb, 6, run); - put_bits(ac_pb, 1, 1); - put_sbits(ac_pb, 12, slevel); - put_bits(ac_pb, 1, 1); - } else { - /* second escape */ - put_bits(ac_pb, 1, 0); - put_bits(ac_pb, rl->table_vlc[code][1], rl->table_vlc[code][0]); - put_bits(ac_pb, 1, sign); - } - } else { - /* first escape */ - put_bits(ac_pb, 1, 0); - put_bits(ac_pb, rl->table_vlc[code][1], rl->table_vlc[code][0]); - put_bits(ac_pb, 1, sign); - } - } else { - put_bits(ac_pb, 1, sign); - } - last_non_zero = i; - } - } -#endif } static int mpeg4_get_block_length(MpegEncContext * s, DCTELEM * block, int n, int intra_dc, From 84153d188347b3dee684fab40bf28ddd3eba64cf Mon Sep 17 00:00:00 2001 From: Jason Garrett-Glaser Date: Sat, 25 Jun 2011 19:40:05 -0700 Subject: [PATCH 4/8] H.264: make filter_mb_fast support 4:4:4 --- libavcodec/h264_loopfilter.c | 62 ++++++++++++++++++++++++++++-------- 1 file changed, 49 insertions(+), 13 deletions(-) diff --git a/libavcodec/h264_loopfilter.c b/libavcodec/h264_loopfilter.c index 86ecb2737f..bdfbce79f0 100644 --- a/libavcodec/h264_loopfilter.c +++ b/libavcodec/h264_loopfilter.c @@ -218,10 +218,11 @@ void ff_h264_filter_mb_fast( H264Context *h, int mb_x, int mb_y, uint8_t *img_y, int mb_type, left_type; int qp, qp0, qp1, qpc, qpc0, qpc1, qp_thresh; int chroma = !(CONFIG_GRAY && (s->flags&CODEC_FLAG_GRAY)); + int chroma444 = CHROMA444; mb_xy = h->mb_xy; - if(!h->top_type || !h->h264dsp.h264_loop_filter_strength || h->pps.chroma_qp_diff || CHROMA444) { + if(!h->top_type || !h->h264dsp.h264_loop_filter_strength || h->pps.chroma_qp_diff) { ff_h264_filter_mb(h, mb_x, mb_y, img_y, img_cb, img_cr, linesize, uvlinesize); return; } @@ -264,16 +265,46 @@ void ff_h264_filter_mb_fast( H264Context *h, int mb_x, int mb_y, uint8_t *img_y, filter_mb_edgeh( &img_y[4*3*linesize], linesize, bS3, qp, h); } if(chroma){ - if(left_type){ - filter_mb_edgecv( &img_cb[2*0], uvlinesize, bS4, qpc0, h); - filter_mb_edgecv( &img_cr[2*0], uvlinesize, bS4, qpc0, h); + if(chroma444){ + if(left_type){ + filter_mb_edgev( &img_cb[4*0], linesize, bS4, qpc0, h); + filter_mb_edgev( &img_cr[4*0], linesize, bS4, qpc0, h); + } + if( IS_8x8DCT(mb_type) ) { + filter_mb_edgev( &img_cb[4*2], linesize, bS3, qpc, h); + filter_mb_edgev( &img_cr[4*2], linesize, bS3, qpc, h); + filter_mb_edgeh( &img_cb[4*0*linesize], linesize, bSH, qpc1, h); + filter_mb_edgeh( &img_cr[4*0*linesize], linesize, bSH, qpc1, h); + filter_mb_edgeh( &img_cb[4*2*linesize], linesize, bS3, qpc, h); + filter_mb_edgeh( &img_cr[4*2*linesize], linesize, bS3, qpc, h); + } else { + filter_mb_edgev( &img_cb[4*1], linesize, bS3, qpc, h); + filter_mb_edgev( &img_cr[4*1], linesize, bS3, qpc, h); + filter_mb_edgev( &img_cb[4*2], linesize, bS3, qpc, h); + filter_mb_edgev( &img_cr[4*2], linesize, bS3, qpc, h); + filter_mb_edgev( &img_cb[4*3], linesize, bS3, qpc, h); + filter_mb_edgev( &img_cr[4*3], linesize, bS3, qpc, h); + filter_mb_edgeh( &img_cb[4*0*linesize], linesize, bSH, qpc1, h); + filter_mb_edgeh( &img_cr[4*0*linesize], linesize, bSH, qpc1, h); + filter_mb_edgeh( &img_cb[4*1*linesize], linesize, bS3, qpc, h); + filter_mb_edgeh( &img_cr[4*1*linesize], linesize, bS3, qpc, h); + filter_mb_edgeh( &img_cb[4*2*linesize], linesize, bS3, qpc, h); + filter_mb_edgeh( &img_cr[4*2*linesize], linesize, bS3, qpc, h); + filter_mb_edgeh( &img_cb[4*3*linesize], linesize, bS3, qpc, h); + filter_mb_edgeh( &img_cr[4*3*linesize], linesize, bS3, qpc, h); + } + }else{ + if(left_type){ + filter_mb_edgecv( &img_cb[2*0], uvlinesize, bS4, qpc0, h); + filter_mb_edgecv( &img_cr[2*0], uvlinesize, bS4, qpc0, h); + } + filter_mb_edgecv( &img_cb[2*2], uvlinesize, bS3, qpc, h); + filter_mb_edgecv( &img_cr[2*2], uvlinesize, bS3, qpc, h); + filter_mb_edgech( &img_cb[2*0*uvlinesize], uvlinesize, bSH, qpc1, h); + filter_mb_edgech( &img_cb[2*2*uvlinesize], uvlinesize, bS3, qpc, h); + filter_mb_edgech( &img_cr[2*0*uvlinesize], uvlinesize, bSH, qpc1, h); + filter_mb_edgech( &img_cr[2*2*uvlinesize], uvlinesize, bS3, qpc, h); } - filter_mb_edgecv( &img_cb[2*2], uvlinesize, bS3, qpc, h); - filter_mb_edgecv( &img_cr[2*2], uvlinesize, bS3, qpc, h); - filter_mb_edgech( &img_cb[2*0*uvlinesize], uvlinesize, bSH, qpc1, h); - filter_mb_edgech( &img_cb[2*2*uvlinesize], uvlinesize, bS3, qpc, h); - filter_mb_edgech( &img_cr[2*0*uvlinesize], uvlinesize, bSH, qpc1, h); - filter_mb_edgech( &img_cr[2*2*uvlinesize], uvlinesize, bS3, qpc, h); } return; } else { @@ -301,9 +332,14 @@ void ff_h264_filter_mb_fast( H264Context *h, int mb_x, int mb_y, uint8_t *img_y, #define FILTER(hv,dir,edge)\ if(AV_RN64A(bS[dir][edge])) { \ filter_mb_edge##hv( &img_y[4*edge*(dir?linesize:1)], linesize, bS[dir][edge], edge ? qp : qp##dir, h );\ - if(chroma && !(edge&1)) {\ - filter_mb_edgec##hv( &img_cb[2*edge*(dir?uvlinesize:1)], uvlinesize, bS[dir][edge], edge ? qpc : qpc##dir, h );\ - filter_mb_edgec##hv( &img_cr[2*edge*(dir?uvlinesize:1)], uvlinesize, bS[dir][edge], edge ? qpc : qpc##dir, h );\ + if(chroma){\ + if(chroma444){\ + filter_mb_edge##hv( &img_cb[4*edge*(dir?linesize:1)], linesize, bS[dir][edge], edge ? qpc : qpc##dir, h );\ + filter_mb_edge##hv( &img_cr[4*edge*(dir?linesize:1)], linesize, bS[dir][edge], edge ? qpc : qpc##dir, h );\ + } else if(!(edge&1)) {\ + filter_mb_edgec##hv( &img_cb[2*edge*(dir?uvlinesize:1)], uvlinesize, bS[dir][edge], edge ? qpc : qpc##dir, h );\ + filter_mb_edgec##hv( &img_cr[2*edge*(dir?uvlinesize:1)], uvlinesize, bS[dir][edge], edge ? qpc : qpc##dir, h );\ + }\ }\ } if(left_type) From 9a0dda8b3ab07fa7be60335715a6c350c907a7b8 Mon Sep 17 00:00:00 2001 From: Jason Garrett-Glaser Date: Sun, 26 Jun 2011 00:21:54 -0700 Subject: [PATCH 5/8] H.264: disable 2tap qpel with CODEC_FLAG2_FAST and >8-bit 2tap qpel isn't implemented yet for high bit depth, so it just breaks decoding. --- libavcodec/h264.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavcodec/h264.c b/libavcodec/h264.c index 6bee7c39b0..2c000a3420 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -2485,7 +2485,8 @@ static int decode_slice_header(H264Context *h, H264Context *h0){ s->dropable= h->nal_ref_idc == 0; - if((s->avctx->flags2 & CODEC_FLAG2_FAST) && !h->nal_ref_idc){ + /* FIXME: 2tap qpel isn't implemented for high bit depth. */ + if((s->avctx->flags2 & CODEC_FLAG2_FAST) && !h->nal_ref_idc && !h->pixel_shift){ s->me.qpel_put= s->dsp.put_2tap_qpel_pixels_tab; s->me.qpel_avg= s->dsp.avg_2tap_qpel_pixels_tab; }else{ From 97535ffb9795f59c4fbfacfe1541d752ed47218e Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Sun, 26 Jun 2011 14:41:44 -0700 Subject: [PATCH 6/8] swscale: remove unused xInc/srcW arguments from hScale(). --- libswscale/ppc/swscale_altivec.c | 3 +-- libswscale/swscale.c | 8 +++----- libswscale/swscale_internal.h | 4 ++-- libswscale/x86/swscale_template.c | 3 +-- 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/libswscale/ppc/swscale_altivec.c b/libswscale/ppc/swscale_altivec.c index 42e965de95..47fe54c088 100644 --- a/libswscale/ppc/swscale_altivec.c +++ b/libswscale/ppc/swscale_altivec.c @@ -222,8 +222,7 @@ yuv2yuvX_altivec_real(SwsContext *c, } static void hScale_altivec_real(int16_t *dst, int dstW, - const uint8_t *src, int srcW, - int xInc, const int16_t *filter, + const uint8_t *src, const int16_t *filter, const int16_t *filterPos, int filterSize) { register int i; diff --git a/libswscale/swscale.c b/libswscale/swscale.c index f729c117a7..731f1320b3 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -1804,10 +1804,8 @@ static void rgb24ToUV_half_c(uint8_t *dstU, uint8_t *dstV, const uint8_t *src1, } } - // bilinear / bicubic scaling static void hScale_c(int16_t *dst, int dstW, const uint8_t *src, - int srcW, int xInc, const int16_t *filter, const int16_t *filterPos, int filterSize) { @@ -1886,7 +1884,7 @@ static av_always_inline void hyscale(SwsContext *c, uint16_t *dst, int dstWidth, } if (!c->hyscale_fast) { - c->hScale(dst, dstWidth, src, srcW, xInc, hLumFilter, hLumFilterPos, hLumFilterSize); + c->hScale(dst, dstWidth, src, hLumFilter, hLumFilterPos, hLumFilterSize); } else { // fast bilinear upscale / crap downscale c->hyscale_fast(c, dst, dstWidth, src, srcW, xInc); } @@ -1924,8 +1922,8 @@ static av_always_inline void hcscale(SwsContext *c, uint16_t *dst1, uint16_t *ds } if (!c->hcscale_fast) { - c->hScale(dst1, dstWidth, src1, srcW, xInc, hChrFilter, hChrFilterPos, hChrFilterSize); - c->hScale(dst2, dstWidth, src2, srcW, xInc, hChrFilter, hChrFilterPos, hChrFilterSize); + c->hScale(dst1, dstWidth, src1, hChrFilter, hChrFilterPos, hChrFilterSize); + c->hScale(dst2, dstWidth, src2, hChrFilter, hChrFilterPos, hChrFilterSize); } else { // fast bilinear upscale / crap downscale c->hcscale_fast(c, dst1, dst2, dstWidth, src1, src2, srcW, xInc); } diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index ea34d8ce0e..9967c99eda 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -306,8 +306,8 @@ typedef struct SwsContext { const uint8_t *src1, const uint8_t *src2, int srcW, int xInc); - void (*hScale)(int16_t *dst, int dstW, const uint8_t *src, int srcW, - int xInc, const int16_t *filter, const int16_t *filterPos, + void (*hScale)(int16_t *dst, int dstW, const uint8_t *src, + const int16_t *filter, const int16_t *filterPos, int filterSize); void (*lumConvertRange)(int16_t *dst, int width); ///< Color range conversion function for luma plane if needed. diff --git a/libswscale/x86/swscale_template.c b/libswscale/x86/swscale_template.c index 8fad257ddf..79bf2a4c8c 100644 --- a/libswscale/x86/swscale_template.c +++ b/libswscale/x86/swscale_template.c @@ -1906,8 +1906,7 @@ static void RENAME(rgb24ToUV)(uint8_t *dstU, uint8_t *dstV, #if !COMPILE_TEMPLATE_MMX2 // bilinear / bicubic scaling static void RENAME(hScale)(int16_t *dst, int dstW, - const uint8_t *src, int srcW, - int xInc, const int16_t *filter, + const uint8_t *src, const int16_t *filter, const int16_t *filterPos, int filterSize) { assert(filterSize % 4 == 0 && filterSize>0); From bc877faf7f92deef9c619d81bec85202b9f10f0e Mon Sep 17 00:00:00 2001 From: Mans Rullgard Date: Sat, 25 Jun 2011 11:57:32 +0100 Subject: [PATCH 7/8] build: factor out the .c and .S compile commands as a macro These commands have the same form, and using a common macro allows it to be used elsewhere without further duplication. Signed-off-by: Mans Rullgard --- Makefile | 15 +++++++++++---- configure | 2 ++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index f1bede83db..f16da3acca 100644 --- a/Makefile +++ b/Makefile @@ -23,16 +23,23 @@ endif IFLAGS := -I. -I$(SRC_PATH) CPPFLAGS := $(IFLAGS) $(CPPFLAGS) CFLAGS += $(ECFLAGS) +CCFLAGS = $(CFLAGS) YASMFLAGS += $(IFLAGS) -Pconfig.asm HOSTCFLAGS += $(IFLAGS) +define COMPILE + $($(1)DEP) + $($(1)) $(CPPFLAGS) $($(1)FLAGS) $($(1)_DEPFLAGS) -c $($(1)_O) $< +endef + +COMPILE_C = $(call COMPILE,CC) +COMPILE_S = $(call COMPILE,AS) + %.o: %.c - $(CCDEP) - $(CC) $(CPPFLAGS) $(CFLAGS) $(CC_DEPFLAGS) -c $(CC_O) $< + $(COMPILE_C) %.o: %.S - $(ASDEP) - $(AS) $(CPPFLAGS) $(ASFLAGS) $(AS_DEPFLAGS) -c -o $@ $< + $(COMPILE_S) %.ho: %.h $(CC) $(CPPFLAGS) $(CFLAGS) -Wno-unused -c -o $@ -x c $< diff --git a/configure b/configure index db3277f262..d8454e0d23 100755 --- a/configure +++ b/configure @@ -1674,6 +1674,7 @@ SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)' SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' +AS_O='-o $@' CC_O='-o $@' host_cflags='-D_ISOC99_SOURCE -O3 -g' @@ -3273,6 +3274,7 @@ LN_S=$ln_s CPPFLAGS=$CPPFLAGS CFLAGS=$CFLAGS ASFLAGS=$ASFLAGS +AS_O=$CC_O CC_O=$CC_O DLLTOOL=$dlltool LDFLAGS=$LDFLAGS From 659aa20e56de03b461afdaa6ae7e5d4be6e0d5fc Mon Sep 17 00:00:00 2001 From: Mans Rullgard Date: Sat, 25 Jun 2011 11:51:09 +0100 Subject: [PATCH 8/8] build: improve rules for test programs This generates dependencies for the *-test.o files ensuring rebuilds when necessary. Signed-off-by: Mans Rullgard --- subdir.mak | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/subdir.mak b/subdir.mak index e4d7377fcb..f544796022 100644 --- a/subdir.mak +++ b/subdir.mak @@ -11,16 +11,17 @@ all-$(CONFIG_STATIC): $(SUBDIR)$(LIBNAME) all-$(CONFIG_SHARED): $(SUBDIR)$(SLIBNAME) $(SUBDIR)%-test.o: $(SUBDIR)%-test.c - $(CC) $(CPPFLAGS) $(CFLAGS) -DTEST -c $(CC_O) $^ + $(COMPILE_C) $(SUBDIR)%-test.o: $(SUBDIR)%.c - $(CC) $(CPPFLAGS) $(CFLAGS) -DTEST -c $(CC_O) $^ + $(COMPILE_C) $(SUBDIR)x86/%.o: $(SUBDIR)x86/%.asm $(YASMDEP) $(YASMFLAGS) -I $( $(@:.o=.d) $(YASM) $(YASMFLAGS) -I $(