!WiP ChucK port

This commit is contained in:
Ehmry - 2019-07-01 17:09:35 +02:00
parent 63fd1b60ba
commit 991ccf8215
11 changed files with 607 additions and 9 deletions

View File

@ -20,6 +20,7 @@ CC_MARCH = -march=armv8-a
endif
GENODE_DIR = $(TUP_CWD)/upstream
STUB_DIR = $(TUP_CWD)/stub
export NIX_PATH
NIX_BUILD = nix-build --option substitute false
@ -162,7 +163,7 @@ PKG_CONFIG = PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) pkg-config
!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_port = | $(GENODE_DIR)/<pkg-config> |> ^o CC %o^ @(CC_WRAPPER) $(CC) -c $(DEFINES) $(CFLAGS) $(CFLAGS_%f) $(INCLUDES) `$(PKG_CONFIG) --cflags $(LIBS) $(LIBS_CFLAGS)` -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
!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
@ -171,3 +172,29 @@ PKG_CONFIG = PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) pkg-config
!ld = | $(GENODE_DIR)/<lib> $(GENODE_DIR)/<pkg-config> |> ^o LD %o^ $(LD) $(LDFLAGS) `$(PKG_CONFIG) --libs $(LIBS)` %f -o %o |>
!strip = |> strip -o %o %f |>
&LD_SCRIPT_SO = upstream/repos/base/src/ld/genode_rel.ld
ifeq (@(TUP_ARCH),x86_64)
ASM_SYM_DEPENDENCY = movq \1@GOTPCREL(%rip), %rax
else
ASM_SYM_DEPENDENCY = .long \1
endif
!abi_stub = |> ^ STUB %o^\
sed \
-e "s/^\(\w\+\) D \(\w\+\)\$/.data; .global \1; .type \1,%%object; .size \1,\2; \1:/p" \
-e "s/^\(\w\+\) V/.data; .weak \1; .type \1,%%object; \1:/p" \
-e "s/^\(\w\+\) T/.text; .global \1; .type \1,%%function; \1:/p" \
-e "s/^\(\w\+\) R \(\w\+\)\$/.section .rodata; .global \1; .type \1,%%object; .size \1,\2; \1:/p" \
-e "s/^\(\w\+\) W/.text; .weak \1; .type \1,%%function; \1:/p" \
-e "s/^\(\w\+\) B \(\w\+\)\$/.bss; .global \1; .type \1,%%object; .size \1,\2; \1:/p" \
-e "s/^\(\w\+\) U/.text; .global \1; $(ASM_SYM_DEPENDENCY)/p" \
%f \
| $(CC) -x assembler -c - -o tmp.o; \
$(LD) -o %o \
-shared \
-T &(LD_SCRIPT_SO) \
tmp.o; \
rm tmp.o; \
|> $(STUB_DIR)/%B.lib.so $(GENODE_DIR)/<stub>

View File

@ -1,7 +1,39 @@
TARGET_NAME = chuck
LIBS += sndfile stdcxx libc posix
LEX=flex
YACC=bison
include_rules
: |> $(NIX_BUILD) .. --out-link port \
--attr source --attr include |> port-source port-include {port}
SOURCE_LINK = port-source
# : |> $(NIX_BUILD) .. --out-link port --attr %d.source |> $(SOURCE_LINK) {port}
: |> ln -s /home/repo/chuck/src %o |> $(SOURCE_LINK) {port}
: port-source |> cp %f/%d.pc %o \
|> $(PKG_CONFIG_DIR)/%d.pc $(GENODE_DIR)/<pkg-config>
DEFINES += \
-D__PLATFORM_GENODE__ \
-D__GENODE_AUDIO__ \
-D__DISABLE_MIDI__ \
-DCPU_IS_LITTLE_ENDIAN=1 \
-D__CK_SNDFILE_NATIVE__ \
-DHAVE_SYS_SOCKET_H \
-DHAVE_POLL \
-Dloff_t=off_t \
-DPATH_MAX=1024 \
-DHAVE_UNISTD_H \
-DMAX_PATH=1024 \
INCLUDES += -I.
INCLUDES += -I$(SOURCE_LINK)/core
: $(SOURCE_LINK) |> \
$(YACC) -dv -b chuck %f/core/chuck.y \
|> chuck.output chuck.tab.c chuck.tab.h {port}
run ./port_rules.sh $(SOURCE_LINK) core.files
run ./port_rules.sh $(SOURCE_LINK) host.files
LDFLAGS += -L$(STUB_DIR)
: {obj} |> !prg |> %d {bin}
: {bin} |> !collect_bin |>
include &(BIN_RULES)

