diff options
author | falkTX <falktx@gmail.com> | 2013-12-24 09:31:36 +0000 |
---|---|---|
committer | falkTX <falktx@gmail.com> | 2013-12-24 09:31:36 +0000 |
commit | 6b9e3f5a3991477d6decccb4205a026412cde034 (patch) | |
tree | 8e054d34e0b7afa885e36a1824d6ea678e531ffa /utils | |
parent | cdd6d5090c202253eabb893478d98de6fee57e66 (diff) |
Move lv2-ttl-generator to utils
Diffstat (limited to 'utils')
-rw-r--r-- | utils/lv2-ttl-generator/GNUmakefile | 16 | ||||
-rw-r--r-- | utils/lv2-ttl-generator/lv2_ttl_generator.c | 81 |
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; +} |