Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rewrite GUI with cross-platform toolkit #37

Closed
18 of 19 tasks
nickdowell opened this issue Sep 21, 2016 · 40 comments
Closed
18 of 19 tasks

Rewrite GUI with cross-platform toolkit #37

nickdowell opened this issue Sep 21, 2016 · 40 comments

Comments

@nickdowell
Copy link
Member

nickdowell commented Sep 21, 2016

Progress

  • Integrate JUCE into Automake
  • Rewrite control panel
  • Reimplement "tooltips"
  • Port plug-ins
    • LV2
    • DSSI
    • VST
  • Port standalone app
    • Bank & Preset selector
    • Preset Clear / Randomise / Undo / Redo / Rename
    • MIDI Learn / CC assignment
    • Config / settings
      • Pitch bend range
      • MIDI channel
      • Max polyphony
    • About dialog / splash
    • Update / fix translations

Bugs to be fixed

  • warning: patch:Set for unknown property emitted when opening LV2 UI in Ardour
  • Preset rename: keyboard focus not grabbed by text field

Feature requests that are blocked by this:


Requirements for new GUI implementation:


Library License Future-proof Size HiDPI support Linux Mac Scrollable lists
JUCE GPL ✅✅✅ Huge
VSTGUI BSD ✅✅✅ Big
IPlug2 zlib Medium ❌ Uses GDK
DPF ISC Small
AVTK BSD 💀 Tiny
pugl ISC No widgets
@danboid
Copy link

danboid commented Jul 12, 2017

What are your thoughts about the toolkit to use for the new UI Nick?

As for cross-platform, it should be noted that at least the current amsynth GUI works with FreeBSD and TrueOS. JUCE doesn't seem to support FreeBSD currently, at least the version included with Helm requires some patching to get it to build. I've yet to get JUCE to build under TrueOS but I've read someone else has had success in getting JUCE running under FreeBSD, some years back.

@nickdowell
Copy link
Member Author

@danboid thanks for the info, a shame to hear that JUCE does not work out of the box on BSD. JUCE is the most "obvious" choice for the UI rewrite as it's suitable for embedding into plug-ins and has a lot of adoption in audio software. Do you know of any BSD-friendly alternatives - for example those used by other plug-ins you have running on TrueOS?

@danboid
Copy link

danboid commented Jul 15, 2017

Hi Nick!

I don't really have any better suggestions for you sorry but Qt is an option as I have got Rui's samplv1 working under Ardour OK.

I would like to see JUCE gain FreeBSD support ideally, if only so I can run Helm and Noisemaker. I've just posted to their forum now to ask about it:

https://forum.juce.com/t/freebsd-and-trueos-support/23332

@danboid
Copy link

danboid commented Jul 17, 2017

Jules (the JUCE dev) has replied. He says he'd be willing to accept patches to get JUCE building under FreeBSD as long as they're not too major but of course that means it doesn't have any existing support, as I thought.

I am currently trying out FreeBSDs Linux binary compat support trying to get Chrome to work. If that works out the then it'd be easier for me just to use a Linux build of amsynth with a Linux DAW. Not ideal but better than having to dual-boot, if it works.

@nickdowell
Copy link
Member Author

nickdowell commented May 5, 2019

[LV2] plea to plugin UI devs

While we're at it..

Since there are still new plugins with GTK and QT GUI popping up, and
it's been at least 4 years since we last pointed this out, here's a
friendly reminder:

   **Please avoid big toolkit and be careful with C++**

That being said, keep on hacking.


gtk2 + gtk3 cannot exist in the same memory-space, likewise Qt4 + Qt5.
This means a gtk2 host cannot load plugins with a gtk3 GUI, nor can
you load a Qt4 plugin at the same time as plugin using a Qt5 GUI.

While gtk and Qt allows for nicely portable applications, that is
definitely not true for plugin GUIs. fltk is not trivial either.
There are all sorts of edge-cases: e.g. relocating the library
(dependent paths, modules), static initialization/unloading and ABI
compatibility...

The latter also extends to dependencies direct or indirect. A recent
example is sigc++ gcc4/gcc5 ABI incompatibility (gtkmm uses sigc++).

..and that's just the top of the iceberg.

Unless you know what you're doing, at the time of writing the most
sensible way is to use DPF or JUCE or directly openGL (via pugl). AVTK
may become an option soonish.

Cheers!
robin

http://lists.lv2plug.in/pipermail/devel-lv2plug.in/2016-March/001593.html

Possible options:

@nickdowell nickdowell changed the title Rewrite GUI Cross-platform GUI toolkit May 17, 2019
@nickdowell nickdowell changed the title Cross-platform GUI toolkit Rewrite GUI with cross-platform toolkit May 31, 2019
@nickdowell
Copy link
Member Author

Zrythm is a GTK3 based host and cannot load amsynth's GTK2 based UI 😢

