Compare commits
9 commits
Author | SHA1 | Date | |
---|---|---|---|
8630fe7667 | |||
f6c3a13e7f | |||
b99fc98d8d | |||
b09e60afb4 | |||
3b43b569f9 | |||
3ee527c3de | |||
0b911f75ce | |||
02b38e7b44 | |||
9d41ac2f7b |
27 changed files with 1339 additions and 62 deletions
27
.gitea/workflows/build.yml
Normal file
27
.gitea/workflows/build.yml
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
name: Build nix packages
|
||||||
|
on: [push]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-matrix:
|
||||||
|
runs-on: nix
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
package: [ "am-kernels", "rv32Cross.am-kernels-nemu", "rv32Cross.am-kernels-npc" ]
|
||||||
|
steps:
|
||||||
|
- uses: https://github.com/cachix/cachix-action@v14
|
||||||
|
with:
|
||||||
|
name: ysyx
|
||||||
|
authToken: '${{ secrets.CACHIX_SIGNING_KEY }}'
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Cache develop environment
|
||||||
|
id: cache-nix-develop
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
/nix/store
|
||||||
|
/nix/var/nix/db
|
||||||
|
key: nix-develop-${{ hashFiles('flake.*') }}
|
||||||
|
|
||||||
|
- name: Build am-kernels
|
||||||
|
run: |
|
||||||
|
nix build -L .#${{ matrix.package }}
|
56
.gitignore
vendored
56
.gitignore
vendored
|
@ -1,15 +1,43 @@
|
||||||
*
|
|
||||||
!*/
|
|
||||||
!*.h
|
|
||||||
!*.c
|
|
||||||
!*.cc
|
|
||||||
!*.S
|
|
||||||
!Makefile
|
|
||||||
!README
|
|
||||||
!README.md
|
|
||||||
!LICENSE
|
|
||||||
.*
|
|
||||||
_*
|
|
||||||
*~
|
|
||||||
build/
|
build/
|
||||||
!.gitignore
|
out/
|
||||||
|
.cache/
|
||||||
|
.envrc
|
||||||
|
.vscode/
|
||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/c++
|
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=c++
|
||||||
|
|
||||||
|
### C++ ###
|
||||||
|
# Prerequisites
|
||||||
|
*.d
|
||||||
|
|
||||||
|
# Compiled Object files
|
||||||
|
*.slo
|
||||||
|
*.lo
|
||||||
|
*.o
|
||||||
|
*.obj
|
||||||
|
|
||||||
|
# Precompiled Headers
|
||||||
|
*.gch
|
||||||
|
*.pch
|
||||||
|
|
||||||
|
# Compiled Dynamic libraries
|
||||||
|
*.so
|
||||||
|
*.dylib
|
||||||
|
*.dll
|
||||||
|
|
||||||
|
# Fortran module files
|
||||||
|
*.mod
|
||||||
|
*.smod
|
||||||
|
|
||||||
|
# Compiled Static libraries
|
||||||
|
*.lai
|
||||||
|
*.la
|
||||||
|
*.a
|
||||||
|
*.lib
|
||||||
|
|
||||||
|
# Executables
|
||||||
|
*.exe
|
||||||
|
*.out
|
||||||
|
*.app
|
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/c++
|
||||||
|
|
|
@ -3,14 +3,41 @@ cmake_minimum_required(VERSION 3.22)
|
||||||
project(am-kernels)
|
project(am-kernels)
|
||||||
set(CMAKE_C_STANDARD 11)
|
set(CMAKE_C_STANDARD 11)
|
||||||
enable_language(C ASM)
|
enable_language(C ASM)
|
||||||
|
|
||||||
include(CheckPIESupported)
|
include(CheckPIESupported)
|
||||||
check_pie_supported()
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
if(${PLATFORM} MATCHES "native")
|
if(${ARCH} STREQUAL "native")
|
||||||
set(ARCH "native")
|
include(CTest)
|
||||||
else()
|
|
||||||
set(ARCH ${ISA}-${PLATFORM})
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_subdirectory(tests/cpu-tests)
|
find_package(am-${ARCH})
|
||||||
|
find_package(klib)
|
||||||
|
|
||||||
|
check_pie_supported()
|
||||||
|
|
||||||
|
# -- Helper functions
|
||||||
|
macro(create_binary target_name)
|
||||||
|
if(NOT ${ARCH} STREQUAL "native")
|
||||||
|
add_custom_command(
|
||||||
|
TARGET ${target_name} POST_BUILD
|
||||||
|
COMMAND ${CMAKE_OBJCOPY} -S --set-section-flags .bss=alloc,contents -O binary ${target_name} ${target_name}.bin
|
||||||
|
COMMENT "Creating binary file ${target_name}.bin"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
endmacro(create_binary)
|
||||||
|
|
||||||
|
macro(install_target_and_binary target_name)
|
||||||
|
if(NOT ${ARCH} STREQUAL "native")
|
||||||
|
install(TARGETS ${target_name} RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/am-kernels)
|
||||||
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${target_name}.bin DESTINATION ${CMAKE_INSTALL_DATADIR}/am-kernels)
|
||||||
|
else()
|
||||||
|
install(TARGETS ${target_name})
|
||||||
|
add_test(NAME ${target_name}_test COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${target_name})
|
||||||
|
endif()
|
||||||
|
endmacro(install_target_and_binary)
|
||||||
|
|
||||||
|
add_subdirectory(tests/cpu-tests)
|
||||||
|
# add_subdirectory(tests/alu-tests)
|
||||||
|
add_subdirectory(tests/am-tests)
|
||||||
|
add_subdirectory(benchmarks/microbench)
|
||||||
|
add_subdirectory(kernels)
|
||||||
|
|
3
benchmarks/microbench/CMakeLists.txt
Normal file
3
benchmarks/microbench/CMakeLists.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
include_directories(include)
|
||||||
|
|
||||||
|
add_subdirectory(src)
|
18
benchmarks/microbench/src/CMakeLists.txt
Normal file
18
benchmarks/microbench/src/CMakeLists.txt
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
add_executable(bench
|
||||||
|
qsort/qsort.c
|
||||||
|
ssort/ssort.cc
|
||||||
|
queen/queen.c
|
||||||
|
sieve/sieve.c
|
||||||
|
bf/bf.c
|
||||||
|
15pz/15pz.cc
|
||||||
|
dinic/dinic.cc
|
||||||
|
lzip/lzip.c
|
||||||
|
lzip/quicklz.c
|
||||||
|
md5/md5.c
|
||||||
|
bench.c
|
||||||
|
fib/fib.c
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(bench am-${ARCH} klib)
|
||||||
|
create_binary(bench)
|
||||||
|
install_target_and_binary(bench)
|
|
@ -74,7 +74,7 @@ static uint32_t score(Benchmark *b, uint64_t usec) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(const char *args) {
|
int main(const char *args) {
|
||||||
const char *setting_name = args;
|
const char *setting_name = "test";
|
||||||
if (args == NULL || strcmp(args, "") == 0) {
|
if (args == NULL || strcmp(args, "") == 0) {
|
||||||
printf("Empty mainargs. Use \"ref\" by default\n");
|
printf("Empty mainargs. Use \"ref\" by default\n");
|
||||||
setting_name = "ref";
|
setting_name = "ref";
|
||||||
|
|
37
default.nix
Normal file
37
default.nix
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
{ lib,
|
||||||
|
stdenv,
|
||||||
|
cmake,
|
||||||
|
abstract-machine,
|
||||||
|
arch ? "riscv-nemu"
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "am-kernel";
|
||||||
|
version = "2024-07-10";
|
||||||
|
|
||||||
|
src = ./.;
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
cmake
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
abstract-machine
|
||||||
|
];
|
||||||
|
|
||||||
|
cmakeFlags = [
|
||||||
|
(lib.cmakeFeature "ARCH" arch)
|
||||||
|
];
|
||||||
|
|
||||||
|
cmakeBuildType = "Debug";
|
||||||
|
dontStrip = true;
|
||||||
|
|
||||||
|
doCheck = true;
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "AbstractMachine kernels";
|
||||||
|
homepage = "https://github.com/NJU-ProjectN/am-kernels.git";
|
||||||
|
license = with licenses; [ ];
|
||||||
|
maintainers = with maintainers; [ ];
|
||||||
|
};
|
||||||
|
}
|
986
flake.lock
generated
Normal file
986
flake.lock
generated
Normal file
|
@ -0,0 +1,986 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"am-kernels": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils_3",
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"pre-commit-hooks": "pre-commit-hooks_2",
|
||||||
|
"ysyx-workbench": "ysyx-workbench_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1723617032,
|
||||||
|
"narHash": "sha256-oL5Vx933Jhn+T9jn67wFbh8vy7w8OJNCn4DOOlX/r0U=",
|
||||||
|
"ref": "dev",
|
||||||
|
"rev": "3ee527c3de481e38767fffbd9e16bf48359fc638",
|
||||||
|
"revCount": 78,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.xinyang.life/xin/am-kernels.git"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"ref": "dev",
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.xinyang.life/xin/am-kernels.git"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"diffu": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils_7",
|
||||||
|
"nixpkgs": "nixpkgs_3",
|
||||||
|
"nur-xin": "nur-xin_2",
|
||||||
|
"pre-commit-hooks": "pre-commit-hooks_4"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1723627842,
|
||||||
|
"narHash": "sha256-+Ovf1e5ESap4sGMsH945SkZLhyYUxGE7shKVl3Ue1CQ=",
|
||||||
|
"ref": "refs/heads/master",
|
||||||
|
"rev": "7b3881a9712bcb7bfea90614a44888ae5df6e849",
|
||||||
|
"revCount": 17,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.xinyang.life/xin/diffu.git"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.xinyang.life/xin/diffu.git"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696426674,
|
||||||
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_2": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696426674,
|
||||||
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_3": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696426674,
|
||||||
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_4": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696426674,
|
||||||
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_5": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696426674,
|
||||||
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709126324,
|
||||||
|
"narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "d465f4819400de7c8d874d50b982301f28a84605",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_10": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_10"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710146030,
|
||||||
|
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_2": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710146030,
|
||||||
|
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_3": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709126324,
|
||||||
|
"narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "d465f4819400de7c8d874d50b982301f28a84605",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_4": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_4"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710146030,
|
||||||
|
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_5": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_5"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709126324,
|
||||||
|
"narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "d465f4819400de7c8d874d50b982301f28a84605",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_6": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_6"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710146030,
|
||||||
|
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_7": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_7"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710146030,
|
||||||
|
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_8": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_8"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710146030,
|
||||||
|
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_9": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_9"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709126324,
|
||||||
|
"narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "d465f4819400de7c8d874d50b982301f28a84605",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitignore": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"pre-commit-hooks",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709087332,
|
||||||
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitignore_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"ysyx-workbench",
|
||||||
|
"am-kernels",
|
||||||
|
"pre-commit-hooks",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709087332,
|
||||||
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitignore_3": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"ysyx-workbench",
|
||||||
|
"am-kernels",
|
||||||
|
"ysyx-workbench",
|
||||||
|
"pre-commit-hooks",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709087332,
|
||||||
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitignore_4": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"ysyx-workbench",
|
||||||
|
"diffu",
|
||||||
|
"pre-commit-hooks",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709087332,
|
||||||
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitignore_5": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"ysyx-workbench",
|
||||||
|
"pre-commit-hooks",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709087332,
|
||||||
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709237383,
|
||||||
|
"narHash": "sha256-cy6ArO4k5qTx+l5o+0mL9f5fa86tYUX3ozE1S+Txlds=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "1536926ef5621b09bba54035ae2bb6d806d72ac8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-circt162": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1705645507,
|
||||||
|
"narHash": "sha256-tX3vipIAmNDBA8WNWG4oY4KyTfnm2YieTHO2BhG8ISA=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "7995cae3ad60e3d6931283d650d7f43d31aaa5c7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "7995cae3ad60e3d6931283d650d7f43d31aaa5c7",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-circt162_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1705645507,
|
||||||
|
"narHash": "sha256-tX3vipIAmNDBA8WNWG4oY4KyTfnm2YieTHO2BhG8ISA=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "7995cae3ad60e3d6931283d650d7f43d31aaa5c7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "7995cae3ad60e3d6931283d650d7f43d31aaa5c7",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-stable": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710695816,
|
||||||
|
"narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "614b4613980a522ba49f0d194531beddbb7220d3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-23.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-stable_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710695816,
|
||||||
|
"narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "614b4613980a522ba49f0d194531beddbb7220d3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-23.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-stable_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710695816,
|
||||||
|
"narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "614b4613980a522ba49f0d194531beddbb7220d3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-23.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-stable_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710695816,
|
||||||
|
"narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "614b4613980a522ba49f0d194531beddbb7220d3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-23.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-stable_5": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710695816,
|
||||||
|
"narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "614b4613980a522ba49f0d194531beddbb7220d3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-23.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709237383,
|
||||||
|
"narHash": "sha256-cy6ArO4k5qTx+l5o+0mL9f5fa86tYUX3ozE1S+Txlds=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "1536926ef5621b09bba54035ae2bb6d806d72ac8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1711703276,
|
||||||
|
"narHash": "sha256-iMUFArF0WCatKK6RzfUJknjem0H9m4KgorO/p3Dopkk=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "d8fe5e6c92d0d190646fb9f1056741a229980089",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nur-xin": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"ysyx-workbench",
|
||||||
|
"am-kernels",
|
||||||
|
"ysyx-workbench",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1721891452,
|
||||||
|
"narHash": "sha256-2c9nDuXXARzoRXE67lte5kKBeFb1XmTNsvdiIbRUEgE=",
|
||||||
|
"ref": "refs/heads/master",
|
||||||
|
"rev": "de8ad578fc4fe527772cec23a7f660bde14c8570",
|
||||||
|
"revCount": 152,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.xinyang.life/xin/nur.git"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.xinyang.life/xin/nur.git"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nur-xin_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"ysyx-workbench",
|
||||||
|
"diffu",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1721891452,
|
||||||
|
"narHash": "sha256-2c9nDuXXARzoRXE67lte5kKBeFb1XmTNsvdiIbRUEgE=",
|
||||||
|
"ref": "refs/heads/master",
|
||||||
|
"rev": "de8ad578fc4fe527772cec23a7f660bde14c8570",
|
||||||
|
"revCount": 152,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.xinyang.life/xin/nur.git"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.xinyang.life/xin/nur.git"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nur-xin_3": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"ysyx-workbench",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1721891452,
|
||||||
|
"narHash": "sha256-2c9nDuXXARzoRXE67lte5kKBeFb1XmTNsvdiIbRUEgE=",
|
||||||
|
"ref": "refs/heads/master",
|
||||||
|
"rev": "de8ad578fc4fe527772cec23a7f660bde14c8570",
|
||||||
|
"revCount": 152,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.xinyang.life/xin/nur.git"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.xinyang.life/xin/nur.git"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pre-commit-hooks": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"flake-utils": "flake-utils_2",
|
||||||
|
"gitignore": "gitignore",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-stable": "nixpkgs-stable"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1712055707,
|
||||||
|
"narHash": "sha256-4XLvuSIDZJGS17xEwSrNuJLL7UjDYKGJSbK1WWX2AK8=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "pre-commit-hooks.nix",
|
||||||
|
"rev": "e35aed5fda3cc79f88ed7f1795021e559582093a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "pre-commit-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pre-commit-hooks_2": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat_2",
|
||||||
|
"flake-utils": "flake-utils_4",
|
||||||
|
"gitignore": "gitignore_2",
|
||||||
|
"nixpkgs": [
|
||||||
|
"ysyx-workbench",
|
||||||
|
"am-kernels",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-stable": "nixpkgs-stable_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1712055707,
|
||||||
|
"narHash": "sha256-4XLvuSIDZJGS17xEwSrNuJLL7UjDYKGJSbK1WWX2AK8=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "pre-commit-hooks.nix",
|
||||||
|
"rev": "e35aed5fda3cc79f88ed7f1795021e559582093a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "pre-commit-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pre-commit-hooks_3": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat_3",
|
||||||
|
"flake-utils": "flake-utils_6",
|
||||||
|
"gitignore": "gitignore_3",
|
||||||
|
"nixpkgs": [
|
||||||
|
"ysyx-workbench",
|
||||||
|
"am-kernels",
|
||||||
|
"ysyx-workbench",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-stable": "nixpkgs-stable_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1712055707,
|
||||||
|
"narHash": "sha256-4XLvuSIDZJGS17xEwSrNuJLL7UjDYKGJSbK1WWX2AK8=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "pre-commit-hooks.nix",
|
||||||
|
"rev": "e35aed5fda3cc79f88ed7f1795021e559582093a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "pre-commit-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pre-commit-hooks_4": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat_4",
|
||||||
|
"flake-utils": "flake-utils_8",
|
||||||
|
"gitignore": "gitignore_4",
|
||||||
|
"nixpkgs": [
|
||||||
|
"ysyx-workbench",
|
||||||
|
"diffu",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-stable": "nixpkgs-stable_4"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1712055707,
|
||||||
|
"narHash": "sha256-4XLvuSIDZJGS17xEwSrNuJLL7UjDYKGJSbK1WWX2AK8=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "pre-commit-hooks.nix",
|
||||||
|
"rev": "e35aed5fda3cc79f88ed7f1795021e559582093a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "pre-commit-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pre-commit-hooks_5": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat_5",
|
||||||
|
"flake-utils": "flake-utils_10",
|
||||||
|
"gitignore": "gitignore_5",
|
||||||
|
"nixpkgs": [
|
||||||
|
"ysyx-workbench",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-stable": "nixpkgs-stable_5"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1712055707,
|
||||||
|
"narHash": "sha256-4XLvuSIDZJGS17xEwSrNuJLL7UjDYKGJSbK1WWX2AK8=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "pre-commit-hooks.nix",
|
||||||
|
"rev": "e35aed5fda3cc79f88ed7f1795021e559582093a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "pre-commit-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"pre-commit-hooks": "pre-commit-hooks",
|
||||||
|
"ysyx-workbench": "ysyx-workbench"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_10": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_5": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_6": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_7": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_8": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_9": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ysyx-workbench": {
|
||||||
|
"inputs": {
|
||||||
|
"am-kernels": "am-kernels",
|
||||||
|
"diffu": "diffu",
|
||||||
|
"flake-utils": "flake-utils_9",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-circt162": "nixpkgs-circt162_2",
|
||||||
|
"nur-xin": "nur-xin_3",
|
||||||
|
"pre-commit-hooks": "pre-commit-hooks_5"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1723714692,
|
||||||
|
"narHash": "sha256-EU6HE8DfSorD2Wx7yjBicSSLxGKxKbDD/3XI+RUB7Gs=",
|
||||||
|
"ref": "refs/heads/master",
|
||||||
|
"rev": "0e408882b21b17fa19158b2044498ddad8e691e7",
|
||||||
|
"revCount": 126,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.xinyang.life/xin/ysyx-workbench"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.xinyang.life/xin/ysyx-workbench"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ysyx-workbench_2": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils_5",
|
||||||
|
"nixpkgs": [
|
||||||
|
"ysyx-workbench",
|
||||||
|
"am-kernels",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-circt162": "nixpkgs-circt162",
|
||||||
|
"nur-xin": "nur-xin",
|
||||||
|
"pre-commit-hooks": "pre-commit-hooks_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1723551098,
|
||||||
|
"narHash": "sha256-/AnVxufgQoAuvNBSKm0BG+tTS++/HuaNoW+loroSQig=",
|
||||||
|
"ref": "refs/heads/master",
|
||||||
|
"rev": "8ee1551dc2857091fca6456c1367aab7090899fe",
|
||||||
|
"revCount": 119,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.xinyang.life/xin/ysyx-workbench"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.xinyang.life/xin/ysyx-workbench"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
60
flake.nix
Normal file
60
flake.nix
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
pre-commit-hooks = {
|
||||||
|
url = "github:cachix/pre-commit-hooks.nix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
ysyx-workbench = {
|
||||||
|
url = "git+https://git.xinyang.life/xin/ysyx-workbench";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, flake-utils, nixpkgs, pre-commit-hooks, ysyx-workbench }:
|
||||||
|
flake-utils.lib.eachDefaultSystem (system:
|
||||||
|
let
|
||||||
|
pkgs = import nixpkgs { inherit system; };
|
||||||
|
|
||||||
|
rv32CrossConfig = import nixpkgs {
|
||||||
|
localSystem = system;
|
||||||
|
crossSystem = {
|
||||||
|
config = "riscv32-none-elf";
|
||||||
|
gcc = {
|
||||||
|
abi = "ilp32";
|
||||||
|
arch = "rv32if";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
ysyx-pkgs = ysyx-workbench.packages.${system};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
checks = {
|
||||||
|
pre-commit-check = pre-commit-hooks.lib.${system}.run {
|
||||||
|
src = ./.;
|
||||||
|
hooks = {
|
||||||
|
trim-trailing-whitespace.enable = true;
|
||||||
|
end-of-file-fixer.enable = true;
|
||||||
|
cmake-format.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
packages = {
|
||||||
|
am-kernels = pkgs.callPackage ./default.nix { inherit (ysyx-pkgs) abstract-machine; arch = "native"; };
|
||||||
|
|
||||||
|
rv32Cross = {
|
||||||
|
am-kernels-npc = rv32CrossConfig.callPackage ./default.nix {
|
||||||
|
inherit (ysyx-pkgs.rv32Cross) abstract-machine;
|
||||||
|
arch = "riscv-npc";
|
||||||
|
};
|
||||||
|
am-kernels-nemu = rv32CrossConfig.callPackage ./default.nix {
|
||||||
|
inherit (ysyx-pkgs.rv32Cross) abstract-machine;
|
||||||
|
arch = "riscv-nemu";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
3
kernels/CMakeLists.txt
Normal file
3
kernels/CMakeLists.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
add_subdirectory(hello)
|
||||||
|
add_subdirectory(demo)
|
||||||
|
add_subdirectory(yield-os)
|
1
kernels/demo/CMakeLists.txt
Normal file
1
kernels/demo/CMakeLists.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
add_subdirectory(src)
|
|
@ -1,6 +1,6 @@
|
||||||
#ifndef __DRAW_H__
|
#ifndef __DRAW_H__
|
||||||
|
|
||||||
#define HAS_GUI
|
// #define HAS_GUI
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <am.h>
|
#include <am.h>
|
||||||
|
|
16
kernels/demo/src/CMakeLists.txt
Normal file
16
kernels/demo/src/CMakeLists.txt
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
add_executable(demo
|
||||||
|
aclock/aclock.c
|
||||||
|
ant/ant.c
|
||||||
|
bf/bf.c
|
||||||
|
cmatrix/cmatrix.c
|
||||||
|
donut/donut.c
|
||||||
|
galton/galton.c
|
||||||
|
hanoi/hanoi.c
|
||||||
|
life/life.c
|
||||||
|
main.c
|
||||||
|
)
|
||||||
|
target_include_directories(demo PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../include)
|
||||||
|
target_link_libraries(demo PRIVATE am-${ARCH} klib)
|
||||||
|
|
||||||
|
create_binary(demo)
|
||||||
|
install_target_and_binary(demo)
|
|
@ -36,9 +36,9 @@ int main(const char *args) {
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Press Q to Exit\n");
|
printf("Press Q to Exit\n");
|
||||||
while (1) {
|
// while (1) {
|
||||||
AM_INPUT_KEYBRD_T ev = io_read(AM_INPUT_KEYBRD);
|
// AM_INPUT_KEYBRD_T ev = io_read(AM_INPUT_KEYBRD);
|
||||||
if (ev.keydown && ev.keycode == AM_KEY_Q) break;
|
// if (ev.keydown && ev.keycode == AM_KEY_Q) break;
|
||||||
}
|
// }
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
8
kernels/hello/CMakeLists.txt
Normal file
8
kernels/hello/CMakeLists.txt
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
add_executable(hello
|
||||||
|
hello.c
|
||||||
|
)
|
||||||
|
target_include_directories(hello PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../include)
|
||||||
|
target_link_libraries(hello PRIVATE am-${ARCH} klib)
|
||||||
|
|
||||||
|
create_binary(hello)
|
||||||
|
install_target_and_binary(hello)
|
11
kernels/yield-os/CMakeLists.txt
Normal file
11
kernels/yield-os/CMakeLists.txt
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
add_executable(yield-os
|
||||||
|
yield-os.c
|
||||||
|
)
|
||||||
|
target_link_libraries(yield-os PRIVATE am-${ARCH} klib)
|
||||||
|
|
||||||
|
# -- Extract binary file from ELF
|
||||||
|
add_custom_command(TARGET yield-os
|
||||||
|
COMMAND ${CMAKE_OBJCOPY} ARGS -S --set-section-flags .bss=alloc,contents -O binary yield-os yield-os.bin)
|
||||||
|
|
||||||
|
create_binary(yield-os)
|
||||||
|
install_target_and_binary(yield-os)
|
|
@ -4,16 +4,20 @@
|
||||||
#define STACK_SIZE (4096 * 8)
|
#define STACK_SIZE (4096 * 8)
|
||||||
typedef union {
|
typedef union {
|
||||||
uint8_t stack[STACK_SIZE];
|
uint8_t stack[STACK_SIZE];
|
||||||
struct { Context *cp; };
|
struct {
|
||||||
|
Context *cp;
|
||||||
|
};
|
||||||
} PCB;
|
} PCB;
|
||||||
static PCB pcb[2], pcb_boot, *current = &pcb_boot;
|
static PCB pcb[2], pcb_boot, *current = &pcb_boot;
|
||||||
|
|
||||||
static void f(void *arg) {
|
static void f(void *arg) {
|
||||||
while (1) {
|
for (int i = 0; i < 100; i++) {
|
||||||
putch("?AB"[(uintptr_t)arg > 2 ? 0 : (uintptr_t)arg]);
|
putch("?AB"[(uintptr_t)arg > 2 ? 0 : (uintptr_t)arg]);
|
||||||
for (int volatile i = 0; i < 100000; i++) ;
|
for (int volatile i = 0; i < 100000; i++)
|
||||||
|
;
|
||||||
yield();
|
yield();
|
||||||
}
|
}
|
||||||
|
halt(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Context *schedule(Event ev, Context *prev) {
|
static Context *schedule(Event ev, Context *prev) {
|
||||||
|
@ -24,8 +28,8 @@ static Context *schedule(Event ev, Context *prev) {
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
cte_init(schedule);
|
cte_init(schedule);
|
||||||
pcb[0].cp = kcontext((Area) { pcb[0].stack, &pcb[0] + 1 }, f, (void *)1L);
|
pcb[0].cp = kcontext((Area){pcb[0].stack, &pcb[0] + 1}, f, (void *)1L);
|
||||||
pcb[1].cp = kcontext((Area) { pcb[1].stack, &pcb[1] + 1 }, f, (void *)2L);
|
pcb[1].cp = kcontext((Area){pcb[1].stack, &pcb[1] + 1}, f, (void *)2L);
|
||||||
yield();
|
yield();
|
||||||
panic("Should not reach here!");
|
panic("Should not reach here!");
|
||||||
}
|
}
|
||||||
|
|
28
tests/alu-tests/CMakeLists.txt
Normal file
28
tests/alu-tests/CMakeLists.txt
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
# TODO: CMake does not support multiple toolchain in one run. We need a seperate
|
||||||
|
# project for native binary compilation
|
||||||
|
|
||||||
|
# cmake_minimum_required(VERSION 3.22)
|
||||||
|
|
||||||
|
# project(alu-tests)
|
||||||
|
# set(CMAKE_C_STANDARD 11)
|
||||||
|
# enable_language(C ASM)
|
||||||
|
# include(GNUInstallDirs)
|
||||||
|
|
||||||
|
# add_executable(gen_alu_test gen_alu_test.c)
|
||||||
|
|
||||||
|
# add_custom_command(TARGET gen_alu_test POST_BUILD
|
||||||
|
# BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/alu_test.c
|
||||||
|
# COMMAND $<TARGET_FILE:gen_alu_test> > alu_test.c)
|
||||||
|
|
||||||
|
add_executable(alu_test alu_test.c)
|
||||||
|
|
||||||
|
target_include_directories(alu_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../include)
|
||||||
|
target_link_libraries(alu_test PRIVATE am-${ARCH} klib)
|
||||||
|
|
||||||
|
|
||||||
|
# -- Extract binary file from ELF
|
||||||
|
add_custom_command(TARGET alu_test
|
||||||
|
COMMAND ${CMAKE_OBJCOPY} ARGS -S --set-section-flags .bss=alloc,contents -O binary alu_test alu_test.bin)
|
||||||
|
|
||||||
|
install(TARGETS alu_test RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/am-kernels)
|
||||||
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/alu_test.bin DESTINATION ${CMAKE_INSTALL_DATADIR}/am-kernels)
|
|
@ -114,7 +114,7 @@ int exclude(type t, char* op, int x, int y)
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
printf("#include <stdio.h>\n");
|
printf("#include <stdio.h>\n");
|
||||||
printf("int main(void) {\n");
|
printf("int main(const char *) {\n");
|
||||||
printf(" int exit_code = 0;\n");
|
printf(" int exit_code = 0;\n");
|
||||||
|
|
||||||
FOR_SET_ALL(signed int, vsi);
|
FOR_SET_ALL(signed int, vsi);
|
||||||
|
|
1
tests/am-tests/CMakeLists.txt
Normal file
1
tests/am-tests/CMakeLists.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
add_subdirectory(src)
|
20
tests/am-tests/src/CMakeLists.txt
Normal file
20
tests/am-tests/src/CMakeLists.txt
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
add_executable(am-tests
|
||||||
|
tests/audio/audio-data.S
|
||||||
|
tests/audio.c
|
||||||
|
tests/devscan.c
|
||||||
|
tests/hello.c
|
||||||
|
tests/intr.c
|
||||||
|
tests/keyboard.c
|
||||||
|
tests/mp.c
|
||||||
|
tests/rtc.c
|
||||||
|
tests/video.c
|
||||||
|
tests/vm.c
|
||||||
|
main.c
|
||||||
|
)
|
||||||
|
# set_propertygSOURCE tests/audio/audio-data.S APPEND PROPERTY OBJECT_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tests/audio/little-star.pcm)
|
||||||
|
|
||||||
|
target_include_directories(am-tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../include)
|
||||||
|
target_link_libraries(am-tests PRIVATE am-${ARCH} klib)
|
||||||
|
|
||||||
|
create_binary(am-tests)
|
||||||
|
install_target_and_binary(am-tests)
|
|
@ -2,5 +2,5 @@
|
||||||
.global audio_payload, audio_payload_end
|
.global audio_payload, audio_payload_end
|
||||||
.p2align 3
|
.p2align 3
|
||||||
audio_payload:
|
audio_payload:
|
||||||
.incbin "src/tests/audio/little-star.pcm"
|
.incbin "little-star.pcm"
|
||||||
audio_payload_end:
|
audio_payload_end:
|
||||||
|
|
|
@ -2,6 +2,6 @@
|
||||||
|
|
||||||
void hello() {
|
void hello() {
|
||||||
for (int i = 0; i < 10; i ++) {
|
for (int i = 0; i < 10; i ++) {
|
||||||
putstr("Hello, AM World @ " __ISA__ "\n");
|
putstr("Hello, AM World @ " "__ISA__" "\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
#include <amtest.h>
|
#include <amtest.h>
|
||||||
|
|
||||||
Context *simple_trap(Event ev, Context *ctx) {
|
Context *simple_trap(Event ev, Context *ctx) {
|
||||||
switch(ev.event) {
|
switch (ev.event) {
|
||||||
case EVENT_IRQ_TIMER:
|
case EVENT_IRQ_TIMER:
|
||||||
putch('t'); break;
|
putch('t');
|
||||||
case EVENT_IRQ_IODEV:
|
break;
|
||||||
putch('d'); break;
|
case EVENT_IRQ_IODEV:
|
||||||
case EVENT_YIELD:
|
putch('d');
|
||||||
putch('y'); break;
|
break;
|
||||||
default:
|
case EVENT_YIELD:
|
||||||
panic("Unhandled event"); break;
|
putch('y');
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
panic("Unhandled event");
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return ctx;
|
return ctx;
|
||||||
}
|
}
|
||||||
|
@ -20,7 +24,8 @@ void hello_intr() {
|
||||||
io_read(AM_INPUT_CONFIG);
|
io_read(AM_INPUT_CONFIG);
|
||||||
iset(1);
|
iset(1);
|
||||||
while (1) {
|
while (1) {
|
||||||
for (volatile int i = 0; i < 10000000; i++) ;
|
for (volatile int i = 0; i < 10000000; i++)
|
||||||
|
;
|
||||||
yield();
|
yield();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
find_package(am-${ARCH})
|
|
||||||
find_package(klib)
|
|
||||||
|
|
||||||
set(SOURCES
|
set(SOURCES
|
||||||
add.c
|
add.c
|
||||||
add-longlong.c
|
add-longlong.c
|
||||||
|
@ -42,12 +39,8 @@ foreach(SOURCE IN LISTS SOURCES)
|
||||||
get_filename_component(SOURCE_NAME ${SOURCE} NAME_WLE)
|
get_filename_component(SOURCE_NAME ${SOURCE} NAME_WLE)
|
||||||
add_executable(${SOURCE_NAME}
|
add_executable(${SOURCE_NAME}
|
||||||
${SOURCE})
|
${SOURCE})
|
||||||
target_link_libraries(${SOURCE_NAME} PRIVATE am-${ARCH})
|
target_link_libraries(${SOURCE_NAME} PRIVATE am-${ARCH} klib)
|
||||||
|
|
||||||
# -- Extract binary file from ELF
|
create_binary(${SOURCE_NAME})
|
||||||
add_custom_command(TARGET ${SOURCE_NAME}
|
install_target_and_binary(${SOURCE_NAME})
|
||||||
COMMAND ${CMAKE_OBJCOPY} ARGS -S --set-section-flags .bss=alloc,contents -O binary ${SOURCE_NAME} ${SOURCE_NAME}.bin)
|
|
||||||
|
|
||||||
install(TARGETS ${SOURCE_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_DATADIR}/elf)
|
|
||||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_NAME}.bin DESTINATION ${CMAKE_INSTALL_DATADIR}/binary)
|
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
|
@ -3,14 +3,15 @@
|
||||||
char buf[128];
|
char buf[128];
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
sprintf(buf, "%s", "Hello world!\n");
|
sprintf(buf, "%s", "Hello world!\n");
|
||||||
check(strcmp(buf, "Hello world!\n") == 0);
|
check(strcmp(buf, "Hello world!\n") == 0);
|
||||||
|
|
||||||
sprintf(buf, "%d + %d = %d\n", 1, 1, 2);
|
sprintf(buf, "%d + %d = %d\n", 1, 1, 2);
|
||||||
check(strcmp(buf, "1 + 1 = 2\n") == 0);
|
check(strcmp(buf, "1 + 1 = 2\n") == 0);
|
||||||
|
|
||||||
sprintf(buf, "%d + %d = %d\n", 2, 10, 12);
|
sprintf(buf, "%d + %d = %d\n", 2, 10, 12);
|
||||||
check(strcmp(buf, "2 + 10 = 12\n") == 0);
|
printf(buf);
|
||||||
|
check(strcmp(buf, "2 + 10 = 12\n") == 0);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue