Compare commits
11 Commits
Author | SHA1 | Date |
---|---|---|
Ehmry - | 0f524fffb1 | |
Ehmry - | 219cd119ad | |
Ehmry - | 149d110e8a | |
Ehmry - | d58b85b8ae | |
Ehmry - | 03949b20e4 | |
Ehmry - | a8b7b1527b | |
Ehmry - | ad4ab0b82a | |
Ehmry - | 8beb734c6e | |
Ehmry - | a60f55d4e3 | |
Ehmry - | 870b0a48b1 | |
Ehmry - | 8e5510d5e3 |
8
Tupfile
8
Tupfile
|
@ -28,8 +28,8 @@ SHORT_SUM = b2sum -l24
|
|||
|> $(BIN_LISTING)
|
||||
# Generate a listing of all binary archives
|
||||
|
||||
: $(DEPOT_DIR)/<packages> |> ^ generate package version sed script^ \
|
||||
for d in `dirname %<packages> | tr ' ' '\n' | sort -u`; do \
|
||||
: $(DEPOT_DIR)/<pkg> |> ^ generate package version sed script^ \
|
||||
for d in `dirname %<pkg> | tr ' ' '\n' | sort -u`; do \
|
||||
echo $d/`cat $d/.ARCHIVES $d/runtime | $(SHORT_SUM)` | awk -F '/' \
|
||||
'{print "s|local/pkg/"$3"/current|@(PUBLIC_USER)/pkg/"$3"/"substr($5,0,6)"|"}' >> %o; \
|
||||
done \
|
||||
|
@ -63,8 +63,8 @@ SHORT_SUM = b2sum -l24
|
|||
AWK_RUNTIME_PATH = awk -v RS=' ' -F '/' \
|
||||
'/runtime/ {print " <pkg path=\"local/pkg/"$3"/current\"/>"}'
|
||||
|
||||
: $(DEPOT_DIR)/<packages> |> ^ generate local index^ \
|
||||
: $(DEPOT_DIR)/<pkg> |> ^ generate local index^ \
|
||||
echo '<index>' > %o; \
|
||||
echo %<packages> | $(AWK_RUNTIME_PATH) | sort >> %o; \
|
||||
echo %<pkg> | $(AWK_RUNTIME_PATH) | sort >> %o; \
|
||||
echo '</index>' >> %o |> $(DEPOT_DIR)/index/@(SCULPT_VERSION)
|
||||
# Generate the depot index file
|
||||
|
|
39
Tuprules.tup
39
Tuprules.tup
|
@ -4,15 +4,26 @@ ifndef TOOL_CHAIN_PREFIX
|
|||
error TOOL_CHAIN_PREFIX not configured, missing variant?
|
||||
endif
|
||||
|
||||
DEPOT_DIR = $(TUP_CWD)/depot
|
||||
DEPOT_RAW_DIR = $(DEPOT_DIR)/raw
|
||||
DEPOT_PKG_DIR = $(DEPOT_DIR)/pkg
|
||||
|
||||
PUBLIC_DIR = $(TUP_CWD)/public
|
||||
PUBLIC_RAW_DIR = $(PUBLIC_DIR)/raw
|
||||
PUBLIC_BIN_DIR = $(PUBLIC_DIR)/bin
|
||||
PUBLIC_PKG_DIR = $(PUBLIC_DIR)/pkg
|
||||
|
||||
ifeq (@(TUP_ARCH),i386)
|
||||
CC_MARCH = -march=i686 -m32
|
||||
LD_MARCH = -melf_i386
|
||||
AS_MARCH = -march=i686 --32
|
||||
DEPOT_BIN_DIR = $(DEPOT_DIR)/bin/x86_32
|
||||
endif
|
||||
|
||||
ifeq (@(TUP_ARCH),x86_64)
|
||||
CC_MARCH = -m64 -mcmodel=large
|
||||
LD_MARCH = -melf_x86_64
|
||||
DEPOT_BIN_DIR = $(DEPOT_DIR)/bin/x86_64
|
||||
endif
|
||||
|
||||
ifeq (@(TUP_ARCH),arm_v8)
|
||||
|
@ -60,16 +71,6 @@ ifeq ($(RAW_VERSION),)
|
|||
RAW_VERSION=$(GIT_VERSION)
|
||||
endif
|
||||
|
||||
DEPOT_DIR = $(TUP_CWD)/depot
|
||||
DEPOT_RAW_DIR = $(DEPOT_DIR)/raw
|
||||
DEPOT_BIN_DIR = $(DEPOT_DIR)/bin
|
||||
DEPOT_PKG_DIR = $(DEPOT_DIR)/pkg
|
||||
|
||||
PUBLIC_DIR = $(TUP_CWD)/public
|
||||
PUBLIC_RAW_DIR = $(PUBLIC_DIR)/raw
|
||||
PUBLIC_BIN_DIR = $(PUBLIC_DIR)/bin
|
||||
PUBLIC_PKG_DIR = $(PUBLIC_DIR)/pkg
|
||||
|
||||
RAW_DIR = $(DEPOT_RAW_DIR)/$(RAW_NAME)/current
|
||||
# Destination for locally defined raw package
|
||||
|
||||
|
@ -104,11 +105,11 @@ AWK_LOCAL_ARCHIVES = awk -F '/' \
|
|||
|
||||
!collect_raw = |> ^ COLLECT %b^ \
|
||||
cp %f %o \
|
||||
|> $(RAW_DIR)/%b
|
||||
|> $(RAW_DIR)/%b $(DEPOT_DIR)/<raw>
|
||||
|
||||
!collect_bin = |> ^ COLLECT %b^ \
|
||||
@(TOOL_CHAIN_PREFIX)strip -o %o %f \
|
||||
|> $(DEPOT_BIN_DIR)/$(BIN_NAME)/current/%b
|
||||
|> $(DEPOT_BIN_DIR)/$(BIN_NAME)/current/%b $(DEPOT_DIR)/<bin>
|
||||
|
||||
!collect_pkg_runtime = | $(VERSIONS_SED_FILE) |> ^ package %f^ \
|
||||
xmllint --noout -schema $(ERRATA_DIR)/runtime.xsd %f; \
|
||||
|
@ -122,11 +123,11 @@ AWK_LOCAL_ARCHIVES = awk -F '/' \
|
|||
$(DEPOT_PKG_DIR)/$(PKG_NAME)/current/runtime \
|
||||
$(DEPOT_PKG_DIR)/$(PKG_NAME)/current/archives \
|
||||
$(DEPOT_PKG_DIR)/$(PKG_NAME)/current/.ARCHIVES \
|
||||
$(DEPOT_DIR)/<packages>
|
||||
$(DEPOT_DIR)/<pkg>
|
||||
|
||||
!collect_pkg = |> ^ COLLECT %b^ cp %f %o \
|
||||
|> $(DEPOT_PKG_DIR)/$(PKG_NAME)/current/%b \
|
||||
$(DEPOT_DIR)/<packages>
|
||||
$(DEPOT_DIR)/<pkg>
|
||||
|
||||
VERSIONS_SED_FILE = $(TUP_CWD)/versions.sed
|
||||
PKG_SED_FILE = $(TUP_CWD)/pkg.sed
|
||||
|
@ -161,15 +162,15 @@ PKG_CONFIG = PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) pkg-config
|
|||
|
||||
!asm = |> ^ CC %b^ @(CC_WRAPPER) $(CC) $(DEFINES) $(CFLAGS) $(CFLAGS_%e) $(CFLAGS_%f) -D__ASSEMBLY__ $(INCLUDES) -c %f -o %o |> %B.o
|
||||
|
||||
!cc = | $(GENODE_DIR)/<pkg-config> |> ^o CC %f^ @(CC_WRAPPER) $(CC) $(DEFINES) $(CFLAGS) $(CFLAGS_%e) $(CFLAGS_%f) `$(PKG_CONFIG) --cflags $(LIBS) $(LIBS_CFLAGS)` $(INCLUDES) -c %f -o %o |> %B.o
|
||||
!cc = | $(GENODE_DIR)/<pkg-config> |> ^o CC %f^ @(CC_WRAPPER) $(CC) $(DEFINES) $(CFLAGS) $(CFLAGS_%e) $(CFLAGS_%f) `$(PKG_CONFIG) --cflags $(LIBS) $(LIBS_CFLAGS)` $(INCLUDES) -c -fPIC -g %f -o %o |> %B.o
|
||||
|
||||
!cc_port = | $(GENODE_DIR)/<pkg-config> |> ^o CC %o^ @(CC_WRAPPER) $(CC) -c $(DEFINES) $(CFLAGS) $(CFLAGS_%o) $(INCLUDES) `$(PKG_CONFIG) --cflags $(LIBS) $(LIBS_CFLAGS)` -o %o |> %B.o
|
||||
!cc_port = | $(GENODE_DIR)/<pkg-config> |> ^o CC %o^ @(CC_WRAPPER) $(CC) $(DEFINES) $(CFLAGS) $(CFLAGS_%o) $(INCLUDES) `$(PKG_CONFIG) --cflags $(LIBS) $(LIBS_CFLAGS)` -c -fPIC -g -o %o |> %B.o
|
||||
|
||||
!cxx = | $(GENODE_DIR)/<pkg-config> |> ^o CXX %b^ @(CC_WRAPPER) $(CXX) $(DEFINES) $(CXXFLAGS) $(CXXFLAGS_%e) $(CXXFLAGS_%f) `$(PKG_CONFIG) --cflags $(LIBS)` $(INCLUDES) -c %f -o %o |> %B.o
|
||||
!cxx = | $(GENODE_DIR)/<pkg-config> |> ^o CXX %b^ @(CC_WRAPPER) $(CXX) $(DEFINES) $(CXXFLAGS) $(CXXFLAGS_%e) $(CXXFLAGS_%f) `$(PKG_CONFIG) --cflags $(LIBS)` $(INCLUDES) -c -fPIC -g %f -o %o |> %B.o
|
||||
|
||||
!cxx_port = | $(GENODE_DIR)/<pkg-config> |> ^o CXX %o^ @(CC_WRAPPER) $(CXX) -c $(DEFINES) $(CXXFLAGS) $(CXXFLAGS_%f) `$(PKG_CONFIG) --cflags $(LIBS)` $(INCLUDES) -o %o |> %B.o
|
||||
!cxx_port = | $(GENODE_DIR)/<pkg-config> |> ^o CXX %o^ @(CC_WRAPPER) $(CXX) $(DEFINES) $(CXXFLAGS) $(CXXFLAGS_%f) `$(PKG_CONFIG) --cflags $(LIBS)` $(INCLUDES) -c -fPIC -g -o %o |> %B.o
|
||||
|
||||
!ld = | $(GENODE_DIR)/<lib> $(GENODE_DIR)/<pkg-config> |> ^o LD %o^ $(LD) $(LDFLAGS) `$(PKG_CONFIG) --libs $(LIBS)` %f -o %o |>
|
||||
!ld = | $(GENODE_DIR)/<lib> $(GENODE_DIR)/<pkg-config> |> ^o LD %o^ $(LD) $(LDFLAGS) `$(PKG_CONFIG) --libs $(LIBS)` --whole-archive --start-group %f --no-whole-archive --end-group -o %o |>
|
||||
|
||||
!strip = |> strip -o %o %f |>
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
<xs:element name="log" type="template_service"/>
|
||||
<xs:element name="nic" type="template_service"/>
|
||||
<xs:element name="nitpicker" type="template_service"/>
|
||||
<xs:element name="platform" type="template_service"/>
|
||||
<xs:element name="report" type="template_service"/>
|
||||
<xs:element name="rm" type="template_service"/>
|
||||
<xs:element name="rom" type="template_service"/>
|
||||
|
|
28
index.xml
28
index.xml
|
@ -1,5 +1,16 @@
|
|||
<index>
|
||||
|
||||
<index name="Audio">
|
||||
<pkg path="_/pkg/mixer" info="Mixer component"/>
|
||||
<pkg path="_/pkg/bsd_audio_drv" info="OpenBSD audio driver (mixer client)"/>
|
||||
<pkg path="ehmry/pkg/audio_player/2019-05-24" info="Cnuke's audio player"/>
|
||||
<index name="Radio streams">
|
||||
<pkg path="_/pkg/ifm1" info="Intergalactic FM 1"/>
|
||||
<pkg path="_/pkg/ifm2" info="Intergalactic FM 2"/>
|
||||
<pkg path="_/pkg/ifm3" info="Intergalactic FM 3"/>
|
||||
</index>
|
||||
</index>
|
||||
|
||||
<index name="Emulators and game engines">
|
||||
<pkg path="_/pkg/dosbox" info="Experimental Libretro port of DOSBox"/>
|
||||
<pkg path="_/pkg/fceumm" info="NES"/>
|
||||
|
@ -60,10 +71,6 @@
|
|||
</index>
|
||||
|
||||
<index name="Utility">
|
||||
<index name="Audio">
|
||||
<pkg path="ehmry/pkg/bsd_audio_drv/2019-05-24" info="Cnuke's audio driver"/>
|
||||
<pkg path="ehmry/pkg/audio_player/2019-05-24" info="Cnuke's audio player"/>
|
||||
</index>
|
||||
|
||||
<index name="Graphic">
|
||||
<!-- <pkg path="ehmry/pkg/flif_capture/2019-03-22" info="Screen capture utility"/> -->
|
||||
|
@ -78,8 +85,7 @@
|
|||
<pkg path="_/pkg/nic_bridge_logged" info="Logged ethernet bridge"/>
|
||||
<pkg path="_/pkg/nic_bus" info="Switched ethernet bus"/>
|
||||
<pkg path="_/pkg/ninep" info="9P server"/>
|
||||
<pkg path="_/pkg/ssh_client" info="SSH client"/>
|
||||
<pkg path="_/pkg/test-lwip_node" info="Standalone lwIP IPv6 node"/>
|
||||
<pkg path="_/pkg/ssh_client" info="SSH client"/>
|
||||
<pkg path="_/pkg/kiosk" info="Kiosk-style web browser"/>
|
||||
</index>
|
||||
|
||||
|
@ -100,26 +106,20 @@
|
|||
</index>
|
||||
</index>
|
||||
|
||||
<index name="Radio streams">
|
||||
<pkg path="_/pkg/ifm1" info="Intergalactic FM 1"/>
|
||||
<pkg path="_/pkg/ifm2" info="Intergalactic FM 2"/>
|
||||
<pkg path="_/pkg/ifm3" info="Intergalactic FM 3"/>
|
||||
</index>
|
||||
|
||||
<index name="Experimental">
|
||||
<index name="Semantic audio player demo">
|
||||
<pkg path="_/pkg/blob_service" info="Blobsets package with file-system and HTTP frontends"/>
|
||||
<pkg path="_/pkg/musicbrainz_playlist_generator" info="XSPF playlist generator"/>
|
||||
<pkg path="_/pkg/xspf_view" info="XSPF playlist viewer"/>
|
||||
</index>
|
||||
<pkg path="_/pkg/4do" "3DO emulator"/>
|
||||
<pkg path="_/pkg/4do" info="3DO emulator"/>
|
||||
<pkg path="ehmry/pkg/avplay/2019-05-24"/>
|
||||
<pkg path="_/pkg/bluemsx"/>
|
||||
<pkg path="_/pkg/cruzes" info="An unfinished Picross Libretro core"/>
|
||||
<pkg path="_/pkg/monero_vanity"/>
|
||||
<pkg path="_/pkg/mu"/>
|
||||
<pkg path="_/pkg/testgl"/>
|
||||
<pkg path="_/pkg/yabause" info="Sega Saturn emulator/>
|
||||
<pkg path="_/pkg/yabause" info="Sega Saturn emulator"/>
|
||||
</index>
|
||||
|
||||
<pkg path="ehmry/pkg/fonts_fs/2019-05-24" info="Fonts provider"/>
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit b8d222ace1bf1962423111e395e01d4674776270
|
||||
Subproject commit 54d3ddd3c9f81d7bbd5714a670913e46301781c7
|
|
@ -1 +1 @@
|
|||
Subproject commit 8c2b1cf0ccd8ea8a36ae1ed7aa09ae7c2b3dc1cd
|
||||
Subproject commit 216aa7e1ae01a9ac52c856b1d73e4afe5ce0cc1d
|
|
@ -1 +1 @@
|
|||
Subproject commit 4e1bdaaed021b0f6587c61f18de081bc3876f887
|
||||
Subproject commit bb8aef82c11b6d9eb21a0e902e770c75924ff96e
|
|
@ -1 +1 @@
|
|||
Subproject commit 22c7ae749b9b46fb0343d8f25238db62ca6156ef
|
||||
Subproject commit 9c8a1a598d04e764df5f848ff619869a9c3f6ad8
|
|
@ -1 +1 @@
|
|||
Subproject commit 148b9f7301db2aebfc3b9190526ebde43eba170b
|
||||
Subproject commit 12da10f1b14507a0f6d20bc2e8c86ff55451a0d3
|
|
@ -1 +1 @@
|
|||
Subproject commit 7437ccc0fb92c8177a980b8b45e2a3e995f98f8c
|
||||
Subproject commit c216fa1a0d02a7b9a6a6d3dc3ed618698777a7a0
|
|
@ -5,7 +5,6 @@ let
|
|||
let f = (import path);
|
||||
in f (builtins.intersectAttrs (builtins.functionArgs f) (tool.nixpkgs // tool) );
|
||||
|
||||
hasSuffixNix = tool.hasSuffix ".nix";
|
||||
dir = builtins.readDir ../ports;
|
||||
in
|
||||
builtins.listToAttrs (
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
TARGET_NAME = mpg123
|
||||
LIBS += libc
|
||||
include_rules
|
||||
|
||||
SOURCE_LINK = port-source
|
||||
API_LINK = port-api
|
||||
|
||||
: |> $(NIX_BUILD) .. --out-link port \
|
||||
--attr %d.source --attr %d.api |> $(SOURCE_LINK) $(API_LINK) {port}
|
||||
|
||||
: $(API_LINK) |> cp %f/pkg-config/%d.pc %o \
|
||||
|> $(PKG_CONFIG_DIR)/%d.pc $(GENODE_DIR)/<pkg-config>
|
||||
|
||||
: mpg123.symbols |> !abi_stub |>
|
||||
|
||||
INCLUDES += -I.
|
||||
INCLUDES += -I$(SOURCE_LINK)/src/libmpg123
|
||||
INCLUDES += -I$(SOURCE_LINK)/src/compat
|
||||
INCLUDES += -I$(SOURCE_LINK)/src
|
||||
INCLUDES += -I$(API_LINK)/include
|
||||
|
||||
ifeq (@(TUP_ARCH),x86_64)
|
||||
DEFINES += -DOPT_X86_64
|
||||
run ./port_rules.sh $(SOURCE_LINK) common.files x86_64.files
|
||||
endif
|
||||
|
||||
ifeq (@(TUP_ARCH),arm)
|
||||
DEFINES += -DOPT_ARM
|
||||
run ./port_rules.sh $(SOURCE_LINK) common.files arm.files
|
||||
endif
|
||||
|
||||
: {obj} |> !lib |> %d.lib.so {bin}
|
||||
: {bin} |> !collect_bin |>
|
||||
|
||||
include &(BIN_RULES)
|
|
@ -0,0 +1 @@
|
|||
src/libmpg123/synth_arm.S
|
|
@ -0,0 +1,38 @@
|
|||
src/compat/compat.c
|
||||
src/compat/compat_str.c
|
||||
src/libmpg123/parse.c
|
||||
src/libmpg123/layer1.c
|
||||
src/libmpg123/synth_stereo_avx.S
|
||||
src/libmpg123/feature.c
|
||||
src/libmpg123/lfs_alias.c
|
||||
src/libmpg123/synth_s32.c
|
||||
src/libmpg123/dct64_avx.S
|
||||
src/libmpg123/tabinit.c
|
||||
src/libmpg123/dct64_i386.c
|
||||
src/libmpg123/format.c
|
||||
src/libmpg123/dct64_avx_float.S
|
||||
src/libmpg123/dither.c
|
||||
src/libmpg123/synth.c
|
||||
src/libmpg123/synth_8bit.c
|
||||
src/libmpg123/layer3.c
|
||||
src/libmpg123/dct64.c
|
||||
src/libmpg123/synth_stereo_avx_accurate.S
|
||||
src/libmpg123/mpg123.h.in
|
||||
src/libmpg123/icy.c
|
||||
src/libmpg123/index.c
|
||||
src/libmpg123/equalizer.c
|
||||
src/libmpg123/readers.c
|
||||
src/libmpg123/icy2utf8.c
|
||||
src/libmpg123/stringbuf.c
|
||||
src/libmpg123/synth_real.c
|
||||
src/libmpg123/dct36_avx.S
|
||||
src/libmpg123/testcpu.c
|
||||
src/libmpg123/frame.c
|
||||
src/libmpg123/id3.c
|
||||
src/libmpg123/Makemodule.am
|
||||
src/libmpg123/ntom.c
|
||||
src/libmpg123/synth_stereo_avx_float.S
|
||||
src/libmpg123/libmpg123.c
|
||||
src/libmpg123/synth_stereo_avx_s32.S
|
||||
src/libmpg123/layer2.c
|
||||
src/libmpg123/optimize.c
|
|
@ -0,0 +1,48 @@
|
|||
#define ASMALIGN_BALIGN 1
|
||||
#define CCALIGN 1
|
||||
#define DYNAMIC_BUILD 1
|
||||
#define FRAME_INDEX 1
|
||||
#define GAPLESS 1
|
||||
#define HAVE_ATOLL 1
|
||||
#define HAVE_DIRENT_H 1
|
||||
#define HAVE_DLCLOSE 1
|
||||
#define HAVE_DLFCN_H 1
|
||||
#define HAVE_DLOPEN 1
|
||||
#define HAVE_DLSYM 1
|
||||
#define HAVE_GETPAGESIZE 1
|
||||
#define HAVE_GETUID 1
|
||||
#define HAVE_INTTYPES_H 1
|
||||
#define HAVE_LIBM 1
|
||||
#define HAVE_LIMITS_H 1
|
||||
#define HAVE_MEMORY_H 1
|
||||
#define HAVE_RANDOM 1
|
||||
#define HAVE_STDINT_H 1
|
||||
#define HAVE_STDIO_H 1
|
||||
#define HAVE_STDLIB_H 1
|
||||
#define HAVE_STRERROR 1
|
||||
#define HAVE_STRINGS_H 1
|
||||
#define HAVE_STRING_H 1
|
||||
#define HAVE_SYS_IOCTL_H 1
|
||||
#define HAVE_SYS_PARAM_H 1
|
||||
#define HAVE_SYS_RESOURCE_H 1
|
||||
#define HAVE_SYS_SELECT_H 1
|
||||
#define HAVE_SYS_SIGNAL_H 1
|
||||
#define HAVE_SYS_SOUNDCARD_H 1
|
||||
#define HAVE_SYS_STAT_H 1
|
||||
#define HAVE_SYS_TIME_H 1
|
||||
#define HAVE_SYS_TYPES_H 1
|
||||
#define HAVE_SYS_WAIT_H 1
|
||||
#define HAVE_TERMIOS 1
|
||||
#define HAVE_UNISTD_H 1
|
||||
#define IEEE_FLOAT 1
|
||||
#define INDEX_SIZE 1000
|
||||
#define LFS_ALIAS_BITS 64
|
||||
#define SIZEOF_INT32_T 4
|
||||
#define SIZEOF_LONG 8
|
||||
#define SIZEOF_OFF_T 8
|
||||
#define SIZEOF_SIZE_T 8
|
||||
#define SIZEOF_SSIZE_T 8
|
||||
#define STDC_HEADERS 1
|
||||
#define USE_MODULES 1
|
||||
#define USE_NEW_HUFFTABLE 1
|
||||
#define lfs_alias_t off_t
|
|
@ -0,0 +1,27 @@
|
|||
{ preparePort, mpg123 }:
|
||||
|
||||
let
|
||||
apiVersion = 44; # found in configure.ac
|
||||
in
|
||||
preparePort rec {
|
||||
inherit (mpg123) name src;
|
||||
outputs = [ "source" "api" ];
|
||||
buildPhase =
|
||||
''
|
||||
mkdir -p $api/include $api/pkg-config
|
||||
|
||||
sed \
|
||||
-e 's/@API_VERSION@/$(API_VERSION)/' \
|
||||
-e '/@.*@/d' \
|
||||
src/libmpg123/mpg123.h.in > $api/include/mpg123.h
|
||||
|
||||
cp src/libmpg123/fmt123.h $api/include
|
||||
|
||||
sed \
|
||||
-e "s|@includedir@|$api/include|" \
|
||||
-e 's/@PACKAGE_VERSION@/${(builtins.parseDrvName name).version}/' \
|
||||
-e 's/^Libs:.*/Libs: -l:mpg123.lib.so/' \
|
||||
-e '/@/d' \
|
||||
< libmpg123.pc.in > $api/pkg-config/mpg123.pc
|
||||
'';
|
||||
}
|
|
@ -0,0 +1,115 @@
|
|||
mpg123_add_string T
|
||||
mpg123_add_substring T
|
||||
mpg123_chomp_string T
|
||||
mpg123_clip T
|
||||
mpg123_close T
|
||||
mpg123_copy_string T
|
||||
mpg123_current_decoder T
|
||||
mpg123_decode T
|
||||
mpg123_decode_frame T
|
||||
mpg123_decode_frame_64 T
|
||||
mpg123_decoder T
|
||||
mpg123_decoders T
|
||||
mpg123_delete T
|
||||
mpg123_delete_pars T
|
||||
mpg123_enc_from_id3 T
|
||||
mpg123_encodings T
|
||||
mpg123_encsize T
|
||||
mpg123_eq T
|
||||
mpg123_errcode T
|
||||
mpg123_exit T
|
||||
mpg123_feature T
|
||||
mpg123_feed T
|
||||
mpg123_feedseek T
|
||||
mpg123_feedseek_64 T
|
||||
mpg123_fmt T
|
||||
mpg123_fmt_all T
|
||||
mpg123_fmt_none T
|
||||
mpg123_fmt_support T
|
||||
mpg123_format T
|
||||
mpg123_format_all T
|
||||
mpg123_format_none T
|
||||
mpg123_format_support T
|
||||
mpg123_framebyframe_decode T
|
||||
mpg123_framebyframe_decode_64 T
|
||||
mpg123_framebyframe_next T
|
||||
mpg123_framedata T
|
||||
mpg123_framelength T
|
||||
mpg123_framelength_64 T
|
||||
mpg123_framepos T
|
||||
mpg123_framepos_64 T
|
||||
mpg123_free_string T
|
||||
mpg123_geteq T
|
||||
mpg123_getformat T
|
||||
mpg123_getformat2 T
|
||||
mpg123_getpar T
|
||||
mpg123_getparam T
|
||||
mpg123_getstate T
|
||||
mpg123_getvolume T
|
||||
mpg123_grow_string T
|
||||
mpg123_icy T
|
||||
mpg123_icy2utf8 T
|
||||
mpg123_id3 T
|
||||
mpg123_index T
|
||||
mpg123_index_64 T
|
||||
mpg123_info T
|
||||
mpg123_init T
|
||||
mpg123_init_string T
|
||||
mpg123_length T
|
||||
mpg123_length_64 T
|
||||
mpg123_meta_check T
|
||||
mpg123_meta_free T
|
||||
mpg123_new T
|
||||
mpg123_new_pars T
|
||||
mpg123_noise T
|
||||
mpg123_open T
|
||||
mpg123_open_64 T
|
||||
mpg123_open_fd T
|
||||
mpg123_open_fd_64 T
|
||||
mpg123_open_feed T
|
||||
mpg123_open_handle T
|
||||
mpg123_open_handle_64 T
|
||||
mpg123_outblock T
|
||||
mpg123_par T
|
||||
mpg123_param T
|
||||
mpg123_parnew T
|
||||
mpg123_plain_strerror T
|
||||
mpg123_position T
|
||||
mpg123_position_64 T
|
||||
mpg123_rates T
|
||||
mpg123_read T
|
||||
mpg123_replace_buffer T
|
||||
mpg123_replace_reader T
|
||||
mpg123_replace_reader_64 T
|
||||
mpg123_replace_reader_handle T
|
||||
mpg123_replace_reader_handle_64 T
|
||||
mpg123_reset_eq T
|
||||
mpg123_resize_string T
|
||||
mpg123_safe_buffer T
|
||||
mpg123_scan T
|
||||
mpg123_seek T
|
||||
mpg123_seek_64 T
|
||||
mpg123_seek_frame T
|
||||
mpg123_seek_frame_64 T
|
||||
mpg123_set_filesize T
|
||||
mpg123_set_filesize_64 T
|
||||
mpg123_set_index T
|
||||
mpg123_set_index_64 T
|
||||
mpg123_set_string T
|
||||
mpg123_set_substring T
|
||||
mpg123_spf T
|
||||
mpg123_store_utf8 T
|
||||
mpg123_strerror T
|
||||
mpg123_strlen T
|
||||
mpg123_supported_decoders T
|
||||
mpg123_tell T
|
||||
mpg123_tell_64 T
|
||||
mpg123_tell_stream T
|
||||
mpg123_tell_stream_64 T
|
||||
mpg123_tellframe T
|
||||
mpg123_tellframe_64 T
|
||||
mpg123_timeframe T
|
||||
mpg123_timeframe_64 T
|
||||
mpg123_tpf T
|
||||
mpg123_volume T
|
||||
mpg123_volume_change T
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/sh
|
||||
|
||||
LINK=$1
|
||||
shift
|
||||
|
||||
for LIST in $@
|
||||
do
|
||||
grep '\.c$' ${LIST} | while read f
|
||||
do
|
||||
echo ": {port} |> !cc_port ${LINK}/${f} |> ${f}.o {obj}"
|
||||
done
|
||||
grep '\.S$' ${LIST} | while read f
|
||||
do
|
||||
echo ": {port} |> !cc_port ${LINK}/${f} |> ${f}.o {obj}"
|
||||
done
|
||||
done
|
|
@ -0,0 +1,5 @@
|
|||
src/libmpg123/getcpuflags_x86_64.S
|
||||
src/libmpg123/dct64_x86_64.S
|
||||
src/libmpg123/synth_stereo_x86_64.S
|
||||
src/libmpg123/synth_x86_64.S
|
||||
src/libmpg123/dct36_x86_64.S
|
|
@ -0,0 +1,79 @@
|
|||
include_rules
|
||||
export SYSLINUX
|
||||
|
||||
: $(GENODE_DIR)/repos/base-nova/<ld> |> ln -s %<ld> %o |> ld.lib.so {ld}
|
||||
|
||||
BOOT_MODULES = \
|
||||
config \
|
||||
ld.lib.so \
|
||||
$(DEPOT_BIN_DIR)/file_terminal/current/file_terminal \
|
||||
$(DEPOT_BIN_DIR)/fs_report/current/fs_report \
|
||||
$(DEPOT_BIN_DIR)/fs_rom/current/fs_rom \
|
||||
$(DEPOT_BIN_DIR)/init/current/init \
|
||||
$(DEPOT_BIN_DIR)/libc/current/libc.lib.so \
|
||||
$(DEPOT_BIN_DIR)/log_core/current/log_core \
|
||||
$(DEPOT_BIN_DIR)/nova_timer_drv/current/timer \
|
||||
$(DEPOT_BIN_DIR)/ram_fs/current/ram_fs \
|
||||
$(DEPOT_BIN_DIR)/report_rom/current/report_rom \
|
||||
$(DEPOT_BIN_DIR)/rom_filter/current/rom_filter \
|
||||
$(DEPOT_BIN_DIR)/terminal_log/current/terminal_log \
|
||||
$(DEPOT_BIN_DIR)/vfs/current/vfs \
|
||||
$(DEPOT_BIN_DIR)/vfs/current/vfs.lib.so \
|
||||
$(DEPOT_BIN_DIR)/vfs_import/current/vfs_import.lib.so \
|
||||
$(DEPOT_BIN_DIR)/nitpicker/current/nitpicker \
|
||||
|
||||
ifeq (@(TUP_ARCH),i386)
|
||||
ADDR_TYPE = .long
|
||||
endif
|
||||
ifeq (@(TUP_ARCH),x86_64)
|
||||
ADDR_TYPE = .quad
|
||||
endif
|
||||
|
||||
AWK_IT = awk -v RS=" " -v ADDR_TYPE="$(ADDR_TYPE)"
|
||||
|
||||
: $(DEPOT_DIR)/<bin> \
|
||||
|> \
|
||||
echo -n $(BOOT_MODULES) | $(AWK_IT) -f a.awk >> %o; \
|
||||
echo -n $(BOOT_MODULES) | $(AWK_IT) -f b.awk >> %o; \
|
||||
echo -n $(BOOT_MODULES) | $(AWK_IT) -f c.awk >> %o; \
|
||||
|> modules.s
|
||||
|
||||
: modules.s {ld} | $(DEPOT_DIR)/<bin> |> $(CC) $(CC_MARCH) -c %f -o %o |> boot_modules.o
|
||||
|
||||
LINK_ADDRESS = 0x01000000
|
||||
|
||||
: boot_modules.o | $(GENODE_DIR)/repos/base-nova/<core> \
|
||||
|> \
|
||||
$(CXX) $(CC_MARCH) -nostdlib \
|
||||
-Wl,-T -Wl,$(GENODE_DIR)/repos/base/src/ld/genode.ld \
|
||||
-Wl,-T -Wl,$(GENODE_DIR)/repos/base-nova/src/core/core-bss.ld \
|
||||
-Wl,-z -Wl,max-page-size=0x1000 \
|
||||
-Wl,-Ttext=$(LINK_ADDRESS) -Wl,-gc-sections \
|
||||
-Wl,-nostdlib \
|
||||
-Wl,--whole-archive -Wl,--start-group \
|
||||
%<core> %f \
|
||||
-Wl,--no-whole-archive \
|
||||
-Wl,--end-group \
|
||||
`$(CXX) $(CC_MARCH) -print-libgcc-file-name` \
|
||||
-o image.elf; \
|
||||
strip image.elf; \
|
||||
|> image.elf {image}
|
||||
|
||||
: $(GENODE_DIR)/repos/base-nova/src/NOVA/build/hypervisor-x86_64 {image} |> \
|
||||
mkdir -p tmp/syslinux; \
|
||||
cp \
|
||||
$SYSLINUX/share/syslinux/isolinux.bin \
|
||||
$SYSLINUX/share/syslinux/ldlinux.c32 \
|
||||
$SYSLINUX/share/syslinux/libcom32.c32 \
|
||||
$SYSLINUX/share/syslinux/mboot.c32 \
|
||||
isolinux.cfg \
|
||||
tmp/syslinux; \
|
||||
cp %f tmp; \
|
||||
chmod -R 777 tmp; \
|
||||
mkisofs -o %o \
|
||||
-b syslinux/isolinux.bin -c syslinux/boot.cat \
|
||||
-no-emul-boot -boot-load-size 4 -boot-info-table \
|
||||
-iso-level 2 \
|
||||
tmp; \
|
||||
rm -r tmp; \
|
||||
|> output.iso
|
|
@ -0,0 +1,455 @@
|
|||
<config prio_levels="4"> <!-- set prio_levels to 4 -->
|
||||
<parent-provides>
|
||||
<service name="ROM"/>
|
||||
<service name="IRQ"/>
|
||||
<service name="IO_MEM"/>
|
||||
<service name="IO_PORT"/>
|
||||
<service name="PD"/>
|
||||
<service name="RM"/>
|
||||
<service name="CPU"/>
|
||||
<service name="LOG"/>
|
||||
<service name="TRACE"/>
|
||||
<service name="VM"/>
|
||||
</parent-provides>
|
||||
|
||||
<affinity-space width="2" height="1"/>
|
||||
|
||||
<default-route>
|
||||
<any-service> <parent/> <any-child/> </any-service>
|
||||
</default-route>
|
||||
|
||||
<default caps="100"/>
|
||||
|
||||
<resource name="RAM" preserve="2M"/>
|
||||
|
||||
<start name="timer">
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<provides><service name="Timer"/></provides>
|
||||
</start>
|
||||
|
||||
<start name="report_rom">
|
||||
<binary name="report_rom"/>
|
||||
<resource name="RAM" quantum="2M"/>
|
||||
<provides> <service name="Report"/> <service name="ROM"/> </provides>
|
||||
<config verbose="no">
|
||||
<policy label="leitzentrale_config -> leitzentrale"
|
||||
report="global_keys_handler -> leitzentrale"/>
|
||||
<policy label="leitzentrale -> manager -> nitpicker_hover"
|
||||
report="nitpicker -> hover"/>
|
||||
<policy label="pointer -> hover" report="nitpicker -> hover"/>
|
||||
<policy label="pointer -> xray"
|
||||
report="global_keys_handler -> leitzentrale"/>
|
||||
<policy label="pointer -> shape" report="shape"/>
|
||||
<policy label="clipboard -> focus" report="nitpicker -> focus"/>
|
||||
<policy label="drivers -> capslock" report="global_keys_handler -> capslock"/>
|
||||
<policy label="runtime -> capslock" report="global_keys_handler -> capslock"/>
|
||||
<policy label="drivers -> numlock" report="global_keys_handler -> numlock"/>
|
||||
<policy label="runtime -> clicked" report="nitpicker -> clicked"/>
|
||||
<policy label="nit_focus -> leitzentrale"
|
||||
report="global_keys_handler -> leitzentrale"/>
|
||||
<policy label="nit_focus -> slides"
|
||||
report="global_keys_handler -> slides"/>
|
||||
<policy label="slides_nit_fb_config -> slides"
|
||||
report="global_keys_handler -> slides"/>
|
||||
<policy label="leitzentrale -> manager -> displays"
|
||||
report="nitpicker -> displays"/>
|
||||
<policy label="runtime -> runtime_view -> dialog"
|
||||
report="leitzentrale -> manager -> runtime_view_dialog"/>
|
||||
<policy label="leitzentrale -> manager -> runtime_view_hover"
|
||||
report="runtime -> runtime_view -> hover"/>
|
||||
</config>
|
||||
</start>
|
||||
|
||||
<start name="report_logger" priority="-3">
|
||||
<binary name="report_rom"/>
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<provides> <service name="Report"/> <service name="ROM"/> </provides>
|
||||
<config verbose="yes"/>
|
||||
</start>
|
||||
|
||||
<start name="config_fs" caps="200">
|
||||
<binary name="vfs"/>
|
||||
<resource name="RAM" quantum="12M"/>
|
||||
<provides> <service name="File_system"/> </provides>
|
||||
<config>
|
||||
<vfs>
|
||||
<ram/>
|
||||
<import>
|
||||
<dir name="managed">
|
||||
<rom name="fonts" label="fonts.config"/>
|
||||
<rom name="fb_drv" label="fb_drv.config"/>
|
||||
<rom name="wifi" label="wifi.config"/>
|
||||
<rom name="installation"/>
|
||||
<rom name="runtime" label="empty_runtime.config"/>
|
||||
<rom name="input_filter" label="input_filter.config"/>
|
||||
<inline name="depot_query"><query/></inline>
|
||||
</dir>
|
||||
<rom name="input_filter" label="input_filter.config"/>
|
||||
<rom name="fb_drv" label="fb_drv.config"/>
|
||||
<rom name="nitpicker" label="nitpicker.config"/>
|
||||
<rom name="numlock_remap" label="numlock_remap.config"/>
|
||||
<rom name="leitzentrale" label="leitzentrale.config"/>
|
||||
<rom name="drivers" label="drivers.config"/>
|
||||
<rom name="deploy" label="manual_deploy.config"/>
|
||||
<rom name="usb" label="usb.config"/>
|
||||
<rom name="clipboard" label="clipboard.config"/>
|
||||
<rom name="en_us.chargen"/>
|
||||
<rom name="fr.chargen"/>
|
||||
<rom name="de.chargen"/>
|
||||
<rom name="de_ch.chargen"/>
|
||||
<rom name="special.chargen"/>
|
||||
<rom name="vimrc"/>
|
||||
<tar name="launcher.tar"/>
|
||||
<inline name="system">} [config_system_content] {
|
||||
</inline>
|
||||
</import>
|
||||
</vfs>
|
||||
<policy label="config_fs_rom -> " root="/" />
|
||||
<policy label="rw" root="/" writeable="yes" />
|
||||
</config>
|
||||
</start>
|
||||
|
||||
<start name="config_fs_rom">
|
||||
<binary name="fs_rom"/>
|
||||
<resource name="RAM" quantum="10M"/>
|
||||
<provides> <service name="ROM"/> </provides>
|
||||
<route>
|
||||
<service name="File_system"> <child name="config_fs"/> </service>
|
||||
<any-service> <parent/> </any-service>
|
||||
</route>
|
||||
</start>
|
||||
|
||||
<start name="report_fs_rom">
|
||||
<binary name="fs_rom"/>
|
||||
<resource name="RAM" quantum="3M"/>
|
||||
<provides> <service name="ROM"/> </provides>
|
||||
<route>
|
||||
<service name="File_system"> <child name="report_fs"/> </service>
|
||||
<any-service> <parent/> </any-service>
|
||||
</route>
|
||||
</start>
|
||||
|
||||
<start name="report_fs">
|
||||
<binary name="ram_fs"/>
|
||||
<resource name="RAM" quantum="16M"/>
|
||||
<provides> <service name="File_system"/> </provides>
|
||||
<config>
|
||||
<content>
|
||||
<inline name="log">### start ###</inline>
|
||||
<dir name="runtime">
|
||||
<inline name="state"><empty/></inline>
|
||||
<dir name="wifi_drv">
|
||||
<inline name="accesspoints"><empty/></inline>
|
||||
<inline name="state"> <empty/></inline>
|
||||
</dir>
|
||||
<dir name="nic_router"> <inline name="state"> <empty/></inline> </dir>
|
||||
<dir name="update"> <inline name="state"> <empty/></inline> </dir>
|
||||
<dir name="depot_query"><inline name="blueprint"><empty/></inline> </dir>
|
||||
</dir>
|
||||
</content>
|
||||
<policy label="fs_report -> " root="/" writeable="yes"/>
|
||||
<policy label="log_terminal -> " root="/" writeable="yes"/>
|
||||
<policy label="report_fs_rom -> " root="/"/>
|
||||
<policy label="ro" root="/"/>
|
||||
</config>
|
||||
</start>
|
||||
|
||||
<start name="log_terminal">
|
||||
<binary name="file_terminal"/>
|
||||
<resource name="RAM" quantum="2M"/>
|
||||
<provides> <service name="Terminal"/> </provides>
|
||||
<config>
|
||||
<default-policy filename="log" />
|
||||
<vfs> <dir name="dev"> <log/> </dir> <fs/> </vfs>
|
||||
<libc stdout="/dev/log"/>
|
||||
</config>
|
||||
<route>
|
||||
<service name="File_system"> <child name="report_fs"/> </service>
|
||||
<any-service> <parent/> </any-service>
|
||||
</route>
|
||||
</start>
|
||||
|
||||
<start name="log">
|
||||
<binary name="terminal_log"/>
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<provides> <service name="LOG"/> </provides>
|
||||
<config/>
|
||||
<route>
|
||||
<service name="Terminal"> <child name="log_terminal"/> </service>
|
||||
<any-service> <parent/> </any-service>
|
||||
</route>
|
||||
</start>
|
||||
|
||||
<start name="log_core">
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<config period_ms="2000"/>
|
||||
<route>
|
||||
<service name="ROM" label="log"> <parent label="core_log"/> </service>
|
||||
<service name="Timer"> <child name="timer"/> </service>
|
||||
<service name="LOG" label="log"> <child name="log" label="core"/> </service>
|
||||
<any-service> <parent/> </any-service>
|
||||
</route>
|
||||
</start>
|
||||
|
||||
<start name="log_kernel">
|
||||
<binary name="log_core"/>
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<config period_ms="2000"/>
|
||||
<route>
|
||||
<service name="ROM" label="log"> <parent label="kernel_log"/> </service>
|
||||
<service name="Timer"> <child name="timer"/> </service>
|
||||
<service name="LOG" label="log"> <child name="log" label="kernel"/> </service>
|
||||
<any-service> <parent/> </any-service>
|
||||
</route>
|
||||
</start>
|
||||
|
||||
<start name="fs_report">
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<provides> <service name="Report"/> </provides>
|
||||
<config> <vfs> <fs/> </vfs> </config>
|
||||
<route>
|
||||
<service name="File_system"> <child name="report_fs"/> </service>
|
||||
<any-service> <parent/> </any-service>
|
||||
</route>
|
||||
</start>
|
||||
|
||||
<start name="drivers" caps="3000" priority="-1">
|
||||
<resource name="RAM" quantum="96M" constrain_phys="yes"/>
|
||||
<binary name="init"/>
|
||||
<route>
|
||||
<service name="LOG"> <child name="log"/> </service>
|
||||
<service name="ROM" label="config">
|
||||
<child name="config_fs_rom" label="drivers"/> </service>
|
||||
<service name="ROM" label_last="capslock"> <child name="report_rom"/> </service>
|
||||
<service name="ROM" label_last="input_filter.config">
|
||||
<child name="config_fs_rom" label="managed/input_filter"/> </service>
|
||||
<service name="ROM" label_prefix="input_filter" label_suffix=".chargen">
|
||||
<child name="config_fs_rom"/> </service>
|
||||
<service name="ROM" label_last="fb_drv.config">
|
||||
<child name="config_fs_rom" label="managed/fb_drv"/> </service>
|
||||
<service name="ROM" label_last="numlock_remap.config">
|
||||
<child name="config_fs_rom" label="numlock_remap"/> </service>
|
||||
<service name="ROM" label_last="usb_policy">
|
||||
<child name="config_fs_rom" label="usb"/> </service>
|
||||
<service name="ROM" label_last="numlock"> <child name="report_rom"/> </service>
|
||||
<service name="Timer"> <child name="timer"/> </service>
|
||||
<service name="Report"> <child name="fs_report"/> </service>
|
||||
<any-service> <parent/> </any-service>
|
||||
</route>
|
||||
<provides>
|
||||
<service name="Input"/>
|
||||
<service name="Framebuffer"/>
|
||||
<service name="Block"/>
|
||||
<service name="Usb"/>
|
||||
<service name="Platform"/>
|
||||
</provides>
|
||||
</start>
|
||||
|
||||
<start name="nitpicker" caps="1000">
|
||||
<resource name="RAM" quantum="6M"/>
|
||||
<provides><service name="Nitpicker"/></provides>
|
||||
<route>
|
||||
<service name="ROM" label="config">
|
||||
<child name="config_fs_rom" label="nitpicker"/> </service>
|
||||
<service name="ROM" label="focus">
|
||||
<child name="nit_focus"/> </service>
|
||||
<service name="Report" label="keystate">
|
||||
<child name="report_logger"/> </service>
|
||||
<service name="Report"> <child name="report_rom"/> </service>
|
||||
<service name="Framebuffer"> <child name="drivers"/> </service>
|
||||
<service name="Input"> <child name="drivers"/> </service>
|
||||
<service name="Timer"> <child name="timer"/> </service>
|
||||
<any-service> <parent/> </any-service>
|
||||
</route>
|
||||
</start>
|
||||
|
||||
<!-- override user focus when leitzentrale is active -->
|
||||
<start name="nit_focus" priority="-1">
|
||||
<binary name="rom_filter"/>
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<provides> <service name="ROM"/> </provides>
|
||||
<config>
|
||||
<input name="leitzentrale_enabled" rom="leitzentrale" node="leitzentrale">
|
||||
<attribute name="enabled" /> </input>
|
||||
<input name="slides_enabled" rom="slides" node="slides">
|
||||
<attribute name="enabled" /> </input>
|
||||
<output node="focus">
|
||||
<if>
|
||||
<has_value input="leitzentrale_enabled" value="yes" />
|
||||
<then>
|
||||
<attribute name="label" value="leitzentrale -> manager -> fader -> "/>
|
||||
</then>
|
||||
<else>
|
||||
<if>
|
||||
<has_value input="slides_enabled" value="yes" />
|
||||
<then>
|
||||
<attribute name="label" value="slides"/>
|
||||
</then>
|
||||
<else>
|
||||
<attribute name="label" value="runtime -> focus"/>
|
||||
</else>
|
||||
</if>
|
||||
</else>
|
||||
</if>
|
||||
</output>
|
||||
</config>
|
||||
<route>
|
||||
<service name="ROM" label="leitzentrale"> <child name="report_rom"/> </service>
|
||||
<service name="ROM" label="slides"> <child name="report_rom"/> </service>
|
||||
<any-service> <parent/> </any-service>
|
||||
</route>
|
||||
</start>
|
||||
|
||||
<start name="pointer" priority="-1">
|
||||
<resource name="RAM" quantum="2M"/>
|
||||
<provides> <service name="Report"/> </provides>
|
||||
<config shapes="yes"/>
|
||||
<route>
|
||||
<service name="Nitpicker"> <child name="nitpicker"/> </service>
|
||||
<service name="ROM" label="hover"> <child name="report_rom"/> </service>
|
||||
<service name="ROM" label="xray"> <child name="report_rom"/> </service>
|
||||
<any-service> <parent/> <any-child/> </any-service>
|
||||
</route>
|
||||
</start>
|
||||
|
||||
<start name="global_keys_handler" priority="-1">
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<config>
|
||||
<bool name="leitzentrale" initial="yes"/>
|
||||
<bool name="capslock" initial="no"/>
|
||||
<bool name="numlock" initial="no"/>
|
||||
<bool name="slides" initial="no"/>
|
||||
|
||||
<press name="KEY_PRESENTATION" bool="slides" change="toggle"/>
|
||||
<press name="KEY_DASHBOARD" bool="leitzentrale" change="toggle"/>
|
||||
<press name="KEY_CAPSLOCK" bool="capslock" change="toggle"/>
|
||||
<press name="KEY_NUMLOCK" bool="numlock" change="toggle"/>
|
||||
|
||||
<report name="leitzentrale"> <bool name="leitzentrale"/> </report>
|
||||
<report name="capslock"> <bool name="capslock"/> </report>
|
||||
<report name="numlock"> <bool name="numlock"/> </report>
|
||||
<report name="slides"> <bool name="slides"/> </report>
|
||||
</config>
|
||||
<route>
|
||||
<service name="Report"> <child name="report_rom"/> </service>
|
||||
<service name="Nitpicker"> <child name="nitpicker"/> </service>
|
||||
<service name="Timer"> <child name="timer"/> </service>
|
||||
<any-service> <parent/> </any-service>
|
||||
</route>
|
||||
</start>
|
||||
|
||||
<start name="leitzentrale_config" priority="-2">
|
||||
<binary name="rom_filter"/>
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<provides><service name="ROM"/></provides>
|
||||
<route>
|
||||
<service name="ROM" label="leitzentrale"> <child name="report_rom"/> </service>
|
||||
<service name="ROM" label="config">
|
||||
<child name="config_fs_rom" label="leitzentrale"/> </service>
|
||||
<any-service> <parent/> </any-service>
|
||||
</route>
|
||||
</start>
|
||||
|
||||
<start name="clipboard" priority="-2">
|
||||
<resource name="RAM" quantum="2M"/>
|
||||
<provides>
|
||||
<service name="ROM"/> <service name="Report"/>
|
||||
</provides>
|
||||
<route>
|
||||
<service name="ROM" label="config">
|
||||
<child name="config_fs_rom" label="clipboard"/> </service>
|
||||
<service name="ROM" label="focus"> <child name="report_rom"/> </service>
|
||||
<any-service> <parent/> <any-child/> </any-service>
|
||||
</route>
|
||||
</start>
|
||||
|
||||
<start name="leitzentrale" caps="4000" priority="-2">
|
||||
<binary name="init"/>
|
||||
<resource name="RAM" quantum="164M"/>
|
||||
<affinity xpos="1" width="1"/> <!-- decouple leitzentrale from boot CPU -->
|
||||
<provides> <service name="Nitpicker"/> </provides>
|
||||
<route>
|
||||
<service name="LOG"> <child name="log"/> </service>
|
||||
<service name="ROM" label="config">
|
||||
<child name="leitzentrale_config"/> </service>
|
||||
<service name="ROM" label_prefix="report -> ">
|
||||
<child name="report_fs_rom"/> </service>
|
||||
<service name="ROM" label_prefix="manager -> report -> ">
|
||||
<child name="report_fs_rom"/> </service>
|
||||
<service name="ROM" label_prefix="manager -> config -> ">
|
||||
<child name="config_fs_rom"/> </service>
|
||||
<service name="ROM" label_prefix="manager -> displays">
|
||||
<child name="report_rom"/> </service>
|
||||
<service name="ROM" label_prefix="config -> ">
|
||||
<child name="config_fs_rom"/> </service>
|
||||
<service name="ROM" label="manager -> nitpicker_hover">
|
||||
<child name="report_rom"/> </service>
|
||||
<service name="ROM" label="manager -> runtime_view_hover">
|
||||
<child name="report_rom"/> </service>
|
||||
<service name="Report" label="manager -> runtime_view_dialog">
|
||||
<child name="report_rom"/> </service>
|
||||
<service name="Report"> <child name="fs_report"/> </service>
|
||||
<service name="Nitpicker"> <child name="nitpicker"/> </service>
|
||||
<service name="Timer"> <child name="timer"/> </service>
|
||||
<service name="File_system" label="config">
|
||||
<child name="config_fs" label="rw"/> </service>
|
||||
<service name="File_system" label="report">
|
||||
<child name="report_fs" label="ro"/> </service>
|
||||
<service name="File_system" label="report">
|
||||
<child name="report_fs" label="ro"/> </service>
|
||||
<any-service> <parent/> </any-service>
|
||||
</route>
|
||||
</start>
|
||||
|
||||
<start name="rtc_drv" priority="-1">
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<provides> <service name="Rtc"/> </provides>
|
||||
</start>
|
||||
|
||||
<start name="runtime" caps="50000" priority="-3">
|
||||
<binary name="init"/>
|
||||
<resource name="RAM" quantum="32G"/>
|
||||
<route>
|
||||
<service name="ROM" label="config">
|
||||
<child name="config_fs_rom" label="managed/runtime"/> </service>
|
||||
<service name="ROM" label_prefix="config -> ">
|
||||
<child name="config_fs_rom"/> </service>
|
||||
<service name="ROM" label="capslock">
|
||||
<child name="report_rom"/> </service>
|
||||
<service name="ROM" label="clicked">
|
||||
<child name="report_rom"/> </service>
|
||||
<service name="ROM" label="runtime_view -> dialog">
|
||||
<child name="report_rom"/> </service>
|
||||
<service name="File_system" label="config">
|
||||
<child name="config_fs" label="rw"/> </service>
|
||||
<service name="File_system" label="report">
|
||||
<child name="report_fs" label="ro"/> </service>
|
||||
<service name="Block"> <child name="drivers"/> </service>
|
||||
<service name="Usb"> <child name="drivers"/> </service>
|
||||
<service name="Platform" label_prefix="acpica">
|
||||
<child name="drivers" label="acpica"/> </service>
|
||||
<service name="Platform"> <child name="drivers"/> </service>
|
||||
<service name="Nitpicker" label_prefix="leitzentrale">
|
||||
<child name="leitzentrale"/> </service>
|
||||
<service name="Nitpicker" label="backdrop">
|
||||
<child name="nitpicker" label="backdrop"/> </service>
|
||||
<service name="Nitpicker"> <child name="nitpicker"/> </service>
|
||||
<service name="Timer"> <child name="timer"/> </service>
|
||||
<service name="Report" label_suffix="-> shape"> <child name="pointer"/> </service>
|
||||
<service name="Report" label="inspect terminal -> clipboard">
|
||||
<child name="clipboard" label="leitzentrale -> manager -> fader -> -> clipboard"/> </service>
|
||||
<service name="ROM" label="inspect terminal -> clipboard">
|
||||
<child name="clipboard" label="leitzentrale -> manager -> fader -> -> clipboard"/> </service>
|
||||
<service name="Report" label_suffix="-> clipboard"> <child name="clipboard"/> </service>
|
||||
<service name="ROM" label_suffix="-> clipboard"> <child name="clipboard"/> </service>
|
||||
<service name="Report" label="runtime_view -> hover">
|
||||
<child name="report_rom"/> </service>
|
||||
<service name="Report"> <child name="fs_report"/> </service>
|
||||
<service name="LOG" label="unlogged"> <parent/> </service>
|
||||
<service name="LOG"> <child name="log"/> </service>
|
||||
<service name="Rtc"> <child name="rtc_drv"/> </service>
|
||||
<any-service> <parent/> </any-service>
|
||||
</route>
|
||||
</start>
|
||||
|
||||
</config>
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/sh
|
||||
set -e
|
||||
tup
|
||||
qemu-system-x86_64 --drive media=cdrom,file=../build-x86_64/sculpt/output.iso -serial stdio
|
|
@ -0,0 +1,12 @@
|
|||
TARGET_NAME = mp3_audio_sink
|
||||
LIBS += mpg123 libc libm genode-gems
|
||||
|
||||
include_rules
|
||||
|
||||
INCLUDES += -I../cached_fs_rom
|
||||
|
||||
: foreach *.cc |> !cxx |> %B.o {obj}
|
||||
: {obj} | |> !prg |> {bin}
|
||||
: {bin} |> !collect_bin |>
|
||||
|
||||
include &(BIN_RULES)
|
|
@ -0,0 +1,352 @@
|
|||
/*
|
||||
* \brief MP3 audio decoder
|
||||
* \author Emery Hemingway
|
||||
* \date 2018-03-24
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2018 Genode Labs GmbH
|
||||
*
|
||||
* This file is part of the Genode OS framework, which is distributed
|
||||
* under the terms of the GNU Affero General Public License version 3.
|
||||
*/
|
||||
|
||||
/*
|
||||
* TODO:
|
||||
* - Metadata report
|
||||
* - Configure the mpg123 volume control and equalizer
|
||||
* - Optimize buffer sizes
|
||||
*/
|
||||
|
||||
/* Genode includes */
|
||||
#include <gems/magic_ring_buffer.h>
|
||||
#include <os/static_root.h>
|
||||
#include <libc/component.h>
|
||||
#include <audio_out_session/connection.h>
|
||||
#include <terminal_session/connection.h>
|
||||
#include <base/attached_rom_dataspace.h>
|
||||
#include <base/attached_ram_dataspace.h>
|
||||
#include <base/sleep.h>
|
||||
|
||||
/* Mpg123 includes */
|
||||
#include <stdlib.h>
|
||||
#include <sys/types.h>
|
||||
#include <mpg123.h>
|
||||
|
||||
namespace Mp3_audio_sink {
|
||||
|
||||
enum { LEFT, RIGHT, NUM_CHANNELS };
|
||||
|
||||
enum {
|
||||
FEED_POOL_SIZE = 2,
|
||||
CLIENT_BUFFER_SIZE = 1 << 14, /* 16 KiB */
|
||||
};
|
||||
|
||||
enum {
|
||||
AUDIO_OUT_BUFFER_SIZE = NUM_CHANNELS
|
||||
* Audio_out::QUEUE_SIZE
|
||||
* Audio_out::PERIOD
|
||||
* Audio_out::SAMPLE_SIZE
|
||||
};
|
||||
|
||||
using namespace Genode;
|
||||
|
||||
struct Decoder;
|
||||
|
||||
class Terminal_component;
|
||||
struct Main;
|
||||
}
|
||||
|
||||
|
||||
struct Mp3_audio_sink::Decoder
|
||||
{
|
||||
template <typename FUNC>
|
||||
static void for_each_channel(FUNC const &func) {
|
||||
for (int i = 0; i < NUM_CHANNELS; ++i) func(i); }
|
||||
|
||||
Genode::Env &_env;
|
||||
|
||||
Attached_rom_dataspace _config_rom { _env, "config" };
|
||||
|
||||
Audio_out::Connection _out_left { _env, "left", true, true };
|
||||
Audio_out::Connection _out_right { _env, "right", false, false };
|
||||
Audio_out::Connection *_out[NUM_CHANNELS];
|
||||
|
||||
void die_mpg123(mpg123_handle *mh, char const *msg)
|
||||
{
|
||||
int code = mpg123_errcode(mh);
|
||||
Genode::error(msg, ", ", mpg123_strerror(mh));
|
||||
|
||||
mpg123_close(mh);
|
||||
mpg123_delete(mh);
|
||||
mpg123_exit();
|
||||
|
||||
_env.parent().exit(code);
|
||||
Genode::sleep_forever();
|
||||
}
|
||||
|
||||
mpg123_handle *create_mpg123_handle()
|
||||
{
|
||||
mpg123_handle *mh = NULL;
|
||||
|
||||
int err = mpg123_init();
|
||||
if(err != MPG123_OK || (mh = mpg123_new(NULL, &err)) == NULL)
|
||||
Genode::error("Mpg123 setup failed, ", mpg123_plain_strerror(err));
|
||||
|
||||
mpg123_param(mh, MPG123_FEEDPOOL, FEED_POOL_SIZE, 0);
|
||||
mpg123_param(mh, MPG123_FEEDBUFFER, CLIENT_BUFFER_SIZE, 0);
|
||||
|
||||
/* Set mpg123 output format to match Audio_out exactly */
|
||||
mpg123_param(mh, MPG123_FORCE_RATE,
|
||||
Audio_out::SAMPLE_RATE, Audio_out::SAMPLE_RATE);
|
||||
mpg123_format_none(mh);
|
||||
if (mpg123_format(mh, Audio_out::SAMPLE_RATE,
|
||||
MPG123_STEREO, MPG123_ENC_FLOAT_32) != MPG123_OK)
|
||||
die_mpg123(mh, "Audio_out format is unsupported");
|
||||
|
||||
if (mpg123_open_feed(mh) != MPG123_OK)
|
||||
die_mpg123(mh, "mpg123 feeder mode failed");
|
||||
return mh;
|
||||
}
|
||||
|
||||
mpg123_handle *_mh = create_mpg123_handle();
|
||||
|
||||
/* last error code logged */
|
||||
int _mh_err = MPG123_OK;
|
||||
|
||||
/**
|
||||
* Use half of the available RAM as buffer
|
||||
*/
|
||||
size_t _pcm_buffer_size()
|
||||
{
|
||||
size_t n = _env.pd().avail_ram().value / 2;
|
||||
if (n > (1<<20))
|
||||
log("internal buffer size is ", n>>20, "MiB");
|
||||
else if (n > (1<<10))
|
||||
log("internal buffer size is ", n>>10, "KiB");
|
||||
else
|
||||
log("internal buffer size is ", n, " bytes");
|
||||
return n;
|
||||
}
|
||||
|
||||
Magic_ring_buffer<float> _pcm { _env, _pcm_buffer_size() };
|
||||
|
||||
void _log_error()
|
||||
{
|
||||
int code = mpg123_errcode(_mh);
|
||||
if (code != MPG123_OK && _mh_err != code) {
|
||||
_mh_err = code;
|
||||
error(mpg123_plain_strerror(code));
|
||||
}
|
||||
}
|
||||
|
||||
Genode::size_t feedbuffer_size()
|
||||
{
|
||||
long value = 0;
|
||||
double fvalue = 0;
|
||||
if (mpg123_getparam(_mh, MPG123_FEEDBUFFER, &value, &fvalue))
|
||||
die_mpg123(_mh, "failed to get feed buffer size");
|
||||
return value;
|
||||
}
|
||||
|
||||
void submit_audio();
|
||||
|
||||
/**
|
||||
* Process client data, blocks until all data is consumed.
|
||||
*/
|
||||
void process(unsigned char const *src, size_t num_bytes)
|
||||
{
|
||||
/* TODO: patch mpgg123 not to use stdio for printing errors */
|
||||
|
||||
Libc::with_libc([&] () {
|
||||
|
||||
/* feed client data into mpg123 buffer */
|
||||
if (mpg123_feed(_mh, src, num_bytes))
|
||||
die_mpg123(_mh, "failed to feed");
|
||||
|
||||
::off_t num = 0;
|
||||
unsigned char *audio = nullptr;
|
||||
size_t bytes = 0;
|
||||
|
||||
while (mpg123_decode_frame(_mh, &num, &audio, &bytes) == MPG123_OK) {
|
||||
Genode::size_t const samples = bytes / Audio_out::SAMPLE_SIZE;
|
||||
|
||||
while (_pcm.write_avail() < samples) {
|
||||
/* submit audio blocks for packet allocation */
|
||||
submit_audio();
|
||||
}
|
||||
|
||||
Genode::memcpy(_pcm.write_addr(), audio, bytes);
|
||||
_pcm.fill(samples);
|
||||
|
||||
}
|
||||
|
||||
if (mpg123_errcode(_mh) != MPG123_ERR_READER
|
||||
|| mpg123_errcode(_mh) != MPG123_OK)
|
||||
_log_error();
|
||||
});
|
||||
}
|
||||
|
||||
Io_signal_handler<Decoder> _progress_handler {
|
||||
_env.ep(), *this, &Decoder::submit_audio };
|
||||
|
||||
Signal_handler<Decoder> _config_handler {
|
||||
_env.ep(), *this, &Decoder::_handle_config };
|
||||
|
||||
void _handle_config()
|
||||
{
|
||||
_config_rom.update();
|
||||
Xml_node const config = _config_rom.xml();
|
||||
|
||||
enum { EQ_COUNT = 32 };
|
||||
|
||||
mpg123_reset_eq(_mh);
|
||||
config.for_each_sub_node("eq", [&] (Xml_node const &node) {
|
||||
unsigned band = node.attribute_value("band", 32U);
|
||||
double value = node.attribute_value("value", 0.0);
|
||||
if (band < EQ_COUNT && value != 0.0) {
|
||||
mpg123_eq(_mh, MPG123_LR , band, value);
|
||||
log("EQ ", band, ": ", mpg123_geteq(_mh, MPG123_LR , band));
|
||||
}
|
||||
});
|
||||
|
||||
double volume = 0.5;
|
||||
config.for_each_sub_node("volume", [&] (Xml_node const &node) {
|
||||
volume = node.attribute_value("linear", volume); });
|
||||
mpg123_volume(_mh, 0.5);
|
||||
}
|
||||
|
||||
Decoder(Genode::Env &env) : _env(env)
|
||||
{
|
||||
_out[LEFT] = &_out_left;
|
||||
_out[RIGHT] = &_out_right;
|
||||
_out_left.progress_sigh(_progress_handler);
|
||||
_config_rom.sigh(_config_handler);
|
||||
_handle_config();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
void Mp3_audio_sink::Decoder::submit_audio()
|
||||
{
|
||||
using namespace Audio_out;
|
||||
|
||||
enum { STEREO_PERIOD = Audio_out::PERIOD*NUM_CHANNELS };
|
||||
|
||||
if (_out_left.stream()->empty()) {
|
||||
for_each_channel([&] (int const c) {
|
||||
_out[c]->start(); });
|
||||
log("Audio_out streams started");
|
||||
}
|
||||
|
||||
while (_pcm.read_avail() > STEREO_PERIOD) {
|
||||
Audio_out::Packet *p[NUM_CHANNELS];
|
||||
|
||||
while (true) {
|
||||
try { p[LEFT] = _out[LEFT]->stream()->alloc(); break; }
|
||||
catch (Audio_out::Stream::Alloc_failed) {
|
||||
_out[LEFT]->wait_for_alloc(); }
|
||||
}
|
||||
|
||||
unsigned const ppos = _out[LEFT]->stream()->packet_position(p[LEFT]);
|
||||
p[RIGHT] = _out[RIGHT]->stream()->get(ppos);
|
||||
|
||||
float const *content = _pcm.read_addr();
|
||||
|
||||
/* copy channel contents into sessions */
|
||||
for (unsigned i = 0; i < STEREO_PERIOD; i += NUM_CHANNELS) {
|
||||
for_each_channel([&] (int const c) {
|
||||
p[c]->content()[i/NUM_CHANNELS] = content[i+c]; });
|
||||
}
|
||||
|
||||
for_each_channel([&] (int const c) {
|
||||
_out[c]->submit(p[c]); });
|
||||
_pcm.drain(STEREO_PERIOD);
|
||||
}
|
||||
|
||||
if (_out_left.stream()->empty()) {
|
||||
log("Audio_out queue underrun, stopping stream");
|
||||
for_each_channel([&] (int const c) {
|
||||
_out[c]->stop(); });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class Mp3_audio_sink::Terminal_component :
|
||||
public Rpc_object<Terminal::Session, Terminal_component>
|
||||
{
|
||||
private:
|
||||
|
||||
Decoder &_decoder;
|
||||
|
||||
Genode::Attached_ram_dataspace _io_buffer;
|
||||
|
||||
public:
|
||||
|
||||
Terminal_component(Genode::Env &env, Decoder &decoder)
|
||||
:
|
||||
_decoder(decoder),
|
||||
_io_buffer(env.pd(), env.rm(), _decoder.feedbuffer_size())
|
||||
{ }
|
||||
|
||||
|
||||
/********************************
|
||||
** Terminal session interface **
|
||||
********************************/
|
||||
|
||||
Genode::Dataspace_capability _dataspace() {
|
||||
return _io_buffer.cap(); }
|
||||
|
||||
Size size() { return Size(0, 0); }
|
||||
|
||||
bool avail() { return false; }
|
||||
|
||||
Genode::size_t read(void *, Genode::size_t) { return 0; }
|
||||
Genode::size_t _read(Genode::size_t dst_len) { return 0; }
|
||||
|
||||
Genode::size_t write(void const *, Genode::size_t) { return 0; }
|
||||
Genode::size_t _write(Genode::size_t num_bytes)
|
||||
{
|
||||
/* sanitize argument */
|
||||
num_bytes = Genode::min(num_bytes, _io_buffer.size());
|
||||
|
||||
/* copy to decoder */
|
||||
_decoder.process(
|
||||
_io_buffer.local_addr<unsigned char>(), num_bytes);
|
||||
|
||||
return num_bytes;
|
||||
}
|
||||
|
||||
void connected_sigh(Genode::Signal_context_capability cap) {
|
||||
Genode::Signal_transmitter(cap).submit(); }
|
||||
|
||||
void read_avail_sigh(Genode::Signal_context_capability) { }
|
||||
|
||||
void size_changed_sigh(Genode::Signal_context_capability) { }
|
||||
};
|
||||
|
||||
|
||||
struct Mp3_audio_sink::Main
|
||||
{
|
||||
Genode::Env &_env;
|
||||
|
||||
Decoder _decoder { _env };
|
||||
|
||||
Terminal_component _terminal { _env, _decoder };
|
||||
|
||||
Static_root<Terminal::Session> _terminal_root {
|
||||
_env.ep().manage(_terminal) };
|
||||
|
||||
Main(Libc::Env &env) : _env(env)
|
||||
{
|
||||
env.parent().announce(env.ep().manage(_terminal_root));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/***************
|
||||
** Component **
|
||||
***************/
|
||||
|
||||
void Libc::Component::construct(Libc::Env &env) {
|
||||
static Mp3_audio_sink::Main _main(env); }
|
|
@ -1,62 +0,0 @@
|
|||
include_rules
|
||||
export SYSLINUX
|
||||
|
||||
BOOT_MODULES = \
|
||||
config \
|
||||
$(GENODE_DIR)/repos/os/src/init/init \
|
||||
$(GENODE_DIR)/repos/base/src/test/log/test-log \
|
||||
|
||||
ifeq (@(TUP_ARCH),i386)
|
||||
ADDR_TYPE = .long
|
||||
endif
|
||||
ifeq (@(TUP_ARCH),x86_64)
|
||||
ADDR_TYPE = .quad
|
||||
endif
|
||||
|
||||
AWK_IT = awk -v RS=" " -v ADDR_TYPE="$(ADDR_TYPE)"
|
||||
|
||||
: $(BOOT_MODULES) \
|
||||
|> \
|
||||
echo -n %f | $(AWK_IT) -f a.awk >> %o; \
|
||||
echo -n %f | $(AWK_IT) -f b.awk >> %o; \
|
||||
echo -n %f | $(AWK_IT) -f c.awk >> %o; \
|
||||
|> modules.s
|
||||
|
||||
: modules.s | $(BOOT_MODULES) |> $(CC) $(CC_MARCH) -c %f -o %o |> boot_modules.o
|
||||
|
||||
LINK_ADDRESS = 0x01000000
|
||||
|
||||
: boot_modules.o | $(GENODE_DIR)/repos/base-nova/<core> \
|
||||
|> \
|
||||
$(CXX) $(CC_MARCH) -nostdlib \
|
||||
-Wl,-T -Wl,$(GENODE_DIR)/repos/base/src/ld/genode.ld \
|
||||
-Wl,-z -Wl,max-page-size=0x1000 \
|
||||
-Wl,-Ttext=$(LINK_ADDRESS) -Wl,-gc-sections \
|
||||
-Wl,-nostdlib \
|
||||
-Wl,--whole-archive -Wl,--start-group \
|
||||
%<core> %f \
|
||||
-Wl,--no-whole-archive \
|
||||
-Wl,--end-group \
|
||||
`$(CXX) $(CC_MARCH) -print-libgcc-file-name` \
|
||||
-o %o; \
|
||||
strip %o; \
|
||||
|> image.elf
|
||||
|
||||
: $(GENODE_DIR)/repos/base-nova/src/NOVA/build/hypervisor-x86_64 image.elf |> \
|
||||
mkdir -p tmp/syslinux; \
|
||||
cp \
|
||||
$SYSLINUX/share/syslinux/isolinux.bin \
|
||||
$SYSLINUX/share/syslinux/ldlinux.c32 \
|
||||
$SYSLINUX/share/syslinux/libcom32.c32 \
|
||||
$SYSLINUX/share/syslinux/mboot.c32 \
|
||||
isolinux.cfg \
|
||||
tmp/syslinux; \
|
||||
cp %f tmp; \
|
||||
chmod -R 777 tmp; \
|
||||
mkisofs -o %o \
|
||||
-b syslinux/isolinux.bin -c syslinux/boot.cat \
|
||||
-no-emul-boot -boot-load-size 4 -boot-info-table \
|
||||
-iso-level 2 \
|
||||
tmp; \
|
||||
rm -r tmp; \
|
||||
|> output.iso
|
2
upstream
2
upstream
|
@ -1 +1 @@
|
|||
Subproject commit c1cf7c9ad6d43a35b1f28f5f7ebe1472bf293585
|
||||
Subproject commit 03b9cb75308bd86b23e6253b630e18f5146bfb75
|
Loading…
Reference in New Issue