Its author recommends using pugl with cairo or opengl/nanovg

@nickdowell
Copy link
Member Author

Nice to have: a display of the waveform when altering oscillator shape

#129 (comment)

@nickdowell
Copy link
Member Author

iPlug 2 looks cool but it only supports creation of basic UI with knobs and buttons. Features like the preset navigator (#90) would not be feasible with iPlug 2.

Right now I think the realistic options are JUCE or VSTGUI

@ainola
Copy link

ainola commented Dec 20, 2020

Hello! GTK2 is now EOL and will slowly get demoted/removed from distribution repositories. I know this is a difficult decision to make - I don't offer any solutions - but I figured it might help to make it known.

Thanks for your great work!

@nickdowell
Copy link
Member Author

@ainola thanks for the info, once any distributions drops GTK2 that will definitely force the issue.

I think JUCE is the way to go as it has a lot of momentum, good documentation, and a sizeable developer community on its forum.

Porting is quite a big undertaking, so finding the time & motivation is the difficulty.

@AnClark
Copy link

AnClark commented Jul 24, 2021

Hi, Nick!

In my opinion, both Qt and DPF are excellent for cross-platform, especially on Windows.

  • Qt: I just have implemented Rui's SynthV1 and PadthV1 to Windows (currently LV2 only), and they work well in REAPER.
  • DPF: It's intended to be cross-platform, with its own UI toolkits which could be light-weight enough. Dragonfly Reverb is based on DPF, which works well on Windows and Linux.

@nickdowell
Copy link
Member Author

nickdowell commented Aug 5, 2021

Thanks @AnClark !

  • Qt is a good cross-platform toolkit, but unfortunately due to the Qt4 / Qt5 compatibility issue mentioned above it seems like a bad choice on Linux.

  • DPF: do you have any experience of using it? I'd love to hear how it is in practice.

I feel the ability to create a "preset navigator" is quite an important requirement, as the number of preset now included with amsynth is crying out for this feature. It seems like many of of "lightweight" toolkits don't have the building blocks required for this - e.g. scrollable areas / lists and text input fields, but I could be wrong.

I considered updating to GTK3 as a stop-gap but Ardour is sticking with GTK2 for now, and amsynth needs to be compatible with it :-)

@danboid
Copy link

danboid commented Aug 7, 2021

Hi Nick!

Have you ever heard of https://github.com/Immediate-Mode-UI/Nuklear or https://github.com/ocornut/imgui ? Nuklear is implemented in a single header.

@danboid
Copy link

danboid commented Oct 27, 2022

I'm a big fan of lightweight so AVTK sounds nice but I'd never heard of it before now. Has it been proven? Many Linux plugins use JUCE so that seems like the safest bet, shame its so bloaty!

@kmturley
Copy link

I think you should also add a license/cost column to your comparison rubric.

In the Audio Programmer and SFZ Discords chats, other developers have mentioned the used of third-party code can change the license/cost of your plugin.

For example JUCE if you use the free version I believe your code has to be released as GPL?
Otherwise you have to pay for a license? I'm not an expert in this, best to check it out yourself!

@nickdowell
Copy link
Member Author

nickdowell commented Nov 2, 2022

AVTK doesn't have wide adoption, but it is used by the OpenAV plugins - https://github.com/openAVproductions

There is a column for licenses... amsynth is GPL, so JUCE's GPL license is ideal. I'm not sure what the implication of integrating more liberally licensed code into amsynth would be. In the worst case I could re-license my code, but would then have to remove contributed code unless those authors agreed to re-licensing.


I've started experimenting with using DPF

  • integration is a little tricky because there's no documentation for how to use without the DISTRO framework, but I've managed to link in just the necessary GUI bits and get it drawing 🎉
  • good code quality
  • small binary size (adds ~3MB, vs ~4 for VSTGUI and ~7 for JUCE)
  • doesn't implement pop-up menus

@nickdowell
Copy link
Member Author

Quick update - a good start has been made on a JUCE version of the GUI.

Until it's ready for CI builds it will be in this fork - https://github.com/nickdowell/amsynth/tree/juce
Right now the main editor panel (knobs and buttons etc) has been re-implemented for stand-alone and VST, but the outer shell with menus and preset selector is still GTK.
The VST no longer links to GTK and can be loaded in-process within REAPER 🎉
LV2 and DSSI are unchanged.
The Makefiles expect to find ~/JUCE

Since a complete rewrite will take a while I am considering leaving the standalone version in this mixed GTK / JUCE state and focusing on getting a first release with GTK-free plugins.

Not sure whether DSSI is still required - does anyone still use that?

@nickdowell
Copy link
Member Author

Partially blocked by juce-framework/JUCE#1171

@danboid
Copy link

danboid commented Jan 10, 2023

That's how bug reporting is supposed to be done ie solving the problem for the devs.

Thanks for the updates Nick!

@Audiojunkie
Copy link

Some thoughts after recent investigation:

  • IPlug2

    • unsuitable for embedding due to use of GDK & GTK
  • JUCE

    • relatively easy to integrate into amsynth_vst.cpp
    • good Linux support (according to the Surge Synth Team)
    • BSD support too
    • comprehensive component library
    • good documentation
    • VERY large binary size (not sure if anything can be done to reduce the bloat)
  • VSTGUI

    • difficult integration (e.g. need to implement a VSTGUI::X11::RunLoop to resolve crashes)
    • bad documentation (the above was completely undocumented)
    • bad API design (e.g. CFrame::close() also calls forget()!?)
    • hit-and-miss Linux support (e.g. vst_linux.cpp misses necessary includes in certain versions)
    • no BSD support
    • lighter-weight (< 50% size of JUCE binaries)
  • AVTK

    • light-weight (nice!)
    • project appears to be dead (no commits since 2017)

It looks like you’ve pretty much narrowed it down to JUCE. Size is not as important as future-proofing. Drive space is cheap. A well supported and well documented cross-platform toolkit would go a long way toward encouraging development support and project longevity in the long run. I think you are on the right track. 🙂👍🏼

@nickdowell
Copy link
Member Author

If anyone is interested in trying out the JUCE version of amsynth, it would be great to get some feedback at this stage!

All the plugin versions of amsynth (DSSI, LV2 & VST) now use JUCE instead of GTK and implement most of the old functionality (except the tooltips which have not yet been reimplemented.)

The standalone app is currently a hybrid (JUCE synth UI inside a GTK2 shell) and has a known issue with keyboard shortcut handling (which appears to be a bug in JUCE.)

I only have one Linux install and a handful of host apps to test with, so it would be great if anyone could try out the plugins and report any problems.

Note: JUCE is included as a git submodule so it's important to use the --recursive option when cloning the juce branch of the amsynth repo:

git clone --recursive --branch juce https://github.com/amsynth/amsynth.git

Of if using an existing clone, use git submodule update --init after checking out the juce branch.

@danboid
Copy link

danboid commented Jan 30, 2023

I didn't get as far as a successful configure unfortunately under Debian Testing:

$ ./configure 
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether UID '1000' is supported by ustar format... yes
checking whether GID '1001' is supported by ustar format... yes
checking how to create a ustar tar archive... gnutar
checking whether make supports nested variables... (cached) yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of gcc... gcc3
checking for g++... g++
checking whether the compiler supports GNU C++... yes
checking whether g++ accepts -g... yes
checking for g++ option to enable C++11 features... none needed
checking dependency style of g++... gcc3
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for file... file
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... mt
checking if mt is a manifest tool... no
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
./configure: line 17047: syntax error near unexpected token `noext,'
./configure: line 17047: `AX_CXX_COMPILE_STDCXX_14(noext, mandatory)'

@nickdowell
Copy link
Member Author

I didn't get as far as a successful configure unfortunately under Debian Testing:

Do you have the GNU Autoconf Archive package autoconf-archive installed?

@thorsch
Copy link

thorsch commented Jan 30, 2023 via email

@danboid
Copy link

danboid commented Jan 31, 2023

Is there anything more to building the JUCE version than running:

./autogen.sh
./configure
./make

I've just ran configure but it looks like its still going to build with gtk2 instead of JUCE?

@nickdowell
Copy link
Member Author

Is there anything more to building the JUCE version than running:

./autogen.sh

./configure

./make

I've just ran configure but it looks like its still going to build with gtk2 instead of JUCE?

At the moment only the plugs-ins have been fully moved over to JUCE... The standalone still uses GTK for the menus and preset selector, but the main control panel is JUCE.

It will take a little while longer to get the remaining bits moved across!

@nickdowell
Copy link
Member Author

Quick update: the juce branch no longer uses any GTK, the stand-alone app is now fully JUCE-based.

A couple of features are missing: configuring MIDI channel, polyphony, and pitch bend range.

@nickdowell
Copy link
Member Author

Update

The standalone app has now been fully ported to JUCE, GTK is no longer used for anything 🎉 and this is now merged onto the develop branch.

The only feature that hasn't been ported is the Audio / MIDI config dialog, which I wasn't happy with anyway.

The plug-in builds now have full access to the installed presets, as well as most of the menu items like Copy, Paste, etc.

I think there's a bit more polish needed before making an official release, but it would be great to get feedback from anyone that's interested in testing this rebuild 😄

@danboid
Copy link

danboid commented Aug 6, 2023

Are there any build instructions? I installed the juce-tools package but when I run configure in amsynth git repo I only get as far as:

configure: error: cannot find JUCE source code; if this is a git checkout run git submodule update and try again

