@@ -44,7 +44,7 @@ STANDALONE_LIBS += $(MODULEDIR)/rtaudio.a | |||||
STANDALONE_LIBS += $(MODULEDIR)/rtmidi.a | STANDALONE_LIBS += $(MODULEDIR)/rtmidi.a | ||||
UTILS_LIBS += $(MODULEDIR)/lilv.a | UTILS_LIBS += $(MODULEDIR)/lilv.a | ||||
UTILS_LIBS += $(MODULEDIR)/water.a | |||||
UTILS_LIBS += $(MODULEDIR)/water.files.a | |||||
# ---------------------------------------------------------------------------------------------------------------------------- | # ---------------------------------------------------------------------------------------------------------------------------- | ||||
@@ -130,7 +130,7 @@ ui_lv2-windows: $(BINDIR)/$(MODULENAME)-lv2-windows.exe | |||||
LIBS = \ | LIBS = \ | ||||
$(MODULEDIR)/lilv.a \ | $(MODULEDIR)/lilv.a \ | ||||
$(MODULEDIR)/water.a | |||||
$(MODULEDIR)/water.files.a | |||||
# ---------------------------------------------------------------------------------------------------------------------------- | # ---------------------------------------------------------------------------------------------------------------------------- | ||||
# Common objects | # Common objects | ||||
@@ -16,10 +16,12 @@ BUILD_CXX_FLAGS += -I.. | |||||
ifeq ($(MACOS),true) | ifeq ($(MACOS),true) | ||||
OBJS = $(OBJDIR)/$(MODULENAME).mm.o | OBJS = $(OBJDIR)/$(MODULENAME).mm.o | ||||
OBJS_files = $(OBJDIR)/$(MODULENAME).mm.files.o | |||||
OBJS_posix32 = $(OBJDIR)/$(MODULENAME).mm.posix32.o | OBJS_posix32 = $(OBJDIR)/$(MODULENAME).mm.posix32.o | ||||
OBJS_posix64 = $(OBJDIR)/$(MODULENAME).mm.posix64.o | OBJS_posix64 = $(OBJDIR)/$(MODULENAME).mm.posix64.o | ||||
else | else | ||||
OBJS = $(OBJDIR)/$(MODULENAME).cpp.o | OBJS = $(OBJDIR)/$(MODULENAME).cpp.o | ||||
OBJS_files = $(OBJDIR)/$(MODULENAME).cpp.files.o | |||||
OBJS_posix32 = $(OBJDIR)/$(MODULENAME).cpp.posix32.o | OBJS_posix32 = $(OBJDIR)/$(MODULENAME).cpp.posix32.o | ||||
OBJS_posix64 = $(OBJDIR)/$(MODULENAME).cpp.posix64.o | OBJS_posix64 = $(OBJDIR)/$(MODULENAME).cpp.posix64.o | ||||
endif | endif | ||||
@@ -28,7 +30,7 @@ OBJS_win64 = $(OBJDIR)/$(MODULENAME).cpp.win64.o | |||||
# ---------------------------------------------------------------------------------------------------------------------------- | # ---------------------------------------------------------------------------------------------------------------------------- | ||||
all: $(MODULEDIR)/$(MODULENAME).a | |||||
all: $(MODULEDIR)/$(MODULENAME).a $(MODULEDIR)/$(MODULENAME).files.a | |||||
posix32: $(MODULEDIR)/$(MODULENAME).posix32.a | posix32: $(MODULEDIR)/$(MODULENAME).posix32.a | ||||
posix64: $(MODULEDIR)/$(MODULENAME).posix64.a | posix64: $(MODULEDIR)/$(MODULENAME).posix64.a | ||||
win32: $(MODULEDIR)/$(MODULENAME).win32.a | win32: $(MODULEDIR)/$(MODULENAME).win32.a | ||||
@@ -42,9 +44,6 @@ clean: | |||||
debug: | debug: | ||||
$(MAKE) DEBUG=true | $(MAKE) DEBUG=true | ||||
test: main.cpp $(MODULEDIR)/$(MODULENAME).a | |||||
@$(CXX) $< $(MODULEDIR)/$(MODULENAME).a $(BUILD_CXX_FLAGS) $(LINK_FLAGS) -lpthread -o $@ | |||||
# ---------------------------------------------------------------------------------------------------------------------------- | # ---------------------------------------------------------------------------------------------------------------------------- | ||||
$(MODULEDIR)/$(MODULENAME).a: $(OBJS) | $(MODULEDIR)/$(MODULENAME).a: $(OBJS) | ||||
@@ -53,6 +52,12 @@ $(MODULEDIR)/$(MODULENAME).a: $(OBJS) | |||||
@rm -f $@ | @rm -f $@ | ||||
@$(AR) crs $@ $^ | @$(AR) crs $@ $^ | ||||
$(MODULEDIR)/$(MODULENAME).files.a: $(OBJS_files) | |||||
-@mkdir -p $(MODULEDIR) | |||||
@echo "Creating $(MODULENAME).files.a" | |||||
@rm -f $@ | |||||
@$(AR) crs $@ $^ | |||||
$(MODULEDIR)/$(MODULENAME).posix32.a: $(OBJS_posix32) | $(MODULEDIR)/$(MODULENAME).posix32.a: $(OBJS_posix32) | ||||
-@mkdir -p $(MODULEDIR) | -@mkdir -p $(MODULEDIR) | ||||
@echo "Creating $(MODULENAME).posix32.a" | @echo "Creating $(MODULENAME).posix32.a" | ||||
@@ -84,6 +89,11 @@ $(OBJDIR)/$(MODULENAME).cpp.o: $(MODULENAME).cpp | |||||
@echo "Compiling $<" | @echo "Compiling $<" | ||||
@$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ | @$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ | ||||
$(OBJDIR)/$(MODULENAME).cpp.files.o: $(MODULENAME).files.cpp | |||||
-@mkdir -p $(OBJDIR) | |||||
@echo "Compiling $<" | |||||
@$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ | |||||
$(OBJDIR)/$(MODULENAME).cpp.%32.o: $(MODULENAME).cpp | $(OBJDIR)/$(MODULENAME).cpp.%32.o: $(MODULENAME).cpp | ||||
-@mkdir -p $(OBJDIR) | -@mkdir -p $(OBJDIR) | ||||
@echo "Compiling $< (32bit)" | @echo "Compiling $< (32bit)" | ||||
@@ -101,6 +111,11 @@ $(OBJDIR)/$(MODULENAME).mm.o: $(MODULENAME).cpp | |||||
@echo "Compiling $<" | @echo "Compiling $<" | ||||
@$(CXX) $< $(BUILD_CXX_FLAGS) -ObjC++ -c -o $@ | @$(CXX) $< $(BUILD_CXX_FLAGS) -ObjC++ -c -o $@ | ||||
$(OBJDIR)/$(MODULENAME).mm.files.o: $(MODULENAME).files.cpp | |||||
-@mkdir -p $(OBJDIR) | |||||
@echo "Compiling $<" | |||||
@$(CXX) $< $(BUILD_CXX_FLAGS) -ObjC++ -c -o $@ | |||||
$(OBJDIR)/$(MODULENAME).mm.%32.o: $(MODULENAME).cpp | $(OBJDIR)/$(MODULENAME).mm.%32.o: $(MODULENAME).cpp | ||||
-@mkdir -p $(OBJDIR) | -@mkdir -p $(OBJDIR) | ||||
@echo "Compiling $< (32bit)" | @echo "Compiling $< (32bit)" | ||||
@@ -0,0 +1,70 @@ | |||||
/* | |||||
* Cross-platform C++ library for Carla, based on Juce v4 | |||||
* Copyright (C) 2015 ROLI Ltd. | |||||
* Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU General Public License as | |||||
* published by the Free Software Foundation; either version 2 of | |||||
* the License, or any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General Public License for more details. | |||||
* | |||||
* For a full copy of the GNU General Public License see the doc/GPL.txt file. | |||||
*/ | |||||
#include "maths/MathsFunctions.h" | |||||
#include "misc/Result.h" | |||||
//============================================================================== | |||||
namespace water | |||||
{ | |||||
#ifdef CARLA_OS_WIN | |||||
static inline | |||||
Result getResultForLastError() | |||||
{ | |||||
TCHAR messageBuffer [256] = { 0 }; | |||||
FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, | |||||
nullptr, GetLastError(), MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT), | |||||
messageBuffer, (DWORD) numElementsInArray (messageBuffer) - 1, nullptr); | |||||
return Result::fail (String (messageBuffer)); | |||||
} | |||||
static inline | |||||
int64 water_fileSetPosition (void* handle, int64 pos) | |||||
{ | |||||
LARGE_INTEGER li; | |||||
li.QuadPart = pos; | |||||
li.LowPart = SetFilePointer ((HANDLE) handle, (LONG) li.LowPart, &li.HighPart, FILE_BEGIN); // (returns -1 if it fails) | |||||
return li.QuadPart; | |||||
} | |||||
#else | |||||
static inline | |||||
Result getResultForErrno() | |||||
{ | |||||
return Result::fail (String (strerror (errno))); | |||||
} | |||||
static inline | |||||
int getFD (void* handle) noexcept { return (int) (pointer_sized_int) handle; } | |||||
static inline | |||||
void* fdToVoidPointer (int fd) noexcept { return (void*) (pointer_sized_int) fd; } | |||||
static inline | |||||
int64 water_fileSetPosition (void* handle, int64 pos) | |||||
{ | |||||
if (handle != nullptr && lseek (getFD (handle), pos, SEEK_SET) == pos) | |||||
return pos; | |||||
return -1; | |||||
} | |||||
#endif | |||||
} |
@@ -16,33 +16,13 @@ | |||||
* For a full copy of the GNU General Public License see the doc/GPL.txt file. | * For a full copy of the GNU General Public License see the doc/GPL.txt file. | ||||
*/ | */ | ||||
#include "maths/MathsFunctions.h" | |||||
#include "misc/Result.h" | |||||
#include "common.hpp" | |||||
//============================================================================== | //============================================================================== | ||||
namespace water | namespace water | ||||
{ | { | ||||
#ifdef CARLA_OS_WIN | #ifdef CARLA_OS_WIN | ||||
static Result getResultForLastError() | |||||
{ | |||||
TCHAR messageBuffer [256] = { 0 }; | |||||
FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, | |||||
nullptr, GetLastError(), MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT), | |||||
messageBuffer, (DWORD) numElementsInArray (messageBuffer) - 1, nullptr); | |||||
return Result::fail (String (messageBuffer)); | |||||
} | |||||
static int64 water_fileSetPosition (void* handle, int64 pos) | |||||
{ | |||||
LARGE_INTEGER li; | |||||
li.QuadPart = pos; | |||||
li.LowPart = SetFilePointer ((HANDLE) handle, (LONG) li.LowPart, &li.HighPart, FILE_BEGIN); // (returns -1 if it fails) | |||||
return li.QuadPart; | |||||
} | |||||
static HINSTANCE currentModuleHandle = nullptr; | static HINSTANCE currentModuleHandle = nullptr; | ||||
HINSTANCE water_getCurrentModuleInstanceHandle() noexcept | HINSTANCE water_getCurrentModuleInstanceHandle() noexcept | ||||
@@ -52,22 +32,6 @@ HINSTANCE water_getCurrentModuleInstanceHandle() noexcept | |||||
return currentModuleHandle; | return currentModuleHandle; | ||||
} | } | ||||
#else | |||||
static Result getResultForErrno() | |||||
{ | |||||
return Result::fail (String (strerror (errno))); | |||||
} | |||||
static int getFD (void* handle) noexcept { return (int) (pointer_sized_int) handle; } | |||||
static void* fdToVoidPointer (int fd) noexcept { return (void*) (pointer_sized_int) fd; } | |||||
static int64 water_fileSetPosition (void* handle, int64 pos) | |||||
{ | |||||
if (handle != nullptr && lseek (getFD (handle), pos, SEEK_SET) == pos) | |||||
return pos; | |||||
return -1; | |||||
} | |||||
#endif | #endif | ||||
} | } | ||||
@@ -0,0 +1,43 @@ | |||||
/* | |||||
* Cross-platform C++ library for Carla, based on Juce v4 | |||||
* Copyright (C) 2015 ROLI Ltd. | |||||
* Copyright (C) 2017 Filipe Coelho <falktx@falktx.com> | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU General Public License as | |||||
* published by the Free Software Foundation; either version 2 of | |||||
* the License, or any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General Public License for more details. | |||||
* | |||||
* For a full copy of the GNU General Public License see the doc/GPL.txt file. | |||||
*/ | |||||
#include "common.hpp" | |||||
//============================================================================== | |||||
namespace water | |||||
{ | |||||
#ifdef CARLA_OS_WIN | |||||
static HINSTANCE currentModuleHandle = nullptr; | |||||
HINSTANCE water_getCurrentModuleInstanceHandle() noexcept | |||||
{ | |||||
if (currentModuleHandle == nullptr) | |||||
currentModuleHandle = GetModuleHandleA (nullptr); | |||||
return currentModuleHandle; | |||||
} | |||||
#endif | |||||
} | |||||
#include "files/File.cpp" | |||||
#include "misc/Result.cpp" | |||||
#include "text/CharacterFunctions.cpp" | |||||
#include "text/StringArray.cpp" | |||||
#include "text/String.cpp" |