Added Midi dependency

This commit is contained in:
Robert Bendun 2022-05-23 17:27:06 +02:00
parent f28cb10669
commit 8853451cb5
5 changed files with 43 additions and 11 deletions

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "lib/midi"]
path = lib/midi
url = git@engi.evolpe.it:pi/midi.git

View File

@ -1,9 +1,12 @@
MAKEFLAGS="-j $(grep -c ^processor /proc/cpuinfo)" MAKEFLAGS="-j $(grep -c ^processor /proc/cpuinfo)"
CXXFLAGS:=$(CXXFLAGS) -std=c++20 -Wall -Wextra -Werror=switch -Werror=return-type -Werror=unused-result CXXFLAGS:=$(CXXFLAGS) -std=c++20 -Wall -Wextra -Werror=switch -Werror=return-type -Werror=unused-result
CPPFLAGS:=$(CPPFLAGS) -Ilib/expected/ -Ilib/ut/ -Isrc/ CPPFLAGS:=$(CPPFLAGS) -Ilib/expected/ -Ilib/ut/ -Ilib/midi/include -Isrc/
RELEASE_FLAGS=-O3 RELEASE_FLAGS=-O3
DEBUG_FLAGS=-O0 -ggdb DEBUG_FLAGS=-O0 -ggdb
LDFLAGS=-L./lib/midi/
LDLIBS=-lmidi-alsa -lasound
Obj= \ Obj= \
environment.o \ environment.o \
errors.o \ errors.o \
@ -29,8 +32,8 @@ debug: bin/debug/musique
bin/%.o: src/%.cc src/*.hh bin/%.o: src/%.cc src/*.hh
g++ $(CXXFLAGS) $(RELEASE_FLAGS) $(CPPFLAGS) -o $@ $< -c g++ $(CXXFLAGS) $(RELEASE_FLAGS) $(CPPFLAGS) -o $@ $< -c
bin/musique: $(Release_Obj) bin/main.o src/*.hh bin/musique: $(Release_Obj) bin/main.o src/*.hh lib/midi/libmidi-alsa.a
g++ $(CXXFLAGS) $(RELEASE_FLAGS) $(CPPFLAGS) -o $@ $(Release_Obj) bin/main.o g++ $(CXXFLAGS) $(RELEASE_FLAGS) $(CPPFLAGS) -o $@ $(Release_Obj) bin/main.o $(LDFLAGS) $(LDLIBS)
bin/debug/musique: $(Debug_Obj) bin/debug/main.o src/*.hh bin/debug/musique: $(Debug_Obj) bin/debug/main.o src/*.hh
g++ $(CXXFLAGS) $(DEBUG_FLAGS) $(CPPFLAGS) -o $@ $(Debug_Obj) bin/debug/main.o g++ $(CXXFLAGS) $(DEBUG_FLAGS) $(CPPFLAGS) -o $@ $(Debug_Obj) bin/debug/main.o

View File

@ -5,6 +5,22 @@ Interpreter języka Musique. Możliwy do wykorzystywania jako:
- biblioteka interpretera języka dołączana do innego projektu (podobnie jak Lua); - biblioteka interpretera języka dołączana do innego projektu (podobnie jak Lua);
- REPL działający w systemie GNU/Linux + ALSA wykonujący język Musique. - REPL działający w systemie GNU/Linux + ALSA wykonujący język Musique.
## Budowanie interpretera
Jeśli nie posiadasz zależności `lib/midi` to:
```console
$ git submodule init
$ git submodule update
$ (cd lib/midi; make)
```
A następnie zbuduj interpreter:
```console
$ make bin/musique
```
## Dostępne komendy ## Dostępne komendy
- `make` - Buduje interpreter `bin/musique` (tryb release) - `make` - Buduje interpreter `bin/musique` (tryb release)

1
lib/midi Submodule

@ -0,0 +1 @@
Subproject commit fb7d28563bf731b0a689ce9902dfad0ec9e63b19

View File

@ -1,9 +1,11 @@
#include <iostream>
#include <musique.hh>
#include <filesystem> #include <filesystem>
#include <span>
#include <fstream> #include <fstream>
#include <iostream>
#include <span>
#include <musique.hh>
#define MIDI_ENABLE_ALSA_SUPPORT
#include <midi.hh>
namespace fs = std::filesystem; namespace fs = std::filesystem;
@ -23,12 +25,12 @@ void usage()
"usage: musique <options> [filename]\n" "usage: musique <options> [filename]\n"
" where filename is path to file with Musique code that will be executed\n" " where filename is path to file with Musique code that will be executed\n"
" where options are:\n" " where options are:\n"
" -c CODE\n" " -c,--run CODE\n"
" --run CODE\n"
" executes given code\n" " executes given code\n"
"\n"
" --ast\n" " --ast\n"
" prints ast for given code\n"; " prints ast for given code\n"
" -l,--list\n"
" lists all available MIDI ports and quit\n";
std::exit(1); std::exit(1);
} }
@ -65,6 +67,13 @@ static Result<void> Main(std::span<char const*> args)
continue; continue;
} }
if (arg == "-l" || arg == "--list") {
midi::ALSA alsa("musique");
alsa.init_sequencer();
alsa.list_ports(std::cout);
return {};
}
if (arg == "-c" || arg == "--run") { if (arg == "-c" || arg == "--run") {
if (args.empty()) { if (args.empty()) {
std::cerr << "musique: error: option " << arg << " requires an argument" << std::endl; std::cerr << "musique: error: option " << arg << " requires an argument" << std::endl;