summaryrefslogtreecommitdiff
path: root/utils/lv2-ttl-generator
diff options
context:
space:
mode:
authorfalkTX <falktx@gmail.com>2013-12-24 09:31:36 +0000
committerfalkTX <falktx@gmail.com>2013-12-24 09:31:36 +0000
commit6b9e3f5a3991477d6decccb4205a026412cde034 (patch)
tree8e054d34e0b7afa885e36a1824d6ea678e531ffa /utils/lv2-ttl-generator
parentcdd6d5090c202253eabb893478d98de6fee57e66 (diff)
Move lv2-ttl-generator to utils
Diffstat (limited to 'utils/lv2-ttl-generator')
-rw-r--r--utils/lv2-ttl-generator/GNUmakefile16
-rw-r--r--utils/lv2-ttl-generator/lv2_ttl_generator.c81
2 files changed, 97 insertions, 0 deletions
diff --git a/utils/lv2-ttl-generator/GNUmakefile b/utils/lv2-ttl-generator/GNUmakefile
new file mode 100644
index 00000000..7d15ca08
--- /dev/null
+++ b/utils/lv2-ttl-generator/GNUmakefile
@@ -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/utils/lv2-ttl-generator/lv2_ttl_generator.c b/utils/lv2-ttl-generator/lv2_ttl_generator.c
new file mode 100644
index 00000000..bd19f416
--- /dev/null
+++ b/utils/lv2-ttl-generator/lv2_ttl_generator.c
@@ -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;
+}