Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(778)

Side by Side Diff: generate_gypi.sh

Issue 148963005: Specify -mfpu=neon for neon files (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | libvpx.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/bash -e 1 #!/bin/bash -e
2 # 2 #
3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 3 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 # This script is used to generate .gypi files and files in the config/platform 7 # This script is used to generate .gypi files and files in the config/platform
8 # directories needed to build libvpx. 8 # directories needed to build libvpx.
9 # Every time libvpx source code is updated just run this script. 9 # Every time libvpx source code is updated just run this script.
10 # 10 #
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 echo " '<(libvpx_source)'," >> $2 72 echo " '<(libvpx_source)'," >> $2
73 echo " ]," >> $2 73 echo " ]," >> $2
74 echo " 'sources': [" >> $2 74 echo " 'sources': [" >> $2
75 for f in $sources_list 75 for f in $sources_list
76 do 76 do
77 echo " '<(libvpx_source)/$f'," >> $2 77 echo " '<(libvpx_source)/$f'," >> $2
78 done 78 done
79 echo " ]," >> $2 79 echo " ]," >> $2
80 echo " 'conditions': [" >> $2 80 echo " 'conditions': [" >> $2
81 echo " ['os_posix==1 and OS!=\"mac\"', {" >> $2 81 echo " ['os_posix==1 and OS!=\"mac\"', {" >> $2
82 echo " 'cflags!': [ '-mfpu=vfpv3-d16' ]," >> $2
82 echo " 'cflags': [ '-m$4', ]," >> $2 83 echo " 'cflags': [ '-m$4', ]," >> $2
83 echo " }]," >> $2 84 echo " }]," >> $2
84 echo " ['OS==\"mac\"', {" >> $2 85 echo " ['OS==\"mac\"', {" >> $2
85 echo " 'xcode_settings': {" >> $2 86 echo " 'xcode_settings': {" >> $2
86 echo " 'OTHER_CFLAGS': [ '-m$4', ]," >> $2 87 echo " 'OTHER_CFLAGS': [ '-m$4', ]," >> $2
87 echo " }," >> $2 88 echo " }," >> $2
88 echo " }]," >> $2 89 echo " }]," >> $2
89 echo " ]," >> $2 90 echo " ]," >> $2
90 echo " }," >> $2 91 echo " }," >> $2
91 } 92 }
92 93
93 94
94 # Generate a gypi which applies additional compiler flags based on the file 95 # Generate a gypi which applies additional compiler flags based on the file
95 # name. 96 # name.
96 # $1 - Array name for file list. 97 # $1 - Array name for file list.
97 # $2 - Output file 98 # $2 - Output file
98 function write_special_flags { 99 function write_special_flags {
99 declare -a file_list=("${!1}") 100 declare -a file_list=("${!1}")
100 101
101 local mmx_sources=$(echo "$file_list" | grep '_mmx\.c$') 102 local mmx_sources=$(echo "$file_list" | grep '_mmx\.c$')
102 local sse2_sources=$(echo "$file_list" | grep '_sse2\.c$') 103 local sse2_sources=$(echo "$file_list" | grep '_sse2\.c$')
103 local sse3_sources=$(echo "$file_list" | grep '_sse3\.c$') 104 local sse3_sources=$(echo "$file_list" | grep '_sse3\.c$')
104 local ssse3_sources=$(echo "$file_list" | grep '_ssse3\.c$') 105 local ssse3_sources=$(echo "$file_list" | grep '_ssse3\.c$')
105 local sse4_1_sources=$(echo "$file_list" | grep '_sse4\.c$') 106 local sse4_1_sources=$(echo "$file_list" | grep '_sse4\.c$')
106 local avx_sources=$(echo "$file_list" | grep '_avx\.c$') 107 local avx_sources=$(echo "$file_list" | grep '_avx\.c$')
107 local avx2_sources=$(echo "$file_list" | grep '_avx2\.c$') 108 local avx2_sources=$(echo "$file_list" | grep '_avx2\.c$')
108 109
110 local neon_sources=$(echo "$file_list" | grep '_neon\.c$')
111
109 # Intrinsic functions and files are in flux. We can selectively generate them 112 # Intrinsic functions and files are in flux. We can selectively generate them
110 # but we can not selectively include them in libvpx.gyp. Throw some warnings 113 # but we can not selectively include them in libvpx.gyp. Throw some errors
111 # when the expected output changes. 114 # when new targets are needed.
112
113 # Expect output for these:
114 if [ 0 -eq ${#mmx_sources} ]; then
115 echo "ERROR: Comment mmx sections in libvpx.gyp"
116 exit 1
117 fi
118 if [ 0 -eq ${#sse2_sources} ]; then
119 echo "ERROR: Comment sse2 sections in libvpx.gyp"
120 exit 1
121 fi
122 if [ 0 -eq ${#ssse3_sources} ]; then
123 echo "ERROR: Comment ssse3 sections in libvpx.gyp"
124 exit 1
125 fi
126
127 # Do not expect output for these:
128 if [ 0 -ne ${#sse3_sources} ]; then
129 echo "ERROR: Uncomment sse3 sections in libvpx.gyp"
130 exit 1
131 fi
132 if [ 0 -ne ${#sse4_1_sources} ]; then
133 echo "ERROR: Uncomment sse4_1 sections in libvpx.gyp"
134 exit 1
135 fi
136 if [ 0 -ne ${#avx_sources} ]; then
137 echo "ERROR: Uncomment avx sections in libvpx.gyp"
138 exit 1
139 fi
140 if [ 0 -ne ${#avx2_sources} ]; then
141 echo "ERROR: Uncomment avx2 sections in libvpx.gyp"
142 exit 1
143 fi
144 115
145 write_gypi_header $2 116 write_gypi_header $2
146 117
147 echo " 'targets': [" >> $2 118 echo " 'targets': [" >> $2
148 119
149 write_target_definition mmx_sources[@] $2 libvpx_intrinsics_mmx mmx 120 # x86[_64]
150 write_target_definition sse2_sources[@] $2 libvpx_intrinsics_sse2 sse2 121 if [ 0 -ne ${#mmx_sources} ]; then
151 #write_target_definition sse3_sources[@] $2 libvpx_intrinsics_sse3 sse3 122 write_target_definition mmx_sources[@] $2 libvpx_intrinsics_mmx mmx
152 write_target_definition ssse3_sources[@] $2 libvpx_intrinsics_ssse3 ssse3 123 fi
153 #write_target_definition sse4_1_sources[@] $2 libvpx_intrinsics_sse4_1 sse4.1 124 if [ 0 -ne ${#sse2_sources} ]; then
154 #write_target_definition avx_sources[@] $2 libvpx_intrinsics_avx avx 125 write_target_definition sse2_sources[@] $2 libvpx_intrinsics_sse2 sse2
155 #write_target_definition avx2_sources[@] $2 libvpx_intrinsics_avx2 avx2 126 fi
127 if [ 0 -ne ${#sse3_sources} ]; then
128 #write_target_definition sse3_sources[@] $2 libvpx_intrinsics_sse3 sse3
129 echo "ERROR: Uncomment sse3 sections in libvpx.gyp"
130 exit 1
131 fi
132 if [ 0 -ne ${#ssse3_sources} ]; then
133 write_target_definition ssse3_sources[@] $2 libvpx_intrinsics_ssse3 ssse3
134 fi
135 if [ 0 -ne ${#sse4_1_sources} ]; then
136 #write_target_definition sse4_1_sources[@] $2 libvpx_intrinsics_sse4_1 sse4. 1
137 echo "ERROR: Uncomment sse4_1 sections in libvpx.gyp"
138 exit 1
139 fi
140 if [ 0 -ne ${#avx_sources} ]; then
141 #write_target_definition avx_sources[@] $2 libvpx_intrinsics_avx avx
142 echo "ERROR: Uncomment avx sections in libvpx.gyp"
143 exit 1
144 fi
145 if [ 0 -ne ${#avx2_sources} ]; then
146 #write_target_definition avx2_sources[@] $2 libvpx_intrinsics_avx2 avx2
147 echo "ERROR: Uncomment avx2 sections in libvpx.gyp"
148 exit 1
149 fi
150
151 # arm neon
152 if [ 0 -ne ${#neon_sources} ]; then
153 write_target_definition neon_sources[@] $2 libvpx_intrinsics_neon fpu=neon
154 fi
156 155
157 echo " ]," >> $2 156 echo " ]," >> $2
158 157
159 write_gypi_footer $2 158 write_gypi_footer $2
160 } 159 }
161 160
162 # Convert a list of source files into gypi file. 161 # Convert a list of source files into gypi file.
163 # $1 - Input file. 162 # $1 - Input file.
164 # $2 - Output gypi file base. Will generate additional .gypi files when 163 # $2 - Output gypi file base. Will generate additional .gypi files when
165 # different compilation flags are required. 164 # different compilation flags are required.
(...skipping 10 matching lines...) Expand all
176 # not part of the compiled library. 175 # not part of the compiled library.
177 source_list=$(echo "$source_list" | grep -v '_offsets\.c') 176 source_list=$(echo "$source_list" | grep -v '_offsets\.c')
178 177
179 # Not sure why vpx_config is not included. 178 # Not sure why vpx_config is not included.
180 source_list=$(echo "$source_list" | grep -v 'vpx_config\.c') 179 source_list=$(echo "$source_list" | grep -v 'vpx_config\.c')
181 180
182 # The actual ARM files end in .asm. We have rules to translate them to .S 181 # The actual ARM files end in .asm. We have rules to translate them to .S
183 source_list=$(echo "$source_list" | sed s/\.asm\.s$/.asm/) 182 source_list=$(echo "$source_list" | sed s/\.asm\.s$/.asm/)
184 183
185 # Select all x86 files ending with .c 184 # Select all x86 files ending with .c
186 local x86_intrinsic_list=$(echo "$source_list" | \ 185 local intrinsic_list=$(echo "$source_list" | \
187 egrep 'vp[89]/(encoder|decoder|common)/x86/' | \ 186 egrep 'vp[89]/(encoder|decoder|common)/x86/' | \
188 egrep '(mmx|sse2|sse3|ssse3|sse4|avx|avx2).c$') 187 egrep '(mmx|sse2|sse3|ssse3|sse4|avx|avx2).c$')
189 188
189 # Select all neon files ending in C but only when building in RTCD mode
190 if [ "libvpx_srcs_arm_neon_cpu_detect" == "$2" ]; then
191 # Select all arm neon files ending in _neon.c
192 # the pattern may need to be updated if vpx_scale gets intrinics
193 local intrinsic_list=$(echo "$source_list" | \
194 egrep 'vp[89]/(encoder|decoder|common)/arm/neon/' | \
195 egrep '_neon.c$')
196 fi
197
190 # Remove these files from the main list. 198 # Remove these files from the main list.
191 source_list=$(comm -23 <(echo "$source_list") <(echo "$x86_intrinsic_list")) 199 source_list=$(comm -23 <(echo "$source_list") <(echo "$intrinsic_list"))
192 200
193 write_file_list source_list $BASE_DIR/$2.gypi 201 write_file_list source_list $BASE_DIR/$2.gypi
194 202
195 # All the files are in a single "element." Check if the first element has 203 # All the files are in a single "element." Check if the first element has
196 # length 0. 204 # length 0.
197 if [ 0 -ne ${#x86_intrinsic_list} ]; then 205 if [ 0 -ne ${#intrinsic_list} ]; then
198 write_special_flags x86_intrinsic_list[@] $BASE_DIR/$2_intrinsics.gypi 206 write_special_flags intrinsic_list[@] $BASE_DIR/$2_intrinsics.gypi
199 fi 207 fi
200 208
201 } 209 }
202 210
203 # Clean files from previous make. 211 # Clean files from previous make.
204 function make_clean { 212 function make_clean {
205 make clean > /dev/null 213 make clean > /dev/null
206 rm -f libvpx_srcs.txt 214 rm -f libvpx_srcs.txt
207 } 215 }
208 216
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 make_clean 411 make_clean
404 make libvpx_srcs.txt target=libs $config > /dev/null 412 make libvpx_srcs.txt target=libs $config > /dev/null
405 convert_srcs_to_gypi libvpx_srcs.txt libvpx_srcs_nacl 413 convert_srcs_to_gypi libvpx_srcs.txt libvpx_srcs_nacl
406 414
407 echo "Remove temporary directory." 415 echo "Remove temporary directory."
408 cd $BASE_DIR 416 cd $BASE_DIR
409 rm -rf $TEMP_DIR 417 rm -rf $TEMP_DIR
410 418
411 # TODO(fgalligan): Is "--disable-fast-unaligned" needed on mipsel? 419 # TODO(fgalligan): Is "--disable-fast-unaligned" needed on mipsel?
412 # TODO(fgalligan): Can we turn on "--enable-realtime-only" for mipsel? 420 # TODO(fgalligan): Can we turn on "--enable-realtime-only" for mipsel?
OLDNEW
« no previous file with comments | « no previous file | libvpx.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698