133
ports/chuck/core.files Normal file
View File

@ -0,0 +1,133 @@
core/ugen_osc.cpp
core/chuck_symbol.h
core/util_buffers.cpp
core/lo/lo_lowlevel.h
core/lo/lo_throw.h
core/lo/blob.c
core/lo/message.c
core/lo/lo_types_internal.h
core/lo/lo_macros.h
core/lo/lo_types.h
core/lo/lo_osc_types.h
core/lo/send.c
core/lo/bundle.c
core/lo/timetag.c
core/lo/lo_errors.h
core/lo/config.h
core/lo/pattern_match.c
core/lo/server_thread.c
core/lo/lo_endian.h
core/lo/address.c
core/lo/lo_internal.h
core/lo/lo.h
core/lo/server.c
core/lo/method.c
core/chuck_utils.cpp
core/chuck_lang.cpp
core/util_network.h
core/util_sndfile.h
core/ulib_regex.cpp
core/chuck_table.h
core/util_opsc.cpp
core/rtmidi.h
core/chuck_frame.cpp
core/ugen_stk.h
core/util_serial.h
core/chuck_ugen.h
core/util_raw.h
core/makefile
core/ulib_machine.cpp
core/chuck_compile.h
core/ulib_opsc.cpp
core/dirent_win32.h
core/chuck_symbol.cpp
core/ulib_math.cpp
core/util_opsc.h
core/chuck_oo.cpp
core/util_math.c
core/util_hid.cpp
core/ulib_math.h
core/chuck_parse.h
core/ugen_xxx.cpp
core/util_thread.h
core/chuck_vm.cpp
core/chuck_errmsg.h
core/chuck_stats.cpp
core/chuck_scan.cpp
core/util_string.h
core/ulib_regex.h
core/util_hid.h
core/ugen_xxx.h
core/rtmidi.cpp
core/uana_extract.cpp
core/chuck_instr.h
core/chuck_otf.cpp
core/chuck_carrier.cpp
core/chuck_dl.h
core/ugen_osc.h
core/chuck_type.h
core/chuck_dl.cpp
core/ugen_filter.cpp
core/makefile.x/makefile.alsa
core/makefile.x/makefile.jack
core/makefile.x/makefile.audicle
core/makefile.x/makefile.rl
core/makefile.x/makefile.osx
core/makefile.x/makefile.pulse
core/makefile.x/makefile.win32
core/util_network.c
core/chuck_emit.h
core/util_console.cpp
core/chuck_win32.c
core/chuck_absyn.cpp
core/chuck_stats.h
core/ugen_stk.cpp
core/ulib_std.cpp
#core/util_console.h
core/chuck.y
core/util_sndfile.c
core/ulib_opsc.h
core/midiio_rtmidi.h
core/chuck_instr.cpp
core/chuck_carrier.h
core/chuck_absyn.h
core/uana_xform.h
core/util_string.cpp
core/util_xforms.h
core/chuck_otf.h
core/util_xforms.c
core/chuck.cpp
core/util_math.h
core/chuck_parse.cpp
core/chuck_errmsg.cpp
core/util_buffers.h
core/chuck.lex
core/chuck_ugen.cpp
core/chuck_oo.h
core/ulib_machine.h
core/midiio_rtmidi.cpp
core/ugen_filter.h
core/chuck_win32.h
core/chuck.h
core/hidio_sdl.cpp
core/chuck_scan.h
core/chuck_table.cpp
core/chuck_shell.h
core/chuck_type.cpp
core/chuck_emit.cpp
core/chuck_def.h
core/uana_extract.h
core/util_serial.cpp
core/ulib_std.h
core/chuck_io.h
core/chuck_frame.h
core/util_thread.cpp
core/chuck_compile.cpp
core/hidio_sdl.h
core/chuck_io.cpp
core/chuck_vm.h
core/chuck_lang.h
core/chuck_shell.cpp
core/chuck_utils.h
core/uana_xform.cpp
core/util_raw.c

