xref: /aosp_15_r20/external/libyuv/linux.mk (revision 4e366538070a3a6c5c163c31b791eab742e1657a)
1*4e366538SXin Li# This is a generic makefile for libyuv for gcc.
2*4e366538SXin Li# make -f linux.mk CXX=clang++
3*4e366538SXin Li
4*4e366538SXin LiCC?=gcc
5*4e366538SXin LiCFLAGS?=-O2 -fomit-frame-pointer
6*4e366538SXin LiCFLAGS+=-Iinclude/
7*4e366538SXin Li
8*4e366538SXin LiCXX?=g++
9*4e366538SXin LiCXXFLAGS?=-O2 -fomit-frame-pointer
10*4e366538SXin LiCXXFLAGS+=-Iinclude/
11*4e366538SXin Li
12*4e366538SXin LiLOCAL_OBJ_FILES := \
13*4e366538SXin Li	source/compare.o           \
14*4e366538SXin Li	source/compare_common.o    \
15*4e366538SXin Li	source/compare_gcc.o       \
16*4e366538SXin Li	source/compare_msa.o       \
17*4e366538SXin Li	source/compare_neon.o      \
18*4e366538SXin Li	source/compare_neon64.o    \
19*4e366538SXin Li	source/compare_win.o       \
20*4e366538SXin Li	source/convert.o           \
21*4e366538SXin Li	source/convert_argb.o      \
22*4e366538SXin Li	source/convert_from.o      \
23*4e366538SXin Li	source/convert_from_argb.o \
24*4e366538SXin Li	source/convert_jpeg.o      \
25*4e366538SXin Li	source/convert_to_argb.o   \
26*4e366538SXin Li	source/convert_to_i420.o   \
27*4e366538SXin Li	source/cpu_id.o            \
28*4e366538SXin Li	source/mjpeg_decoder.o     \
29*4e366538SXin Li	source/mjpeg_validate.o    \
30*4e366538SXin Li	source/planar_functions.o  \
31*4e366538SXin Li	source/rotate.o            \
32*4e366538SXin Li	source/rotate_any.o        \
33*4e366538SXin Li	source/rotate_argb.o       \
34*4e366538SXin Li	source/rotate_common.o     \
35*4e366538SXin Li	source/rotate_gcc.o        \
36*4e366538SXin Li	source/rotate_lsx.o        \
37*4e366538SXin Li	source/rotate_msa.o        \
38*4e366538SXin Li	source/rotate_neon.o       \
39*4e366538SXin Li	source/rotate_neon64.o     \
40*4e366538SXin Li	source/rotate_win.o        \
41*4e366538SXin Li	source/row_any.o           \
42*4e366538SXin Li	source/row_common.o        \
43*4e366538SXin Li	source/row_gcc.o           \
44*4e366538SXin Li	source/row_lasx.o          \
45*4e366538SXin Li	source/row_lsx.o           \
46*4e366538SXin Li	source/row_msa.o           \
47*4e366538SXin Li	source/row_neon.o          \
48*4e366538SXin Li	source/row_neon64.o        \
49*4e366538SXin Li	source/row_rvv.o           \
50*4e366538SXin Li	source/row_win.o           \
51*4e366538SXin Li	source/scale.o             \
52*4e366538SXin Li	source/scale_any.o         \
53*4e366538SXin Li	source/scale_argb.o        \
54*4e366538SXin Li	source/scale_common.o      \
55*4e366538SXin Li	source/scale_gcc.o         \
56*4e366538SXin Li	source/scale_lsx.o         \
57*4e366538SXin Li	source/scale_msa.o         \
58*4e366538SXin Li	source/scale_neon.o        \
59*4e366538SXin Li	source/scale_neon64.o      \
60*4e366538SXin Li	source/scale_rgb.o         \
61*4e366538SXin Li	source/scale_rvv.o         \
62*4e366538SXin Li	source/scale_uv.o          \
63*4e366538SXin Li	source/scale_win.o         \
64*4e366538SXin Li	source/video_common.o
65*4e366538SXin Li
66*4e366538SXin Li.cc.o:
67*4e366538SXin Li	$(CXX) -c $(CXXFLAGS) $*.cc -o $*.o
68*4e366538SXin Li
69*4e366538SXin Li.c.o:
70*4e366538SXin Li	$(CC) -c $(CFLAGS) $*.c -o $*.o
71*4e366538SXin Li
72*4e366538SXin Liall: libyuv.a i444tonv12_eg yuvconvert yuvconstants cpuid psnr
73*4e366538SXin Li
74*4e366538SXin Lilibyuv.a: $(LOCAL_OBJ_FILES)
75*4e366538SXin Li	$(AR) $(ARFLAGS) $@ $(LOCAL_OBJ_FILES)
76*4e366538SXin Li
77*4e366538SXin Li# A C++ test utility that uses libyuv conversion.
78*4e366538SXin Liyuvconvert: util/yuvconvert.cc libyuv.a
79*4e366538SXin Li	$(CXX) $(CXXFLAGS) -Iutil/ -o $@ util/yuvconvert.cc libyuv.a
80*4e366538SXin Li
81*4e366538SXin Li# A C test utility that generates yuvconstants for yuv to rgb.
82*4e366538SXin Liyuvconstants: util/yuvconstants.c libyuv.a
83*4e366538SXin Li	$(CXX) $(CXXFLAGS) -Iutil/ -lm -o $@ util/yuvconstants.c libyuv.a
84*4e366538SXin Li
85*4e366538SXin Li# A standalone test utility
86*4e366538SXin Lipsnr: util/psnr.cc
87*4e366538SXin Li	$(CXX) $(CXXFLAGS) -Iutil/ -o $@ util/psnr.cc util/psnr_main.cc util/ssim.cc
88*4e366538SXin Li
89*4e366538SXin Li# A simple conversion example.
90*4e366538SXin Lii444tonv12_eg: util/i444tonv12_eg.cc libyuv.a
91*4e366538SXin Li	$(CXX) $(CXXFLAGS) -o $@ util/i444tonv12_eg.cc libyuv.a
92*4e366538SXin Li
93*4e366538SXin Li# A C test utility that uses libyuv conversion from C.
94*4e366538SXin Li# gcc 4.4 and older require -fno-exceptions to avoid link error on __gxx_personality_v0
95*4e366538SXin Li# CC=gcc-4.4 CXXFLAGS=-fno-exceptions CXX=g++-4.4 make -f linux.mk
96*4e366538SXin Licpuid: util/cpuid.c libyuv.a
97*4e366538SXin Li	$(CC) $(CFLAGS) -o $@ util/cpuid.c libyuv.a
98*4e366538SXin Li
99*4e366538SXin Liclean:
100*4e366538SXin Li	/bin/rm -f source/*.o *.ii *.s libyuv.a i444tonv12_eg yuvconvert yuvconstants cpuid psnr
101