I've tried running git submodule update but it didn't help.

@nickdowell
Copy link
Member Author

nickdowell commented Aug 6, 2023

Sorry for the lack of documentation around git submodules!

I've updated autogen.sh to take care of that automatically.

To do it manually, submodule update --init will do the trick (without --init it won't do the initial fetch 🙄)

@danboid
Copy link

danboid commented Aug 7, 2023

You meant git submodule update --init

Closer but still no amcigar:

~/src/amsynth$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether UID '1001' is supported by ustar format... yes
checking whether GID '1001' is supported by ustar format... yes
checking how to create a ustar tar archive... gnutar
checking whether make supports nested variables... (cached) yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of gcc... gcc3
checking for g++... g++
checking whether the compiler supports GNU C++... yes
checking whether g++ accepts -g... yes
checking for g++ option to enable C++11 features... none needed
checking dependency style of g++... gcc3
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... mt
checking if mt is a manifest tool... no
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether g++ supports C++14 features with -std=c++14... yes
./configure: line 17394: IT_PROG_INTLTOOL: command not found
checking for sin in -lm... yes
checking for pthread_create in -lpthread... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for freetype2 libpng x11 zlib... yes
checking for sys/soundcard.h... yes
checking for alsa... yes
checking for jack... no
checking for lash-1.0... no
checking for liblo... no
checking for dssi... no
checking for pandoc... no
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating data/amsynth.desktop
config.status: creating man/Makefile
config.status: creating man/de/Makefile
config.status: creating man/fr/Makefile
config.status: error: cannot find input file: `po/Makefile.in.in'
dan@SALP10185-UB:~/src/amsynth$ make
Makefile:2887: *** missing separator. Stop.

@nickdowell
Copy link
Member Author

Yep 🤦

Looks like you need to install intltool

./configure: line 17394: IT_PROG_INTLTOOL: command not found

@danboid
Copy link

danboid commented Aug 7, 2023

Please update the README with some build instructions for Debian/Ubuntu users, or create an INSTALL file for this.

I've got further now but configure says its not building the LV2 plugin even tho I have lv2-dev package installed?

dan@SALP10185-UB:~/src/amsynth$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether UID '1001' is supported by ustar format... yes
checking whether GID '1001' is supported by ustar format... yes
checking how to create a ustar tar archive... gnutar
checking whether make supports nested variables... (cached) yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of gcc... gcc3
checking for g++... g++
checking whether the compiler supports GNU C++... yes
checking whether g++ accepts -g... yes
checking for g++ option to enable C++11 features... none needed
checking dependency style of g++... gcc3
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... mt
checking if mt is a manifest tool... no
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether g++ supports C++14 features with -std=c++14... yes
checking whether NLS is requested... yes
checking for intltool-update... /usr/bin/intltool-update
checking for intltool-merge... /usr/bin/intltool-merge
checking for intltool-extract... /usr/bin/intltool-extract
checking for xgettext... /usr/bin/xgettext
checking for msgmerge... /usr/bin/msgmerge
checking for msgfmt... /usr/bin/msgfmt
checking for gmsgfmt... /usr/bin/msgfmt
checking for perl... /usr/bin/perl
checking for perl >= 5.8.1... 5.34.0
checking for XML::Parser... ok
checking for sin in -lm... yes
checking for pthread_create in -lpthread... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for freetype2 libpng x11 zlib... yes
checking for sys/soundcard.h... yes
checking for alsa... yes
checking for jack... no
checking for lash-1.0... no
checking for liblo... no
checking for dssi... no
checking for pandoc... no
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating data/amsynth.desktop
config.status: creating man/Makefile
config.status: creating man/de/Makefile
config.status: creating man/fr/Makefile
config.status: creating po/Makefile.in
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
config.status: executing po/stamp-it commands

+------------------------------------------------------- amsynth 1.13.1
|
| Build with GUI support................................ : yes
|
| Build with OSS support................................ : yes
| Build with ALSA support............................... : yes
| Build with JACK support............................... : no
| Build with LASH support............................... : no
| Build with Non Session Manager support................ : no
| Build DSSI plugin..................................... : no
| Build LV2 plugin...................................... :
| Build VST plugin...................................... : yes
|
| Generate man pages using pandoc....................... : no

configure complete. now type 'make' to build amsynth
and then, as root, 'make install' to install

@nickdowell
Copy link
Member Author

Oops, that's a bug in the output message, the LV2 build itself is working regardless.

@nickdowell
Copy link
Member Author

For future testers; on a Debian system the full build dependencies can be installed with:

sudo apt install autopoint dssi-dev intltool libasound2-dev libcurl4-openssl-dev \
	libfreetype-dev libjack-dev liblo-dev libpng-dev libxcursor-dev \
	libxinerama-dev libxrandr-dev pandoc zlib1g-dev

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants