| Index: third_party/freetype2/src/builds/atari/deflinejoiner.awk
|
| diff --git a/third_party/freetype2/src/builds/atari/deflinejoiner.awk b/third_party/freetype2/src/builds/atari/deflinejoiner.awk
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..16d9e6dd9333e05e73a5b2b699c72ab7966d11a9
|
| --- /dev/null
|
| +++ b/third_party/freetype2/src/builds/atari/deflinejoiner.awk
|
| @@ -0,0 +1,181 @@
|
| +#!/usr/bin/env awk
|
| +
|
| +
|
| +function shift( array, \
|
| + junk, elm0, l )
|
| +{
|
| + elm0 = array[0]
|
| + for ( l = 0; l < asorti( array, junk ) - 1; l++ )
|
| + array[l] = array[l+1];
|
| + delete array[l]
|
| + return elm0
|
| +}
|
| +
|
| +
|
| +function init_cpp_src_line()
|
| +{
|
| + logical_line = ""
|
| + delete break_pos
|
| +}
|
| +
|
| +
|
| +function shift_valid_bp( array, \
|
| + junk, elm )
|
| +{
|
| + elm = -1
|
| +
|
| + if ( 0 < asorti( array, junk ) )
|
| + do {
|
| + elm = shift( array )
|
| + } while ( 0 > elm );
|
| +
|
| + return elm
|
| +}
|
| +
|
| +
|
| +function check_cpp_src_line_break_pos( \
|
| + i, junk )
|
| +{
|
| + printf( "break_pos:" )
|
| + for ( i = 0; i < asorti( break_pos, junk ); i++ )
|
| + printf( " %d", break_pos[i] );
|
| + printf( "\n" )
|
| +}
|
| +
|
| +
|
| +function check_cpp_src_line()
|
| +{
|
| + printf( "logical_line[%s]\n", logical_line )
|
| + check_cpp_src_line_break_pos()
|
| +}
|
| +
|
| +
|
| +function append_line( phys_line, \
|
| + filt_line, bp_len )
|
| +{
|
| + filt_line = phys_line
|
| + sub( /\\$/, " ", filt_line )
|
| + logical_line = logical_line filt_line
|
| + bp_len = asorti( break_pos, junk )
|
| + break_pos[bp_len] = length( logical_line ) - 1
|
| +}
|
| +
|
| +
|
| +function print_line( \
|
| + c0, c1, i, junk, part_str )
|
| +{
|
| + c0 = 0
|
| +
|
| + while( asorti( break_pos, junk ) > 1 )
|
| + {
|
| + if ( ( c1 = shift_valid_bp( break_pos ) ) < 1 )
|
| + {
|
| + part_str = substr( logical_line, c0 + 1 )
|
| + printf( "%s\n", part_str )
|
| + return
|
| + }
|
| +
|
| + part_str = substr( logical_line, c0 + 1, c1 - c0 + 1 )
|
| + gsub( / $/, "\\", part_str )
|
| + printf( "%s\n", part_str )
|
| + c0 = c1 + 1
|
| + }
|
| +
|
| + part_str = substr( logical_line, c0 + 1 )
|
| + printf( "%s\n", part_str )
|
| +}
|
| +
|
| +
|
| +function shrink_spaces( pos, \
|
| + tail, removed_length, k )
|
| +{
|
| + tail = substr( logical_line, pos )
|
| + sub( /^[ \t]+/, " ", tail )
|
| + removed_length = length( logical_line ) - pos - length( tail ) + 1
|
| + logical_line = substr( logical_line, 0, pos - 1 ) tail
|
| +
|
| +
|
| + for ( k = 0; k < asorti( break_pos, junk ); k++ )
|
| + if ( ( pos + removed_length ) <= break_pos[k] )
|
| + break_pos[k] = break_pos[k] - removed_length;
|
| + else if ( pos <= break_pos[k] )
|
| + break_pos[k] = -1;
|
| +
|
| + return removed_length
|
| +}
|
| +
|
| +
|
| +function shrink_spaces_to_linebreak( pos, \
|
| + junk, part_str, removed_length, i )
|
| +{
|
| + for ( i = 0; i < asorti( break_pos, junk ) && break_pos[i] < pos ; i++ )
|
| + ;
|
| +
|
| + if ( break_pos[i] < 1 )
|
| + return;
|
| +
|
| + part_str = substr( logical_line, pos, break_pos[i] - pos + 1 )
|
| + sub( /^[ \t]+/, " ", part_str )
|
| + removed_length = ( break_pos[i] - pos + 1 ) - length( part_str )
|
| +
|
| + tail = substr( logical_line, pos + removed_length )
|
| + logical_line = substr( logical_line, 0, pos - 1 ) tail
|
| +
|
| + for ( ; i < asorti( break_pos, junk ); i++ )
|
| + break_pos[i] -= removed_length;
|
| +
|
| + return removed_length
|
| +}
|
| +
|
| +
|
| +function delete_linebreaks_in_2nd_token( \
|
| + tail, paren_depth, junk, i, j, k, l )
|
| +{
|
| + if ( logical_line ~ /^[ \t]*#[ \t]*define[ \t]+[0-9A-Za-z_]+\(/ )
|
| + {
|
| + tail = logical_line
|
| + sub( /^[ \t]*#[ \t]*define[ \t]+[0-9A-Za-z_]+/, "", tail )
|
| +
|
| + paren_depth = 0
|
| + l = 0
|
| + i = length( logical_line ) - length( tail ) + 1 # seek to the 1st op paren
|
| + j = i
|
| + do {
|
| + if ( substr( logical_line, j, 2 ) ~ /[ \t][ \t]/ )
|
| + l = shrink_spaces( j );
|
| + else if ( substr( logical_line, j, 1 ) == "(" )
|
| + paren_depth += 1;
|
| + else if ( substr( logical_line, j, 1 ) == ")" )
|
| + paren_depth -= 1;
|
| + j += 1
|
| + } while ( j < length( logical_line ) && paren_depth != 0 )
|
| +
|
| + for ( k = 0; k < asorti( break_pos, junk ); k++ )
|
| + if ( i <= break_pos[k] && break_pos[k] < j )
|
| + break_pos[k] = -1;
|
| +
|
| + if ( l > 0 )
|
| + shrink_spaces_to_linebreak( j );
|
| + }
|
| +}
|
| +
|
| +
|
| +BEGIN{
|
| + init_cpp_src_line()
|
| +}
|
| +{
|
| + append_line( $0 )
|
| + if ( $0 !~ /\\$/ )
|
| + {
|
| + delete_linebreaks_in_2nd_token()
|
| + print_line()
|
| + init_cpp_src_line()
|
| + }
|
| +}
|
| +END{
|
| + if ( 0 < length( logical_line ) )
|
| + {
|
| + delete_linebreaks_in_2nd_token()
|
| + print_line()
|
| + }
|
| +}
|
|
|