Rewrite in Markdown. Explain what the tool is useful for today,
and what the tool was used for earlier (which no longer is relevant
today).

---

The brief description of the project on Github is "Perl script that
implements a subset of the GNU as preprocessor that Apple's as doesn't".
I think it might be simplest to shorten this to "Perl script that
implements a subset of the GNU as preprocessor".
---
 README    | 13 -------------
 README.md | 44 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 44 insertions(+), 13 deletions(-)
 delete mode 100644 README
 create mode 100644 README.md

diff --git a/README b/README
deleted file mode 100644
index 0ab5ab3..0000000
--- a/README
+++ /dev/null
@@ -1,13 +0,0 @@
-To configure FFmpeg for iOS:
-
-./configure --enable-cross-compile --arch=arm --target-os=darwin --cc='clang 
-arch armv7' --sysroot=$(xcrun --sdk iphoneos --show-sdk-path) --cpu=cortex-a8 
--enable-pic
-
-If deploying to all generations, it's recommended to do separate out-of-tree
-builds for each architecture, then lipo together the resulting libs. For
-instance, assuming separate builds in armv6 and armv7:
-
-lipo -create -arch armv6 armv6/libavcodec/libavcodec.a -arch armv7 
armv7/libavcodec/libavcodec.a -output universal/libavcodec.a
-
-and similar for each library. Then in XCode, make sure to build for both armv6
-and armv7. If you only care about one generation (since the armv6 devices are
-too slow for instance), then lipo is unnecessary of course.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..9b80f71
--- /dev/null
+++ b/README.md
@@ -0,0 +1,44 @@
+gas-preprocessor
+================
+
+This is a script for parsing GAS (GNU Assembler) files, expanding the
+macros and similar directives into a linear sequence of instructions,
+to allow building such files with assemblers that don't support the
+GAS directives.
+
+Currently, this tool is primarily useful for building GAS files with
+MSVC, for ARM and ARM64. The tool can be used for building the
+ARM/AArch64 assembly in projects like FFmpeg, dav1d, x264 and openh264.
+
+Additionally, for ARM assembly, the tool can rewrite some instructions
+that only can be assembled in ARM mode, into the corresponding sequences
+of instructions that can be assembled in Thumb mode. This can allow
+assembling sources that have been written without support for Thumb
+mode for Windows (where Thumb mode is the default).
+
+Earlier use cases
+-----------------
+
+Originally, the tool was made for building things for Apple platforms;
+ARM and PowerPC assembly. Apple used to ship an ancient version of
+GAS, which used a different macroing syntax than the modern GNU
+assembler.
+
+Since Apple have replaced the ancient version of GAS it with LLVM/Clang
+based tooling, and LLVM's assembler support has improved to handle
+most relevant directives, gas-preprocessor is no longer needed for
+Apple platforms. Since Xcode 9.3 (LLVM 5.0), those tools support
+everything needed for building FFmpeg's ARM assembly without
+gas-preprocessor. (FFmpeg's AArch64 assembly never required
+gas-preprocessor on Apple platforms.)
+
+The main remaining platform where gas-preprocessor is needed, is for
+MSVC tooling, to make GAS assembly files buildable with the MS
+armasm/armasm64 assemblers.
+
+Usage
+-----
+
+The projects listed above automatically try to use gas-preprocessor
+when configuring for a toolchain and architecture where needed; it
+doesn't need to be manually specified.
-- 
2.43.0

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to