Some docs.
This commit is contained in:
		
							parent
							
								
									0527902dbc
								
							
						
					
					
						commit
						18aa5a8ca8
					
				
					 2 changed files with 224 additions and 2 deletions
				
			
		
							
								
								
									
										222
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										222
									
								
								README.md
									
										
									
									
									
								
							|  | @ -1 +1,221 @@ | ||||||
| # sdk | # osdk | ||||||
|  | 
 | ||||||
|  | The operating system development kit  | ||||||
|  | 
 | ||||||
|  | ## Macros | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### `@latest` | ||||||
|  | 
 | ||||||
|  | Find the latest version of a command in the path. | ||||||
|  | 
 | ||||||
|  | ```json | ||||||
|  | "cc": { | ||||||
|  |     "cmd": ["@latest", "clang"], // clang-14 | ||||||
|  | /* ... */ | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ### `@uname` | ||||||
|  | 
 | ||||||
|  | Query the system for information about the current operating system. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ```json | ||||||
|  | "cc": { | ||||||
|  |     "cmd": ["@uname", "machine"], // "x86_64" | ||||||
|  | /* ... */ | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ### `@include` | ||||||
|  | 
 | ||||||
|  | Include a file | ||||||
|  | 
 | ||||||
|  | ### `@join` | ||||||
|  | 
 | ||||||
|  | Join two objects | ||||||
|  | 
 | ||||||
|  | Example: | ||||||
|  | 
 | ||||||
|  | ```json | ||||||
|  | ["@join",  {"a": 1}, {"b": 2}] // {"a": 1, "b": 2} | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ### `@concat` | ||||||
|  | 
 | ||||||
|  | Concatenate strings | ||||||
|  | 
 | ||||||
|  | Example: | ||||||
|  | 
 | ||||||
|  | ```json | ||||||
|  | ["@concat", "a", "b", "c"] // "abc" | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ### `@exec` | ||||||
|  | 
 | ||||||
|  | Execute a command and return the output | ||||||
|  | 
 | ||||||
|  | Example: | ||||||
|  | 
 | ||||||
|  | ```json | ||||||
|  | ["@exec", "uname", "-m"] // "x86_64" | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## Manifest file format | ||||||
|  | 
 | ||||||
|  | ### `id` | ||||||
|  | 
 | ||||||
|  | The id of the package. This is used to identify the package in the manifest file. | ||||||
|  | 
 | ||||||
|  | Exemple: | ||||||
|  | 
 | ||||||
|  | ```json | ||||||
|  | { | ||||||
|  |     "id": "hello" | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ### `type` | ||||||
|  | 
 | ||||||
|  | The type of the package. This is used to identify the package in the manifest file. | ||||||
|  | 
 | ||||||
|  | Exemple: | ||||||
|  | 
 | ||||||
|  | ```json | ||||||
|  | { | ||||||
|  |     "type": "exe" | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ### `description` | ||||||
|  | 
 | ||||||
|  | The description of the package for the user. | ||||||
|  | 
 | ||||||
|  | Exemple: | ||||||
|  | 
 | ||||||
|  | ```json | ||||||
|  | { | ||||||
|  |     "description": "Hello world" | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ### `deps` | ||||||
|  | 
 | ||||||
|  | Dependencies of the package. The name listed here must be the same as the id of the package or member of a provide list. | ||||||
|  | 
 | ||||||
|  | Exemple: | ||||||
|  | 
 | ||||||
|  | ```json | ||||||
|  | { | ||||||
|  |     "deps": [ | ||||||
|  |         "libc", | ||||||
|  |         "libm" | ||||||
|  |     ] | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ### `provide` | ||||||
|  | 
 | ||||||
|  | Alias for the package. | ||||||
|  | 
 | ||||||
|  | Exemple: | ||||||
|  | 
 | ||||||
|  | ```json | ||||||
|  | { | ||||||
|  |     "provide": [ | ||||||
|  |         "hello" | ||||||
|  |     ] | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ### `requires` | ||||||
|  | 
 | ||||||
|  | A list of requirements for the package check agaisnt the build props. If the requirement is not met, the package will be disabled. | ||||||
|  | 
 | ||||||
|  | ## Target file format | ||||||
|  | 
 | ||||||
|  | ### `id` | ||||||
|  | 
 | ||||||
|  | The id of the target. This is used to identify the target in the target file. | ||||||
|  | 
 | ||||||
|  | ### `type` | ||||||
|  | 
 | ||||||
|  | Should be `target`. | ||||||
|  | 
 | ||||||
|  | ### `props` | ||||||
|  | 
 | ||||||
|  | A list of properties for the target. | ||||||
|  | 
 | ||||||
|  | Exemple: | ||||||
|  | 
 | ||||||
|  | ```json | ||||||
|  | { | ||||||
|  |     "props": { | ||||||
|  |         "arch": "x86_64", | ||||||
|  |         "vendor": "pc", | ||||||
|  |         "os": "linux", | ||||||
|  |         "env": "gnu", | ||||||
|  |         "abi": "elf", | ||||||
|  |         "cpu": "x86_64", | ||||||
|  |         "features": "fxsr,sse,sse2" | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Theses values are exposed the translation unit as `__osdk_{prop}__`. | ||||||
|  | 
 | ||||||
|  | ### `tools` | ||||||
|  | 
 | ||||||
|  | A list of tools for the target. | ||||||
|  | 
 | ||||||
|  | ```json | ||||||
|  | { | ||||||
|  |     "tools": { | ||||||
|  |         "cc": { | ||||||
|  |             "cmd": ["@latest", "clang"], | ||||||
|  |             "args": [ | ||||||
|  |                 "-target", | ||||||
|  |                 "x86_64-unknown-windows", | ||||||
|  |                 "-ffreestanding", | ||||||
|  |                 "-fno-stack-protector", | ||||||
|  |                 "-fshort-wchar", | ||||||
|  |                 "-mno-red-zone" | ||||||
|  |             ] | ||||||
|  |         }, | ||||||
|  |         "cxx": { | ||||||
|  |             "cmd": ["@latest", "clang++"], | ||||||
|  |             "args": [ | ||||||
|  |                 "-target", | ||||||
|  |                 "x86_64-unknown-windows", | ||||||
|  |                 "-ffreestanding", | ||||||
|  |                 "-fno-stack-protector", | ||||||
|  |                 "-fshort-wchar", | ||||||
|  |                 "-mno-red-zone" | ||||||
|  |             ] | ||||||
|  |         }, | ||||||
|  |         "ld": { | ||||||
|  |             "cmd": ["@latest", "clang++"], | ||||||
|  |             "args": [ | ||||||
|  |                 "-target", | ||||||
|  |                 "x86_64-unknown-windows", | ||||||
|  |                 "-nostdlib", | ||||||
|  |                 "-Wl,-entry:efi_main", | ||||||
|  |                 "-Wl,-subsystem:efi_application", | ||||||
|  |                 "-fuse-ld=lld-link" | ||||||
|  |             ] | ||||||
|  |         }, | ||||||
|  |         "ar": { | ||||||
|  |             "cmd": ["@latest", "llvm-ar"], | ||||||
|  |             "args": [ | ||||||
|  |                 "rcs" | ||||||
|  |             ] | ||||||
|  |         }, | ||||||
|  |         "as": { | ||||||
|  |             "cmd": "nasm", | ||||||
|  |             "args": [ | ||||||
|  |                 "-f", | ||||||
|  |                 "win64" | ||||||
|  |             ] | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | @ -182,12 +182,14 @@ def getCmdOutput(*args: str) -> str: | ||||||
| 
 | 
 | ||||||
|     return proc.stdout.decode('utf-8') |     return proc.stdout.decode('utf-8') | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| def sanitizedUname(): | def sanitizedUname(): | ||||||
|     un = os.uname() |     un = os.uname() | ||||||
|     if un.machine == "aarch64": |     if un.machine == "aarch64": | ||||||
|         un.machine = "arm64" |         un.machine = "arm64" | ||||||
|     return un |     return un | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| def findLatest(command) -> str: | def findLatest(command) -> str: | ||||||
|     """ |     """ | ||||||
|     Find the latest version of a command |     Find the latest version of a command | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue