ref: 198f12cf65a7f4730baf477972bdb94e5e7401fe
parent: f6ff8302f18a936f5b4d41a2a371346a24daf48c
author: Sigrid Solveig Haflínudóttir <ftrvxmtrx@gmail.com>
date: Wed Mar 17 06:44:02 EDT 2021
porting: update
--- a/howto.md
+++ b/howto.md
@@ -20,3 +20,4 @@
[VMX](vmx.html)
[Porting alien software *without* APE](porting.html)
+
--- a/porting.md
+++ b/porting.md
@@ -12,10 +12,12 @@
## Process
-To get started on an easy port of a POSIX library (or a program), one
-can use
+*It's might be the easiest to install and use*
+[npe](https://git.sr.ht/~ft/npe).
+
+But, for a _complete_ DIY, in case you *REALLY* want it, there is
[helpmeport](https://git.sr.ht/~ft/snippets/blob/master/helpmeport)
-script. It tries to generate the appopriate headers and a `mkfile`.
+script. It tries to generate the appopriate headers and a `mkfile`:
cd coollib
# sometimes, the source files are located in `src` subdir
@@ -36,7 +38,7 @@
The script will provide `__plan9__` and eg `__amd64__` definitions to
be used throughout, in case needed.
-Feel free to show your script patches and ideas to Sigrid.
+Note that `helpmeport` is unsupported.
## Common issues
@@ -54,6 +56,23 @@
#define _header_name_h_
....
#endif
+
+For a more or less automated processing you could use a script:
+
+```
+fn pragma_once {
+ h=_^`"{echo $1 | sed 's,.*/,,g;s/\..*//g' | tr -d '
+'}^_h_
+ sed 's/#pragma once/#ifndef '^$h^'\n#define '^$h^'/g' $1 && echo && echo '#endif'
+}
+
+for(f in src/*.h src/*/*.h){
+ grep -s '^#pragma[ ]+once' $f && {
+ pragma_once $f >$f.p
+ mv $f.p $f
+ }
+}
+```
### function not declared: ...