summaryrefslogtreecommitdiffstats
path: root/media/libvpx/libvpx/build/make/ads2gas_apple.pl
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
commit6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch)
treea68f146d7fa01f0134297619fbe7e33db084e0aa /media/libvpx/libvpx/build/make/ads2gas_apple.pl
parentInitial commit. (diff)
downloadthunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz
thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'media/libvpx/libvpx/build/make/ads2gas_apple.pl')
-rwxr-xr-xmedia/libvpx/libvpx/build/make/ads2gas_apple.pl114
1 files changed, 114 insertions, 0 deletions
diff --git a/media/libvpx/libvpx/build/make/ads2gas_apple.pl b/media/libvpx/libvpx/build/make/ads2gas_apple.pl
new file mode 100755
index 0000000000..62491c1918
--- /dev/null
+++ b/media/libvpx/libvpx/build/make/ads2gas_apple.pl
@@ -0,0 +1,114 @@
+#!/usr/bin/env perl
+##
+## Copyright (c) 2010 The WebM project authors. All Rights Reserved.
+##
+## Use of this source code is governed by a BSD-style license
+## that can be found in the LICENSE file in the root of the source
+## tree. An additional intellectual property rights grant can be found
+## in the file PATENTS. All contributing project authors may
+## be found in the AUTHORS file in the root of the source tree.
+##
+
+
+# ads2gas_apple.pl
+# Author: Eric Fung (efung (at) acm.org)
+#
+# Convert ARM Developer Suite 1.0.1 syntax assembly source to GNU as format
+#
+# Usage: cat inputfile | perl ads2gas_apple.pl > outputfile
+#
+
+print "@ This file was created from a .asm file\n";
+print "@ using the ads2gas_apple.pl script.\n\n";
+print ".syntax unified\n";
+
+my %macro_aliases;
+
+my @mapping_list = ("\$0", "\$1", "\$2", "\$3", "\$4", "\$5", "\$6", "\$7", "\$8", "\$9");
+
+my @incoming_array;
+
+# Perl trim function to remove whitespace from the start and end of the string
+sub trim($)
+{
+ my $string = shift;
+ $string =~ s/^\s+//;
+ $string =~ s/\s+$//;
+ return $string;
+}
+
+while (<STDIN>)
+{
+ # Load and store alignment
+ s/@/,:/g;
+
+ # Comment character
+ s/;/@/;
+
+ # Convert ELSE to .else
+ s/\bELSE\b/.else/g;
+
+ # Convert ENDIF to .endif
+ s/\bENDIF\b/.endif/g;
+
+ # Convert IF to .if
+ if (s/\bIF\b/.if/g) {
+ s/=+/==/g;
+ }
+
+ # Convert INCLUDE to .INCLUDE "file"
+ s/INCLUDE\s?(.*)$/.include \"$1\"/;
+
+ # No AREA required
+ # But ALIGNs in AREA must be obeyed
+ s/^(\s*)\bAREA\b.*ALIGN=([0-9])$/$1.text\n$1.p2align $2/;
+ # If no ALIGN, strip the AREA and align to 4 bytes
+ s/^(\s*)\bAREA\b.*$/$1.text\n$1.p2align 2/;
+
+ # Make function visible to linker.
+ s/EXPORT\s+\|([\$\w]*)\|/.globl _$1/;
+
+ # No vertical bars on function names
+ s/^\|(\$?\w+)\|/$1/g;
+
+ # Labels and functions need a leading underscore and trailing colon
+ s/^([a-zA-Z_0-9\$]+)/_$1:/ if !/EQU/;
+
+ # Branches need to call the correct, underscored, function
+ s/^(\s+b[egln]?[teq]?\s+)([a-zA-Z_0-9\$]+)/$1 _$2/ if !/EQU/;
+
+ # ALIGN directive
+ s/\bALIGN\b/.balign/g;
+
+ # Strip ARM
+ s/\s+ARM//;
+
+ # Strip REQUIRE8
+ s/\s+REQUIRE8//;
+
+ # Strip PRESERVE8
+ s/\s+PRESERVE8//;
+
+ # Strip PROC and ENDPROC
+ s/\bPROC\b//g;
+ s/\bENDP\b//g;
+
+ # EQU directive
+ s/(\S+\s+)EQU(\s+\S+)/.equ $1, $2/;
+
+ # Begin macro definition
+ if (/\bMACRO\b/) {
+ # Process next line down, which will be the macro definition
+ $_ = <STDIN>;
+ s/^/.macro/;
+ s/\$//g; # Remove $ from the variables in the declaration
+ }
+
+ s/\$/\\/g; # Use \ to reference formal parameters
+ # End macro definition
+
+ s/\bMEND\b/.endm/; # No need to tell it where to stop assembling
+ next if /^\s*END\s*$/;
+ s/[ \t]+$//;
+ print;
+}