View File

@ -1,10 +1,18 @@
{ preparePort, chuck }:
{ preparePort, fetchFromGitHub }:
preparePort rec {
inherit (chuck) name version src;
name = "chuck";
src = fetchFromGitHub {
owner = "ccrma";
repo = "chuck";
rev = "cedce61a1218bd165dfc6b9e9b32413a89f51014";
sha256 = "1hxxh3rin76mbl2gymcb8z7v7s66vsl92g38s56i8ygcy1gr5lkw";
};
outputs = [ "source" ];
sourceRoot = "${name}/src";
sourceRoot = "source/src";
installPhase =
''

4
ports/chuck/host.files Normal file
View File

@ -0,0 +1,4 @@
host/RtAudio/RtAudio.cpp
host/chuck_audio.cpp
host/chuck_console.cpp
host/chuck_main.cpp

16
ports/chuck/port_rules.sh Executable file
View File

@ -0,0 +1,16 @@
#!/bin/sh
LINK=$1
shift
for LIST in $@
do
grep '[[:alnum:]].*\.c$' ${LIST} | while read f
do
echo ": {port} |> !cc_port ${LINK}/${f} |> ${f}.o {obj}"
done
grep '[[:alnum:]].*\.cpp$' ${LIST} | while read f
do
echo ": {port} |> !cxx_port ${LINK}/${f} |> ${f}.o {obj}"
done
done

28
ports/chuck/regex.files Normal file
View File

@ -0,0 +1,28 @@
core/regex/tre-ast.c
core/regex/tre-match-backtrack.c
core/regex/tre-match-parallel.c
core/regex/tre-mem.c
core/regex/tre-compile.c
core/regex/tre-stack.c
core/regex/tre-internal.h
core/regex/regex.h
core/regex/tre-compile.h
core/regex/tre-filter.h
core/regex/tre-config.h
core/regex/LICENSE.txt
core/regex/xmalloc.h
core/regex/tre-match-approx.c
core/regex/config.h
core/regex/tre-parse.c
core/regex/tre-ast.h
core/regex/tre-match-utils.h
core/regex/regcomp.c
core/regex/tre-parse.h
core/regex/tre-mem.h
core/regex/tre-stack.h
core/regex/tre-filter.c
core/regex/regexec.c
core/regex/regerror.c
core/regex/tre.h
core/regex/README.txt
core/regex/xmalloc.c

9
ports/libsndfile/Tupfile Normal file
View File

@ -0,0 +1,9 @@
include_rules
: |> $(NIX_BUILD) .. --out-link port \
--attr %d.source --attr %d.include |> port-source port-include {port}
: port-source |> cp %f/sndfile.pc %o \
|> $(PKG_CONFIG_DIR)/sndfile.pc $(GENODE_DIR)/<pkg-config>
: sndfile.symbols |> !abi_stub |>

View File

@ -0,0 +1,25 @@
{ preparePort, libsndfile }:
preparePort rec {
inherit (libsndfile) name src;
outputs = [ "source" "include" ];
buildPhase =
''
sed \
-e "s|@includedir@|$include|" \
-e 's/@VERSION@/${(builtins.parseDrvName name).version}/' \
-e 's/^Libs:.*/Libs: -l:sndfile.lib.so/' \
-e '/@/d' \
< sndfile.pc.in > src/sndfile.pc
sed \
-e 's/@TYPEOF_SF_COUNT_T@/size_t/' \
-e 's/@SF_COUNT_MAX@/9223372036854775807/' \
< src/sndfile.h.in > src/sndfile.h
'';
installPhase =
''
cp -rv src $source
mkdir $include
cp src/sndfile.h $include/
'';
}

View File

@ -0,0 +1,316 @@
BitBufferAdvance T
BitBufferByteAlign T
BitBufferGetPosition T
BitBufferInit T
BitBufferPeek T
BitBufferPeekOne T
BitBufferRead T
BitBufferReadOne T
BitBufferReadSmall T
BitBufferReset T
BitBufferRewind T
BitBufferUnpackBERSize T
BitBufferWrite T
Gsm_Coder T
Gsm_Decoder T
Gsm_LPC_Analysis T
Gsm_Long_Term_Predictor T
Gsm_Long_Term_Synthesis_Filtering T
Gsm_Preprocess T
Gsm_RPE_Decoding T
Gsm_RPE_Encoding T
Gsm_Short_Term_Analysis_Filter T
Gsm_Short_Term_Synthesis_Filter T
adpcm_decode T
adpcm_encode T
aiff_caf_find_channel_layout_tag T
aiff_caf_of_channel_layout_tag T
aiff_ima_init T
aiff_open T
alac_decode T
alac_decoder_init T
alac_encode T
alac_encoder_init T
alac_get_desc_chunk_items T
alac_get_magic_cookie T
alac_get_magic_cookie_size T
alac_get_source_format T
alac_init T
alac_set_fastmode T
alaw_init T
append_snprintf T
au_open T
audio_detect T
avr_open T
broadcast_var_alloc T
broadcast_var_get T
broadcast_var_set T
caf_open T
cart_var_alloc T
cart_var_get T
cart_var_set T
copyPredictorTo20 T
copyPredictorTo24 T
copyPredictorTo24Shift T
copyPredictorTo32 T
copyPredictorTo32Shift T
copy_coefs T
dither_init T
double64_be_read T
double64_be_write T
double64_init T
double64_le_read T
double64_le_write T
dwd_open T
dwvw_init T
dyn_comp T
dyn_decomp T
flac_init T
flac_open T
float32_be_read T
float32_be_write T
float32_init T
float32_le_read T
float32_le_write T
g721_decoder T
g721_encoder T
g723_16_decoder T
g723_16_encoder T
g723_24_decoder T
g723_24_encoder T
g723_40_decoder T
g723_40_encoder T
g72x_decode_block T
g72x_encode_block T
g72x_init T
g72x_reader_init T
g72x_writer_init T
gsm610_init T
gsm_A D 16
gsm_B D 16
gsm_DLB D 8
gsm_FAC D 16
gsm_H D 22
gsm_INVA D 16
gsm_L_add T
gsm_L_asl T
gsm_L_asr T
gsm_L_mult T
gsm_L_sub T
gsm_MAC D 16
gsm_MIC D 16
gsm_NRFAC D 16
gsm_QLB D 8
gsm_abs T
gsm_add T
gsm_asl T
gsm_asr T
gsm_create T
gsm_decode T
gsm_destroy T
gsm_div T
gsm_encode T
gsm_init T
gsm_mult T
gsm_mult_r T
gsm_norm T
gsm_option T
gsm_sub T
htk_open T
id3_skip T
ima_oki_adpcm_decode_block T
ima_oki_adpcm_encode_block T
ima_oki_adpcm_init T
init_coefs T
interleave_init T
ircam_open T
kALACEncoderMagic R 4
kDefaultMixBits R 4
kDefaultMixRes R 4
kDefaultNumUV R 4
kMaxBitDepth R 4
kMaxRes R 4
kMaxSampleSize R 4
kMaxUV R 4
kMinUV R 4
macos_guess_file_type T
mat4_open T
mat5_open T
mix16 T
mix20 T
mix24 T
mix32 T
mpc2k_open T
nist_open T
ogg_open T
ogg_opus_open T
ogg_pcm_open T
ogg_speex_open T
ogg_vorbis_open T
paf_open T
pc_block T
pcm_init T
predictor_pole T
predictor_zero T
private_init_state T
psf_allocate T
psf_asciiheader_printf T
psf_binheader_readf T
psf_binheader_writef T
psf_calc_max_all_channels T
psf_calc_signal_max T
psf_close_rsrc T
psf_cues_alloc T
psf_cues_dup T
psf_d2i_array T
psf_d2i_clip_array T
psf_d2s_array T
psf_d2s_clip_array T
psf_decode_frame_count T
psf_default_seek T
psf_f2i_array T
psf_f2i_clip_array T
psf_f2s_array T
psf_f2s_clip_array T
psf_fclose T
psf_fgets T
psf_file_valid T
psf_find_read_chunk_iterator T
psf_find_read_chunk_m32 T
psf_find_read_chunk_str T
psf_fopen T
psf_fread T
psf_fseek T
psf_fsync T
psf_ftell T
psf_ftruncate T
psf_fwrite T
psf_get_chunk_iterator T
psf_get_cues T
psf_get_date_str T
psf_get_filelen T
psf_get_format_info T
psf_get_format_major T
psf_get_format_major_count T
psf_get_format_simple T
psf_get_format_simple_count T
psf_get_format_subtype T
psf_get_format_subtype_count T
psf_get_max_all_channels T
psf_get_signal_max T
psf_get_string T
psf_hexdump T
psf_init_files T
psf_instrument_alloc T
psf_is_pipe T
psf_location_string_count T
psf_log_SF_INFO T
psf_log_printf T
psf_memset T
psf_next_chunk_iterator T
psf_open_file T
psf_open_rsrc T
psf_open_tmpfile T
psf_rand_int32 T
psf_sanitize_string T
psf_save_write_chunk T
psf_set_file T
psf_set_stdio T
psf_set_string T
psf_store_read_chunk_str T
psf_store_read_chunk_u32 T
psf_store_string T
psf_strlcpy_crlf T
psf_use_rsrc T
pvf_open T
quantize T
raw_open T
reconstruct T
rf64_open T
rx2_open T
s_bitwidth_to_subformat T
sd2_open T
sds_open T
set_ag_params T
set_standard_ag_params T
sf_close T
sf_command T
sf_current_byterate T
sf_errno B 4
sf_error T
sf_error_number T
sf_error_str T
sf_format_check T
sf_get_chunk_data T
sf_get_chunk_iterator T
sf_get_chunk_size T
sf_get_string T
sf_next_chunk_iterator T
sf_open T
sf_open_fd T
sf_open_virtual T
sf_perror T
sf_read_double T
sf_read_float T
sf_read_int T
sf_read_raw T
sf_read_short T
sf_readf_double T
sf_readf_float T
sf_readf_int T
sf_readf_short T
sf_seek T
sf_set_chunk T
sf_set_string T
sf_strerror T
sf_version_string T
sf_write_double T
sf_write_float T
sf_write_int T
sf_write_raw T
sf_write_short T
sf_write_sync T
sf_writef_double T
sf_writef_float T
sf_writef_int T
sf_writef_short T
step_size T
str_of_endianness T
str_of_major_format T
str_of_minor_format T
str_of_open_mode T
subformat_to_bytewidth T
svx_open T
txw_open T
u_bitwidth_to_subformat T
ulaw_init T
unmix16 T
unmix20 T
unmix24 T
unmix32 T
unpc_block T
update T
voc_open T
vox_adpcm_init T
w64_open T
wav_open T
wavlike_analyze T
wavlike_format_str T
wavlike_gen_channel_mask T
wavlike_ima_init T
wavlike_msadpcm_init T
wavlike_msadpcm_write_adapt_coeffs T
wavlike_read_bext_chunk T
wavlike_read_cart_chunk T
wavlike_read_fmt_chunk T
wavlike_read_peak_chunk T
wavlike_srate2blocksize T
wavlike_subchunk_parse T
wavlike_write_bext_chunk T
wavlike_write_cart_chunk T
wavlike_write_custom_chunks T
wavlike_write_guid T
wavlike_write_peak_chunk T
wavlike_write_strings T
wve_open T
xi_open T

View File

@ -1,7 +1,7 @@
include_rules
: |> $(NIX_BUILD) .. --out-link port \
--attr source --attr include |> port-source port-include {port}
--attr %d.source --attr %d.include |> port-source port-include {port}
: port-source |> cp %f/%d.pc %o \
|> $(PKG_CONFIG_DIR)/%d.pc $(GENODE_DIR)/<pkg-config>