Browse Source

Continue work for redistributable binaries, WIP

Signed-off-by: falkTX <falktx@falktx.com>
tags/22.02
falkTX 3 years ago
parent
commit
649773c851
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
6 changed files with 143 additions and 22 deletions
  1. +21
    -1
      Makefile
  2. +1
    -1
      dpf
  3. +49
    -0
      plugins/Makefile
  4. +24
    -15
      src/CardinalPlugin.cpp
  5. +39
    -1
      src/Makefile
  6. +9
    -4
      src/dep.cpp

+ 21
- 1
Makefile View File

@@ -6,7 +6,24 @@

include dpf/Makefile.base.mk

all: cardinal deps dgl plugins gen
all: cardinal deps dgl plugins gen resources

# --------------------------------------------------------------
# Build config

PREFIX ?= /usr/local
DESTDIR ?=
SYSDEPS ?= false

# --------------------------------------------------------------
# Check for system-wide dependencies

# HAVE_LIBARCHIVE = $(shell pkg-config --exists libarchive && echo true)
#
# libjansson.a
# libsamplerate.a
# libspeexdsp.a
# libzstd.a

# --------------------------------------------------------------

@@ -23,6 +40,9 @@ dgl:
plugins: deps
$(MAKE) all -C plugins

resources: cardinal gen
$(MAKE) resources -C plugins

ifneq ($(CROSS_COMPILING),true)
gen: cardinal dpf/utils/lv2_ttl_generator
@$(CURDIR)/dpf/utils/generate-ttl.sh


+ 1
- 1
dpf

@@ -1 +1 @@
Subproject commit 1af66e49db01b5e2a5f90e85fe748c162bb83a48
Subproject commit 1da1c811c765689790c8bf4290b2f6939f8046f3

+ 49
- 0
plugins/Makefile View File

@@ -318,6 +318,55 @@ clean:
rm -f $(TARGET)
rm -rf $(BUILD_DIR)

# --------------------------------------------------------------

PLUGIN_LIST = $(subst /plugin.json,,$(wildcard */plugin.json))
PLUGIN_RESOURCES += $(PLUGIN_LIST:%=../bin/Cardinal.lv2/resources/%)
PLUGIN_RESOURCES += $(PLUGIN_LIST:%=../bin/Cardinal.lv2/resources/PluginManifests/%.json)
ifeq ($(MACOS),true)
PLUGIN_RESOURCES += $(PLUGIN_LIST:%=../bin/Cardinal.vst/Contents/Resources/%)
PLUGIN_RESOURCES += $(PLUGIN_LIST:%=../bin/Cardinal.vst/Contents/Resources/PluginManifests/%.json)
else
PLUGIN_RESOURCES += $(PLUGIN_LIST:%=../bin/Cardinal.vst/resources/%)
PLUGIN_RESOURCES += $(PLUGIN_LIST:%=../bin/Cardinal.vst/resources/PluginManifests/%.json)
endif
PLUGIN_RESOURCES += $(PLUGIN_LIST:%=../bin/Cardinal.vst3/Contents/Resources/%)
PLUGIN_RESOURCES += $(PLUGIN_LIST:%=../bin/Cardinal.vst3/Contents/Resources/PluginManifests/%.json)

resources: $(PLUGIN_RESOURCES)

../bin/Cardinal.lv2/resources/%: %/res
-@mkdir -p "$(shell dirname $@)"
ln -sf $(abspath $<) $@

../bin/Cardinal.vst/resources/%: %/res
-@mkdir -p "$(shell dirname $@)"
ln -sf $(abspath $<) $@

../bin/Cardinal.vst/Contents/Resources/%: %/res
-@mkdir -p "$(shell dirname $@)"
ln -sf $(abspath $<) $@

../bin/Cardinal.vst3/Contents/Resources/%: %/res
-@mkdir -p "$(shell dirname $@)"
ln -sf $(abspath $<) $@

../bin/Cardinal.lv2/resources/PluginManifests/%.json: %/plugin.json
-@mkdir -p "$(shell dirname $@)"
ln -sf $(abspath $<) $@

../bin/Cardinal.vst/resources/PluginManifests/%.json: %/plugin.json
-@mkdir -p "$(shell dirname $@)"
ln -sf $(abspath $<) $@

../bin/Cardinal.vst/Contents/Resources/PluginManifests/%.json: %/plugin.json
-@mkdir -p "$(shell dirname $@)"
ln -sf $(abspath $<) $@

../bin/Cardinal.vst3/Contents/Resources/PluginManifests/%.json: %/plugin.json
-@mkdir -p "$(shell dirname $@)"
ln -sf $(abspath $<) $@

# --------------------------------------------------------------
# Build commands



+ 24
- 15
src/CardinalPlugin.cpp View File

@@ -72,23 +72,32 @@ struct Initializer {
random::init();
ui::init();
std::string resDir;
if (const char* const bundlePath = plugin->getBundlePath())
{
asset::systemDir = bundlePath;
#ifdef DISTRHO_OS_MAC
asset::systemDir += "/Contents/Resources";
#endif
}
else
if (asset::systemDir.empty())
{
// Make system dir point to source code location as fallback
// TODO use /usr/share if on linux? if we count on it being installed..
asset::systemDir = CARDINAL_PLUGIN_SOURCE_DIR DISTRHO_OS_SEP_STR "Rack" DISTRHO_OS_SEP_STR "res";
}
if (const char* const bundlePath = plugin->getBundlePath())
{
if (const char* const resourcePath = getResourcePath(bundlePath))
{
asset::bundlePath = system::join(resourcePath, "PluginManifests");
asset::systemDir = resourcePath;
}
}
if (asset::systemDir.empty())
{
// Make system dir point to source code location as fallback
// TODO use /usr/share if on linux? if we count on it being installed..
asset::systemDir = CARDINAL_PLUGIN_SOURCE_DIR DISTRHO_OS_SEP_STR "Rack";
if (! system::isDirectory(system::join(asset::systemDir, "res")))
{
asset::bundlePath = CARDINAL_PLUGIN_PREFIX "/share/Cardinal/Plugins";
asset::systemDir = CARDINAL_PLUGIN_PREFIX "/share/Cardinal/Resources";
}
}
asset::userDir = asset::systemDir;
asset::userDir = asset::systemDir;
}
// Log environment
INFO("%s %s v%s", APP_NAME.c_str(), APP_EDITION.c_str(), APP_VERSION.c_str());


+ 39
- 1
src/Makefile View File

@@ -4,6 +4,13 @@
# Created by falkTX
#

# --------------------------------------------------------------
# Build config

PREFIX ?= /usr/local
DESTDIR ?=
SYSDEPS ?= false

# --------------------------------------------------------------
# Project name, used for binaries

@@ -150,10 +157,41 @@ SOURCE_DIR = $(CURDIR)
endif

BUILD_CXX_FLAGS += -DCARDINAL_PLUGIN_SOURCE_DIR='"$(SOURCE_DIR)"'
BUILD_CXX_FLAGS += -DCARDINAL_PLUGIN_PREFIX='"$(PREFIX)"'

# --------------------------------------------------------------
# Enable all possible plugin types

all: jack lv2 vst2 vst3
all: jack lv2 vst2 vst3 resources

# --------------------------------------------------------------

CORE_RESOURCES = $(wildcard Rack/res/*)

PLUGIN_RESOURCES += $(CORE_RESOURCES:%=../bin/Cardinal.lv2/resources/%)
ifeq ($(MACOS),true)
PLUGIN_RESOURCES += $(CORE_RESOURCES:%=../bin/Cardinal.vst/Contents/Resources/%)
else
PLUGIN_RESOURCES += $(CORE_RESOURCES:%=../bin/Cardinal.vst/resources/%)
endif
PLUGIN_RESOURCES += $(CORE_RESOURCES:%=../bin/Cardinal.vst3/Contents/Resources/%)

resources: $(PLUGIN_RESOURCES)

../bin/Cardinal.lv2/resources/%: Rack/res/%
-@mkdir -p "$(shell dirname $@)"
ln -sf $(abspath $<) $@

../bin/Cardinal.vst/resources/%: Rack/res/%
-@mkdir -p "$(shell dirname $@)"
ln -sf $(abspath $<) $@

../bin/Cardinal.vst/Contents/Resources/%: Rack/res/%
-@mkdir -p "$(shell dirname $@)"
ln -sf $(abspath $<) $@

../bin/Cardinal.vst3/Contents/Resources/%: Rack/res/%
-@mkdir -p "$(shell dirname $@)"
ln -sf $(abspath $<) $@

# --------------------------------------------------------------

+ 9
- 4
src/dep.cpp View File

@@ -87,14 +87,19 @@ static inline std::string& trim(std::string& s) {
return s;
}
std::string system(std::string filename) {
return system::join(systemDir, trim(filename));
return system::join(systemDir, bundlePath.empty() ? filename : trim(filename));
}
std::string user(std::string filename) {
return system::join(userDir, trim(filename));
return system(filename);
}
std::string plugin(plugin::Plugin* plugin, std::string filename) {
DISTRHO_SAFE_ASSERT_RETURN(plugin != nullptr, {});
return system::join(systemDir, plugin->path, trim(filename));
DISTRHO_SAFE_ASSERT_RETURN(plugin != nullptr, {});
return system::join(systemDir, plugin->path, bundlePath.empty() ? filename : trim(filename));
}
std::string pluginManifest(std::string dirname) {
if (bundlePath.empty())
return system::join(systemDir, dirname, "plugin.json");
return system::join(bundlePath, dirname + ".json");
}
}
}


Loading…
Cancel
Save