ttl-generator for lv2
authorIOhannes m zmölnig <zmoelnig@umlautQ.umlaeute.mur.at>
Thu, 7 Apr 2016 14:45:17 +0000 (16:45 +0200)
committerIOhannes m zmölnig <zmoelnig@umlautQ.umlaeute.mur.at>
Thu, 7 Apr 2016 14:45:17 +0000 (16:45 +0200)
(taken from m.kronlachners ambix-plugins,
 which in turn took it from distrho/falktx)

debian/extra/lv2-ttl-generator/GNUmakefile [new file with mode: 0644]
debian/extra/lv2-ttl-generator/generate-ttl.sh [new file with mode: 0755]
debian/extra/lv2-ttl-generator/lv2_ttl_generator.c [new file with mode: 0644]
debian/extra/lv2-ttl-generator/readme.txt [new file with mode: 0644]

diff --git a/debian/extra/lv2-ttl-generator/GNUmakefile b/debian/extra/lv2-ttl-generator/GNUmakefile
new file mode 100644 (file)
index 0000000..024f2a1
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/makefile -f
+
+all: build
+
+build: lv2_ttl_generator
+mingw: lv2_ttl_generator.exe
+
+lv2_ttl_generator: lv2_ttl_generator.c
+       $(CXX) lv2_ttl_generator.c -o lv2_ttl_generator -ldl
+
+lv2_ttl_generator.exe: lv2_ttl_generator.c
+       $(CXX) lv2_ttl_generator.c -o lv2_ttl_generator.exe -static
+       touch lv2_ttl_generator
+
+clean:
+       rm -f lv2_ttl_generator lv2_ttl_generator.exe
diff --git a/debian/extra/lv2-ttl-generator/generate-ttl.sh b/debian/extra/lv2-ttl-generator/generate-ttl.sh
new file mode 100755 (executable)
index 0000000..d5ef597
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+#set -e
+#echo "Please run this script from the _bin folder"
+
+error() {
+ echo "$@" 1>&2
+}
+
+SCRIPTPATH=$(cd ${0%/*}; pwd)
+
+if [ -f ${SCRIPTPATH}/lv2_ttl_generator.exe ]; then
+  GEN=${SCRIPTPATH}/lv2_ttl_generator.exe
+  EXT=dll
+else
+  GEN=${SCRIPTPATH}/lv2_ttl_generator
+  EXT=so
+fi
+if [ ! -x "${GEN}"  ]; then
+  error "unable to find lv2_ttl_generator"
+  exit 1
+fi
+
+SEARCHPATH=$1
+if [ "x${SEARCHPATH}" = "x" ]; then
+ if [ -d "lv2" ]; then
+   SEARCHPATH="lv2"
+ fi
+ if [ ! -d "${SEARCHPATH}" ]; then
+   SEARCHPATH=.
+ fi
+fi
+if [ ! -d "${SEARCHPATH}" ]; then
+ error "cannot search plugins in non-existing directory ${SEARCHPATH}"
+ exit 1
+fi
+
+
+find  ${SEARCHPATH} -type d -name "*.lv2" -exec /bin/sh -c "cd {}; ${GEN} ./*.${EXT}" \;
+
diff --git a/debian/extra/lv2-ttl-generator/lv2_ttl_generator.c b/debian/extra/lv2-ttl-generator/lv2_ttl_generator.c
new file mode 100644 (file)
index 0000000..bd19f41
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * JUCE LV2 *.ttl generator
+ */
+
+#include <stdio.h>
+#include <string.h>
+
+#ifdef _WIN32
+ #include <windows.h>
+ #define TTL_GENERATOR_WINDOWS
+#else
+ #include <dlfcn.h>
+#endif
+
+#ifndef nullptr
+ #define nullptr (0)
+#endif
+
+typedef void (*TTL_Generator_Function)(const char* basename);
+
+int main(int argc, char* argv[])
+{
+    if (argc != 2)
+    {
+        printf("usage: %s /path/to/plugin-DLL\n", argv[0]);
+        return 1;
+    }
+
+#ifdef TTL_GENERATOR_WINDOWS
+    const HMODULE handle = LoadLibraryA(argv[1]);
+#else
+    void* const handle = dlopen(argv[1], RTLD_LAZY);
+#endif
+
+    if (! handle)
+    {
+#ifdef TTL_GENERATOR_WINDOWS
+        printf("Failed to open plugin DLL\n");
+#else
+        printf("Failed to open plugin DLL, error was:\n%s\n", dlerror());
+#endif
+        return 2;
+    }
+
+#ifdef TTL_GENERATOR_WINDOWS
+    const TTL_Generator_Function ttlFn = (TTL_Generator_Function)GetProcAddress(handle, "lv2_generate_ttl");
+#else
+    const TTL_Generator_Function ttlFn = (TTL_Generator_Function)dlsym(handle, "lv2_generate_ttl");
+#endif
+
+    if (ttlFn != NULL)
+    {
+        char basename[strlen(argv[1])+1];
+
+#ifdef TTL_GENERATOR_WINDOWS
+        if (char* base2 = strrchr(argv[1], '\\'))
+#else
+        if (char* base2 = strrchr(argv[1], '/'))
+#endif
+        {
+            strcpy(basename, base2+1);
+            basename[strrchr(base2, '.')-base2-1] = '\0';
+        }
+        else
+            strcpy(basename, argv[1]);
+
+        printf("Generate ttl data for '%s', basename: '%s'\n", argv[1], basename);
+
+        ttlFn(basename);
+    }
+    else
+        printf("Failed to find 'lv2_generate_ttl' function\n");
+
+#ifdef TTL_GENERATOR_WINDOWS
+    FreeLibrary(handle);
+#else
+    dlclose(handle);
+#endif
+
+    return 0;
+}
diff --git a/debian/extra/lv2-ttl-generator/readme.txt b/debian/extra/lv2-ttl-generator/readme.txt
new file mode 100644 (file)
index 0000000..0bd3ab5
--- /dev/null
@@ -0,0 +1,7 @@
+this lv2_ttl_generator is taken from DISTRHO by Filipe Coelho (aka 'falkTX')
+
+http://distrho.sourceforge.net
+https://github.com/falkTX/DISTRHO
+
+
+this small tool creates the needed .ttl files out of the plug-in binaries (.so) for the .lv2 bundle