diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index c098432b0..3bfbb45c8 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -243,6 +243,8 @@ include_directories(AFTER
${CMAKE_CURRENT_SOURCE_DIR}/IOBluetooth/include
${CMAKE_CURRENT_SOURCE_DIR}/CoreMIDI/include
${CMAKE_CURRENT_SOURCE_DIR}/libsandbox/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/OpenCL/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/OpenDirectory/include
)
add_subdirectory(external/libkqueue)
@@ -435,6 +437,8 @@ add_subdirectory(CoreWLAN)
add_subdirectory(IOBluetooth)
add_subdirectory(CoreMIDI)
add_subdirectory(libsandbox)
+add_subdirectory(OpenCL)
+add_subdirectory(OpenDirectory)
# Just a stub
add_subdirectory(WebKit)
diff --git a/src/CoreImage/src/CIFilter.m b/src/CoreImage/src/CIFilter.m
index 852c59f9e..cb29e7af5 100644
--- a/src/CoreImage/src/CIFilter.m
+++ b/src/CoreImage/src/CIFilter.m
@@ -30,6 +30,7 @@ NSString * const kCIInputExtentKey = @"inputExtent";
NSString * const kCIInputImageKey = @"inputImage";
NSString * const kCIInputSaturationKey = @"inputSaturation";
NSString * const kCIOutputImageKey = @"outputImage";
+NSString * const kCIApplyOptionDefinition = @"definition";
@implementation CIFilter
diff --git a/src/CoreServices/constants.m b/src/CoreServices/constants.m
index 2b6940af8..7c6a1b194 100644
--- a/src/CoreServices/constants.m
+++ b/src/CoreServices/constants.m
@@ -29,6 +29,9 @@ const CFStringRef kUTTypeSwiftSource = CFSTR("public.swift-source");
const CFStringRef kUTTypeText = CFSTR("public.text");
const CFStringRef kUTTypeFramework = CFSTR("com.apple.framework");
const CFStringRef kUTTypeImage = CFSTR("public.image");
+const CFStringRef kUTTypeUTF8PlainText = CFSTR("public.utf8-plain-text");
+const CFStringRef kUTTypeApplication = CFSTR("com.apple.application");
+const CFStringRef kUTTypeBundle = CFSTR("com.apple.bundle");
const CFStringRef _kLSASNKey = CFSTR("LSASN");
const CFStringRef _kLSApplicationTypeKey = CFSTR("ApplicationType");
diff --git a/src/ImageIO/src/CGImageProperties.m b/src/ImageIO/src/CGImageProperties.m
index de9034463..e0fb83d40 100644
--- a/src/ImageIO/src/CGImageProperties.m
+++ b/src/ImageIO/src/CGImageProperties.m
@@ -23,3 +23,7 @@ const CFStringRef kCGImagePropertyDPIWidth = CFSTR("DPIWidth");
const CFStringRef kCGImagePropertyPixelWidth = CFSTR("PixelWidth");
const CFStringRef kCGImagePropertyPNGDictionary = CFSTR("{PNG}");
const CFStringRef kCGImagePropertyPNGGamma = CFSTR("Gamma");
+const CFStringRef kCGImagePropertyGIFDelayTime = CFSTR("DelayTime");
+const CFStringRef kCGImagePropertyGIFDictionary = CFSTR("{GIF}");
+const CFStringRef kCGImagePropertyGIFLoopCount = CFSTR("LoopCount");
+const CFStringRef kCGImagePropertyGIFUnclampedDelayTime = CFSTR("UnclampedDelayTime");
diff --git a/src/OpenCL/CMakeLists.txt b/src/OpenCL/CMakeLists.txt
new file mode 100644
index 000000000..0fede6d77
--- /dev/null
+++ b/src/OpenCL/CMakeLists.txt
@@ -0,0 +1,18 @@
+project(OpenCL)
+
+set(DYLIB_COMPAT_VERSION "1.0.0")
+set(DYLIB_CURRENT_VERSION "1.0.0")
+
+add_framework(OpenCL
+ FAT
+ CURRENT_VERSION
+ VERSION "A"
+
+ SOURCES
+ src/OpenCL.m
+
+ DEPENDENCIES
+ system
+ objc
+ Foundation
+)
diff --git a/src/OpenCL/include/OpenCL/OpenCL.h b/src/OpenCL/include/OpenCL/OpenCL.h
new file mode 100644
index 000000000..75231e02d
--- /dev/null
+++ b/src/OpenCL/include/OpenCL/OpenCL.h
@@ -0,0 +1,188 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+
+#ifndef _OpenCL_H_
+#define _OpenCL_H_
+
+#import
+
+
+void* clBuildProgram(void);
+void* clCompileProgram(void);
+void* clCreateBuffer(void);
+void* clCreateCommandQueue(void);
+void* clCreateCommandQueueWithPropertiesAPPLE(void);
+void* clCreateContext(void);
+void* clCreateContextAndCommandQueueAPPLE(void);
+void* clCreateContextFromType(void);
+void* clCreateDAGAPPLE(void);
+void* clCreateEventFromGLsyncKHR(void);
+void* clCreateFromGLBuffer(void);
+void* clCreateFromGLRenderbuffer(void);
+void* clCreateFromGLTexture(void);
+void* clCreateFromGLTexture2D(void);
+void* clCreateFromGLTexture3D(void);
+void* clCreateImage(void);
+void* clCreateImage2D(void);
+void* clCreateImage3D(void);
+void* clCreateImageFromIOSurface2DAPPLE(void);
+void* clCreateImageFromIOSurfaceWithPropertiesAPPLE(void);
+void* clCreateKernel(void);
+void* clCreateKernelFromDAGAPPLE(void);
+void* clCreateKernelsInProgram(void);
+void* clCreateProgramAndKernelsWithSourceAPPLE(void);
+void* clCreateProgramPortableBinaryAPPLE(void);
+void* clCreateProgramWithBinary(void);
+void* clCreateProgramWithBuiltInKernels(void);
+void* clCreateProgramWithSource(void);
+void* clCreateSampler(void);
+void* clCreateSubBuffer(void);
+void* clCreateSubDevices(void);
+void* clCreateUserEvent(void);
+void* clEnqueueAcquireGLObjects(void);
+void* clEnqueueBarrier(void);
+void* clEnqueueBarrierWithWaitList(void);
+void* clEnqueueCopyBuffer(void);
+void* clEnqueueCopyBufferRect(void);
+void* clEnqueueCopyBufferToImage(void);
+void* clEnqueueCopyImage(void);
+void* clEnqueueCopyImageToBuffer(void);
+void* clEnqueueFillBuffer(void);
+void* clEnqueueFillImage(void);
+void* clEnqueueMapBuffer(void);
+void* clEnqueueMapImage(void);
+void* clEnqueueMarker(void);
+void* clEnqueueMarkerWithWaitList(void);
+void* clEnqueueMigrateMemObjects(void);
+void* clEnqueueNDRangeKernel(void);
+void* clEnqueueNativeKernel(void);
+void* clEnqueueReadBuffer(void);
+void* clEnqueueReadBufferRect(void);
+void* clEnqueueReadImage(void);
+void* clEnqueueReleaseGLObjects(void);
+void* clEnqueueTask(void);
+void* clEnqueueUnmapMemObject(void);
+void* clEnqueueWaitForEvents(void);
+void* clEnqueueWriteBuffer(void);
+void* clEnqueueWriteBufferRect(void);
+void* clEnqueueWriteImage(void);
+void* clFinish(void);
+void* clFlush(void);
+void* clGetCommandQueueInfo(void);
+void* clGetContextInfo(void);
+void* clGetDAGNodeAPPLE(void);
+void* clGetDeviceIDs(void);
+void* clGetDeviceInfo(void);
+void* clGetEventInfo(void);
+void* clGetEventProfilingInfo(void);
+void* clGetExtensionFunctionAddress(void);
+void* clGetExtensionFunctionAddressForPlatform(void);
+void* clGetGLContextInfoAPPLE(void);
+void* clGetGLObjectInfo(void);
+void* clGetGLTextureInfo(void);
+void* clGetImageInfo(void);
+void* clGetKernelArgInfo(void);
+void* clGetKernelInfo(void);
+void* clGetKernelWorkGroupInfo(void);
+void* clGetMemObjectInfo(void);
+void* clGetMemoryAnnotationListAPPLE(void);
+void* clGetPlatformIDs(void);
+void* clGetPlatformInfo(void);
+void* clGetProgramBuildInfo(void);
+void* clGetProgramInfo(void);
+void* clGetSamplerInfo(void);
+void* clGetSupportedImageFormats(void);
+void* clLinkProgram(void);
+void* clLogMessagesToStderrAPPLE(void);
+void* clLogMessagesToStdoutAPPLE(void);
+void* clLogMessagesToSystemLogAPPLE(void);
+void* clReleaseCommandQueue(void);
+void* clReleaseContext(void);
+void* clReleaseDAGAPPLE(void);
+void* clReleaseDevice(void);
+void* clReleaseEvent(void);
+void* clReleaseKernel(void);
+void* clReleaseMemObject(void);
+void* clReleaseProgram(void);
+void* clReleaseSampler(void);
+void* clRetainCommandQueue(void);
+void* clRetainContext(void);
+void* clRetainDevice(void);
+void* clRetainEvent(void);
+void* clRetainKernel(void);
+void* clRetainMemObject(void);
+void* clRetainProgram(void);
+void* clRetainSampler(void);
+void* clSetCommandQueueProperty(void);
+void* clSetEventCallback(void);
+void* clSetKernelArg(void);
+void* clSetKernelArgByNameAPPLE(void);
+void* clSetKernelArgsListAPPLE(void);
+void* clSetKernelArgsVaListAPPLE(void);
+void* clSetMemObjectDestructorAPPLE(void);
+void* clSetMemObjectDestructorCallback(void);
+void* clSetUserEventStatus(void);
+void* clUnloadCompiler(void);
+void* clUnloadPlatformCompiler(void);
+void* clWaitForEvents(void);
+void* gclBuildProgramAPPLE(void);
+void* gclBuildProgramBinaryAPPLE(void);
+void* gclCreateArgsAPPLE(void);
+void* gclDeleteArgsAPPLE(void);
+void* gclExecKernelAPPLE(void);
+void* gclRegisterBlockKernelMap(void);
+void* gclReleaseSampler(void);
+void* gclSetKernelArgAPPLE(void);
+void* gclSetKernelArgMemAPPLE(void);
+void* gclSetKernelArgSamplerAPPLE(void);
+void* gcl_copy_image(void);
+void* gcl_copy_image_to_ptr(void);
+void* gcl_copy_ptr_to_image(void);
+void* gcl_create_buffer_from_ptr(void);
+void* gcl_create_dispatch_queue(void);
+void* gcl_create_image(void);
+void* gcl_create_kernel_from_block(void);
+void* gcl_free(void);
+void* gcl_get_context(void);
+void* gcl_get_device_id_with_dispatch_queue(void);
+void* gcl_get_kernel_block_workgroup_info(void);
+void* gcl_get_supported_image_formats(void);
+void* gcl_gl_create_image_from_renderbuffer(void);
+void* gcl_gl_create_image_from_texture(void);
+void* gcl_gl_create_ptr_from_buffer(void);
+void* gcl_gl_set_sharegroup(void);
+void* gcl_log_cl_error(void);
+void* gcl_log_cl_fatal(void);
+void* gcl_log_error(void);
+void* gcl_log_fatal(void);
+void* gcl_log_warning(void);
+void* gcl_malloc(void);
+void* gcl_map_image(void);
+void* gcl_map_ptr(void);
+void* gcl_memcpy(void);
+void* gcl_memcpy_rect(void);
+void* gcl_release_image(void);
+void* gcl_retain_image(void);
+void* gcl_set_finalizer(void);
+void* gcl_start_timer(void);
+void* gcl_stop_timer(void);
+void* gcl_unmap(void);
+
+#endif
diff --git a/src/OpenCL/src/OpenCL.m b/src/OpenCL/src/OpenCL.m
new file mode 100644
index 000000000..9a2501048
--- /dev/null
+++ b/src/OpenCL/src/OpenCL.m
@@ -0,0 +1,990 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+
+#include
+#include
+#include
+
+static int verbose = 0;
+
+__attribute__((constructor))
+static void initme(void) {
+ verbose = getenv("STUB_VERBOSE") != NULL;
+}
+
+void* clBuildProgram(void)
+{
+ if (verbose) puts("STUB: clBuildProgram called");
+ return NULL;
+}
+
+void* clCompileProgram(void)
+{
+ if (verbose) puts("STUB: clCompileProgram called");
+ return NULL;
+}
+
+void* clCreateBuffer(void)
+{
+ if (verbose) puts("STUB: clCreateBuffer called");
+ return NULL;
+}
+
+void* clCreateCommandQueue(void)
+{
+ if (verbose) puts("STUB: clCreateCommandQueue called");
+ return NULL;
+}
+
+void* clCreateCommandQueueWithPropertiesAPPLE(void)
+{
+ if (verbose) puts("STUB: clCreateCommandQueueWithPropertiesAPPLE called");
+ return NULL;
+}
+
+void* clCreateContext(void)
+{
+ if (verbose) puts("STUB: clCreateContext called");
+ return NULL;
+}
+
+void* clCreateContextAndCommandQueueAPPLE(void)
+{
+ if (verbose) puts("STUB: clCreateContextAndCommandQueueAPPLE called");
+ return NULL;
+}
+
+void* clCreateContextFromType(void)
+{
+ if (verbose) puts("STUB: clCreateContextFromType called");
+ return NULL;
+}
+
+void* clCreateDAGAPPLE(void)
+{
+ if (verbose) puts("STUB: clCreateDAGAPPLE called");
+ return NULL;
+}
+
+void* clCreateEventFromGLsyncKHR(void)
+{
+ if (verbose) puts("STUB: clCreateEventFromGLsyncKHR called");
+ return NULL;
+}
+
+void* clCreateFromGLBuffer(void)
+{
+ if (verbose) puts("STUB: clCreateFromGLBuffer called");
+ return NULL;
+}
+
+void* clCreateFromGLRenderbuffer(void)
+{
+ if (verbose) puts("STUB: clCreateFromGLRenderbuffer called");
+ return NULL;
+}
+
+void* clCreateFromGLTexture(void)
+{
+ if (verbose) puts("STUB: clCreateFromGLTexture called");
+ return NULL;
+}
+
+void* clCreateFromGLTexture2D(void)
+{
+ if (verbose) puts("STUB: clCreateFromGLTexture2D called");
+ return NULL;
+}
+
+void* clCreateFromGLTexture3D(void)
+{
+ if (verbose) puts("STUB: clCreateFromGLTexture3D called");
+ return NULL;
+}
+
+void* clCreateImage(void)
+{
+ if (verbose) puts("STUB: clCreateImage called");
+ return NULL;
+}
+
+void* clCreateImage2D(void)
+{
+ if (verbose) puts("STUB: clCreateImage2D called");
+ return NULL;
+}
+
+void* clCreateImage3D(void)
+{
+ if (verbose) puts("STUB: clCreateImage3D called");
+ return NULL;
+}
+
+void* clCreateImageFromIOSurface2DAPPLE(void)
+{
+ if (verbose) puts("STUB: clCreateImageFromIOSurface2DAPPLE called");
+ return NULL;
+}
+
+void* clCreateImageFromIOSurfaceWithPropertiesAPPLE(void)
+{
+ if (verbose) puts("STUB: clCreateImageFromIOSurfaceWithPropertiesAPPLE called");
+ return NULL;
+}
+
+void* clCreateKernel(void)
+{
+ if (verbose) puts("STUB: clCreateKernel called");
+ return NULL;
+}
+
+void* clCreateKernelFromDAGAPPLE(void)
+{
+ if (verbose) puts("STUB: clCreateKernelFromDAGAPPLE called");
+ return NULL;
+}
+
+void* clCreateKernelsInProgram(void)
+{
+ if (verbose) puts("STUB: clCreateKernelsInProgram called");
+ return NULL;
+}
+
+void* clCreateProgramAndKernelsWithSourceAPPLE(void)
+{
+ if (verbose) puts("STUB: clCreateProgramAndKernelsWithSourceAPPLE called");
+ return NULL;
+}
+
+void* clCreateProgramPortableBinaryAPPLE(void)
+{
+ if (verbose) puts("STUB: clCreateProgramPortableBinaryAPPLE called");
+ return NULL;
+}
+
+void* clCreateProgramWithBinary(void)
+{
+ if (verbose) puts("STUB: clCreateProgramWithBinary called");
+ return NULL;
+}
+
+void* clCreateProgramWithBuiltInKernels(void)
+{
+ if (verbose) puts("STUB: clCreateProgramWithBuiltInKernels called");
+ return NULL;
+}
+
+void* clCreateProgramWithSource(void)
+{
+ if (verbose) puts("STUB: clCreateProgramWithSource called");
+ return NULL;
+}
+
+void* clCreateSampler(void)
+{
+ if (verbose) puts("STUB: clCreateSampler called");
+ return NULL;
+}
+
+void* clCreateSubBuffer(void)
+{
+ if (verbose) puts("STUB: clCreateSubBuffer called");
+ return NULL;
+}
+
+void* clCreateSubDevices(void)
+{
+ if (verbose) puts("STUB: clCreateSubDevices called");
+ return NULL;
+}
+
+void* clCreateUserEvent(void)
+{
+ if (verbose) puts("STUB: clCreateUserEvent called");
+ return NULL;
+}
+
+void* clEnqueueAcquireGLObjects(void)
+{
+ if (verbose) puts("STUB: clEnqueueAcquireGLObjects called");
+ return NULL;
+}
+
+void* clEnqueueBarrier(void)
+{
+ if (verbose) puts("STUB: clEnqueueBarrier called");
+ return NULL;
+}
+
+void* clEnqueueBarrierWithWaitList(void)
+{
+ if (verbose) puts("STUB: clEnqueueBarrierWithWaitList called");
+ return NULL;
+}
+
+void* clEnqueueCopyBuffer(void)
+{
+ if (verbose) puts("STUB: clEnqueueCopyBuffer called");
+ return NULL;
+}
+
+void* clEnqueueCopyBufferRect(void)
+{
+ if (verbose) puts("STUB: clEnqueueCopyBufferRect called");
+ return NULL;
+}
+
+void* clEnqueueCopyBufferToImage(void)
+{
+ if (verbose) puts("STUB: clEnqueueCopyBufferToImage called");
+ return NULL;
+}
+
+void* clEnqueueCopyImage(void)
+{
+ if (verbose) puts("STUB: clEnqueueCopyImage called");
+ return NULL;
+}
+
+void* clEnqueueCopyImageToBuffer(void)
+{
+ if (verbose) puts("STUB: clEnqueueCopyImageToBuffer called");
+ return NULL;
+}
+
+void* clEnqueueFillBuffer(void)
+{
+ if (verbose) puts("STUB: clEnqueueFillBuffer called");
+ return NULL;
+}
+
+void* clEnqueueFillImage(void)
+{
+ if (verbose) puts("STUB: clEnqueueFillImage called");
+ return NULL;
+}
+
+void* clEnqueueMapBuffer(void)
+{
+ if (verbose) puts("STUB: clEnqueueMapBuffer called");
+ return NULL;
+}
+
+void* clEnqueueMapImage(void)
+{
+ if (verbose) puts("STUB: clEnqueueMapImage called");
+ return NULL;
+}
+
+void* clEnqueueMarker(void)
+{
+ if (verbose) puts("STUB: clEnqueueMarker called");
+ return NULL;
+}
+
+void* clEnqueueMarkerWithWaitList(void)
+{
+ if (verbose) puts("STUB: clEnqueueMarkerWithWaitList called");
+ return NULL;
+}
+
+void* clEnqueueMigrateMemObjects(void)
+{
+ if (verbose) puts("STUB: clEnqueueMigrateMemObjects called");
+ return NULL;
+}
+
+void* clEnqueueNDRangeKernel(void)
+{
+ if (verbose) puts("STUB: clEnqueueNDRangeKernel called");
+ return NULL;
+}
+
+void* clEnqueueNativeKernel(void)
+{
+ if (verbose) puts("STUB: clEnqueueNativeKernel called");
+ return NULL;
+}
+
+void* clEnqueueReadBuffer(void)
+{
+ if (verbose) puts("STUB: clEnqueueReadBuffer called");
+ return NULL;
+}
+
+void* clEnqueueReadBufferRect(void)
+{
+ if (verbose) puts("STUB: clEnqueueReadBufferRect called");
+ return NULL;
+}
+
+void* clEnqueueReadImage(void)
+{
+ if (verbose) puts("STUB: clEnqueueReadImage called");
+ return NULL;
+}
+
+void* clEnqueueReleaseGLObjects(void)
+{
+ if (verbose) puts("STUB: clEnqueueReleaseGLObjects called");
+ return NULL;
+}
+
+void* clEnqueueTask(void)
+{
+ if (verbose) puts("STUB: clEnqueueTask called");
+ return NULL;
+}
+
+void* clEnqueueUnmapMemObject(void)
+{
+ if (verbose) puts("STUB: clEnqueueUnmapMemObject called");
+ return NULL;
+}
+
+void* clEnqueueWaitForEvents(void)
+{
+ if (verbose) puts("STUB: clEnqueueWaitForEvents called");
+ return NULL;
+}
+
+void* clEnqueueWriteBuffer(void)
+{
+ if (verbose) puts("STUB: clEnqueueWriteBuffer called");
+ return NULL;
+}
+
+void* clEnqueueWriteBufferRect(void)
+{
+ if (verbose) puts("STUB: clEnqueueWriteBufferRect called");
+ return NULL;
+}
+
+void* clEnqueueWriteImage(void)
+{
+ if (verbose) puts("STUB: clEnqueueWriteImage called");
+ return NULL;
+}
+
+void* clFinish(void)
+{
+ if (verbose) puts("STUB: clFinish called");
+ return NULL;
+}
+
+void* clFlush(void)
+{
+ if (verbose) puts("STUB: clFlush called");
+ return NULL;
+}
+
+void* clGetCommandQueueInfo(void)
+{
+ if (verbose) puts("STUB: clGetCommandQueueInfo called");
+ return NULL;
+}
+
+void* clGetContextInfo(void)
+{
+ if (verbose) puts("STUB: clGetContextInfo called");
+ return NULL;
+}
+
+void* clGetDAGNodeAPPLE(void)
+{
+ if (verbose) puts("STUB: clGetDAGNodeAPPLE called");
+ return NULL;
+}
+
+void* clGetDeviceIDs(void)
+{
+ if (verbose) puts("STUB: clGetDeviceIDs called");
+ return NULL;
+}
+
+void* clGetDeviceInfo(void)
+{
+ if (verbose) puts("STUB: clGetDeviceInfo called");
+ return NULL;
+}
+
+void* clGetEventInfo(void)
+{
+ if (verbose) puts("STUB: clGetEventInfo called");
+ return NULL;
+}
+
+void* clGetEventProfilingInfo(void)
+{
+ if (verbose) puts("STUB: clGetEventProfilingInfo called");
+ return NULL;
+}
+
+void* clGetExtensionFunctionAddress(void)
+{
+ if (verbose) puts("STUB: clGetExtensionFunctionAddress called");
+ return NULL;
+}
+
+void* clGetExtensionFunctionAddressForPlatform(void)
+{
+ if (verbose) puts("STUB: clGetExtensionFunctionAddressForPlatform called");
+ return NULL;
+}
+
+void* clGetGLContextInfoAPPLE(void)
+{
+ if (verbose) puts("STUB: clGetGLContextInfoAPPLE called");
+ return NULL;
+}
+
+void* clGetGLObjectInfo(void)
+{
+ if (verbose) puts("STUB: clGetGLObjectInfo called");
+ return NULL;
+}
+
+void* clGetGLTextureInfo(void)
+{
+ if (verbose) puts("STUB: clGetGLTextureInfo called");
+ return NULL;
+}
+
+void* clGetImageInfo(void)
+{
+ if (verbose) puts("STUB: clGetImageInfo called");
+ return NULL;
+}
+
+void* clGetKernelArgInfo(void)
+{
+ if (verbose) puts("STUB: clGetKernelArgInfo called");
+ return NULL;
+}
+
+void* clGetKernelInfo(void)
+{
+ if (verbose) puts("STUB: clGetKernelInfo called");
+ return NULL;
+}
+
+void* clGetKernelWorkGroupInfo(void)
+{
+ if (verbose) puts("STUB: clGetKernelWorkGroupInfo called");
+ return NULL;
+}
+
+void* clGetMemObjectInfo(void)
+{
+ if (verbose) puts("STUB: clGetMemObjectInfo called");
+ return NULL;
+}
+
+void* clGetMemoryAnnotationListAPPLE(void)
+{
+ if (verbose) puts("STUB: clGetMemoryAnnotationListAPPLE called");
+ return NULL;
+}
+
+void* clGetPlatformIDs(void)
+{
+ if (verbose) puts("STUB: clGetPlatformIDs called");
+ return NULL;
+}
+
+void* clGetPlatformInfo(void)
+{
+ if (verbose) puts("STUB: clGetPlatformInfo called");
+ return NULL;
+}
+
+void* clGetProgramBuildInfo(void)
+{
+ if (verbose) puts("STUB: clGetProgramBuildInfo called");
+ return NULL;
+}
+
+void* clGetProgramInfo(void)
+{
+ if (verbose) puts("STUB: clGetProgramInfo called");
+ return NULL;
+}
+
+void* clGetSamplerInfo(void)
+{
+ if (verbose) puts("STUB: clGetSamplerInfo called");
+ return NULL;
+}
+
+void* clGetSupportedImageFormats(void)
+{
+ if (verbose) puts("STUB: clGetSupportedImageFormats called");
+ return NULL;
+}
+
+void* clLinkProgram(void)
+{
+ if (verbose) puts("STUB: clLinkProgram called");
+ return NULL;
+}
+
+void* clLogMessagesToStderrAPPLE(void)
+{
+ if (verbose) puts("STUB: clLogMessagesToStderrAPPLE called");
+ return NULL;
+}
+
+void* clLogMessagesToStdoutAPPLE(void)
+{
+ if (verbose) puts("STUB: clLogMessagesToStdoutAPPLE called");
+ return NULL;
+}
+
+void* clLogMessagesToSystemLogAPPLE(void)
+{
+ if (verbose) puts("STUB: clLogMessagesToSystemLogAPPLE called");
+ return NULL;
+}
+
+void* clReleaseCommandQueue(void)
+{
+ if (verbose) puts("STUB: clReleaseCommandQueue called");
+ return NULL;
+}
+
+void* clReleaseContext(void)
+{
+ if (verbose) puts("STUB: clReleaseContext called");
+ return NULL;
+}
+
+void* clReleaseDAGAPPLE(void)
+{
+ if (verbose) puts("STUB: clReleaseDAGAPPLE called");
+ return NULL;
+}
+
+void* clReleaseDevice(void)
+{
+ if (verbose) puts("STUB: clReleaseDevice called");
+ return NULL;
+}
+
+void* clReleaseEvent(void)
+{
+ if (verbose) puts("STUB: clReleaseEvent called");
+ return NULL;
+}
+
+void* clReleaseKernel(void)
+{
+ if (verbose) puts("STUB: clReleaseKernel called");
+ return NULL;
+}
+
+void* clReleaseMemObject(void)
+{
+ if (verbose) puts("STUB: clReleaseMemObject called");
+ return NULL;
+}
+
+void* clReleaseProgram(void)
+{
+ if (verbose) puts("STUB: clReleaseProgram called");
+ return NULL;
+}
+
+void* clReleaseSampler(void)
+{
+ if (verbose) puts("STUB: clReleaseSampler called");
+ return NULL;
+}
+
+void* clRetainCommandQueue(void)
+{
+ if (verbose) puts("STUB: clRetainCommandQueue called");
+ return NULL;
+}
+
+void* clRetainContext(void)
+{
+ if (verbose) puts("STUB: clRetainContext called");
+ return NULL;
+}
+
+void* clRetainDevice(void)
+{
+ if (verbose) puts("STUB: clRetainDevice called");
+ return NULL;
+}
+
+void* clRetainEvent(void)
+{
+ if (verbose) puts("STUB: clRetainEvent called");
+ return NULL;
+}
+
+void* clRetainKernel(void)
+{
+ if (verbose) puts("STUB: clRetainKernel called");
+ return NULL;
+}
+
+void* clRetainMemObject(void)
+{
+ if (verbose) puts("STUB: clRetainMemObject called");
+ return NULL;
+}
+
+void* clRetainProgram(void)
+{
+ if (verbose) puts("STUB: clRetainProgram called");
+ return NULL;
+}
+
+void* clRetainSampler(void)
+{
+ if (verbose) puts("STUB: clRetainSampler called");
+ return NULL;
+}
+
+void* clSetCommandQueueProperty(void)
+{
+ if (verbose) puts("STUB: clSetCommandQueueProperty called");
+ return NULL;
+}
+
+void* clSetEventCallback(void)
+{
+ if (verbose) puts("STUB: clSetEventCallback called");
+ return NULL;
+}
+
+void* clSetKernelArg(void)
+{
+ if (verbose) puts("STUB: clSetKernelArg called");
+ return NULL;
+}
+
+void* clSetKernelArgByNameAPPLE(void)
+{
+ if (verbose) puts("STUB: clSetKernelArgByNameAPPLE called");
+ return NULL;
+}
+
+void* clSetKernelArgsListAPPLE(void)
+{
+ if (verbose) puts("STUB: clSetKernelArgsListAPPLE called");
+ return NULL;
+}
+
+void* clSetKernelArgsVaListAPPLE(void)
+{
+ if (verbose) puts("STUB: clSetKernelArgsVaListAPPLE called");
+ return NULL;
+}
+
+void* clSetMemObjectDestructorAPPLE(void)
+{
+ if (verbose) puts("STUB: clSetMemObjectDestructorAPPLE called");
+ return NULL;
+}
+
+void* clSetMemObjectDestructorCallback(void)
+{
+ if (verbose) puts("STUB: clSetMemObjectDestructorCallback called");
+ return NULL;
+}
+
+void* clSetUserEventStatus(void)
+{
+ if (verbose) puts("STUB: clSetUserEventStatus called");
+ return NULL;
+}
+
+void* clUnloadCompiler(void)
+{
+ if (verbose) puts("STUB: clUnloadCompiler called");
+ return NULL;
+}
+
+void* clUnloadPlatformCompiler(void)
+{
+ if (verbose) puts("STUB: clUnloadPlatformCompiler called");
+ return NULL;
+}
+
+void* clWaitForEvents(void)
+{
+ if (verbose) puts("STUB: clWaitForEvents called");
+ return NULL;
+}
+
+void* gclBuildProgramAPPLE(void)
+{
+ if (verbose) puts("STUB: gclBuildProgramAPPLE called");
+ return NULL;
+}
+
+void* gclBuildProgramBinaryAPPLE(void)
+{
+ if (verbose) puts("STUB: gclBuildProgramBinaryAPPLE called");
+ return NULL;
+}
+
+void* gclCreateArgsAPPLE(void)
+{
+ if (verbose) puts("STUB: gclCreateArgsAPPLE called");
+ return NULL;
+}
+
+void* gclDeleteArgsAPPLE(void)
+{
+ if (verbose) puts("STUB: gclDeleteArgsAPPLE called");
+ return NULL;
+}
+
+void* gclExecKernelAPPLE(void)
+{
+ if (verbose) puts("STUB: gclExecKernelAPPLE called");
+ return NULL;
+}
+
+void* gclRegisterBlockKernelMap(void)
+{
+ if (verbose) puts("STUB: gclRegisterBlockKernelMap called");
+ return NULL;
+}
+
+void* gclReleaseSampler(void)
+{
+ if (verbose) puts("STUB: gclReleaseSampler called");
+ return NULL;
+}
+
+void* gclSetKernelArgAPPLE(void)
+{
+ if (verbose) puts("STUB: gclSetKernelArgAPPLE called");
+ return NULL;
+}
+
+void* gclSetKernelArgMemAPPLE(void)
+{
+ if (verbose) puts("STUB: gclSetKernelArgMemAPPLE called");
+ return NULL;
+}
+
+void* gclSetKernelArgSamplerAPPLE(void)
+{
+ if (verbose) puts("STUB: gclSetKernelArgSamplerAPPLE called");
+ return NULL;
+}
+
+void* gcl_copy_image(void)
+{
+ if (verbose) puts("STUB: gcl_copy_image called");
+ return NULL;
+}
+
+void* gcl_copy_image_to_ptr(void)
+{
+ if (verbose) puts("STUB: gcl_copy_image_to_ptr called");
+ return NULL;
+}
+
+void* gcl_copy_ptr_to_image(void)
+{
+ if (verbose) puts("STUB: gcl_copy_ptr_to_image called");
+ return NULL;
+}
+
+void* gcl_create_buffer_from_ptr(void)
+{
+ if (verbose) puts("STUB: gcl_create_buffer_from_ptr called");
+ return NULL;
+}
+
+void* gcl_create_dispatch_queue(void)
+{
+ if (verbose) puts("STUB: gcl_create_dispatch_queue called");
+ return NULL;
+}
+
+void* gcl_create_image(void)
+{
+ if (verbose) puts("STUB: gcl_create_image called");
+ return NULL;
+}
+
+void* gcl_create_kernel_from_block(void)
+{
+ if (verbose) puts("STUB: gcl_create_kernel_from_block called");
+ return NULL;
+}
+
+void* gcl_free(void)
+{
+ if (verbose) puts("STUB: gcl_free called");
+ return NULL;
+}
+
+void* gcl_get_context(void)
+{
+ if (verbose) puts("STUB: gcl_get_context called");
+ return NULL;
+}
+
+void* gcl_get_device_id_with_dispatch_queue(void)
+{
+ if (verbose) puts("STUB: gcl_get_device_id_with_dispatch_queue called");
+ return NULL;
+}
+
+void* gcl_get_kernel_block_workgroup_info(void)
+{
+ if (verbose) puts("STUB: gcl_get_kernel_block_workgroup_info called");
+ return NULL;
+}
+
+void* gcl_get_supported_image_formats(void)
+{
+ if (verbose) puts("STUB: gcl_get_supported_image_formats called");
+ return NULL;
+}
+
+void* gcl_gl_create_image_from_renderbuffer(void)
+{
+ if (verbose) puts("STUB: gcl_gl_create_image_from_renderbuffer called");
+ return NULL;
+}
+
+void* gcl_gl_create_image_from_texture(void)
+{
+ if (verbose) puts("STUB: gcl_gl_create_image_from_texture called");
+ return NULL;
+}
+
+void* gcl_gl_create_ptr_from_buffer(void)
+{
+ if (verbose) puts("STUB: gcl_gl_create_ptr_from_buffer called");
+ return NULL;
+}
+
+void* gcl_gl_set_sharegroup(void)
+{
+ if (verbose) puts("STUB: gcl_gl_set_sharegroup called");
+ return NULL;
+}
+
+void* gcl_log_cl_error(void)
+{
+ if (verbose) puts("STUB: gcl_log_cl_error called");
+ return NULL;
+}
+
+void* gcl_log_cl_fatal(void)
+{
+ if (verbose) puts("STUB: gcl_log_cl_fatal called");
+ return NULL;
+}
+
+void* gcl_log_error(void)
+{
+ if (verbose) puts("STUB: gcl_log_error called");
+ return NULL;
+}
+
+void* gcl_log_fatal(void)
+{
+ if (verbose) puts("STUB: gcl_log_fatal called");
+ return NULL;
+}
+
+void* gcl_log_warning(void)
+{
+ if (verbose) puts("STUB: gcl_log_warning called");
+ return NULL;
+}
+
+void* gcl_malloc(void)
+{
+ if (verbose) puts("STUB: gcl_malloc called");
+ return NULL;
+}
+
+void* gcl_map_image(void)
+{
+ if (verbose) puts("STUB: gcl_map_image called");
+ return NULL;
+}
+
+void* gcl_map_ptr(void)
+{
+ if (verbose) puts("STUB: gcl_map_ptr called");
+ return NULL;
+}
+
+void* gcl_memcpy(void)
+{
+ if (verbose) puts("STUB: gcl_memcpy called");
+ return NULL;
+}
+
+void* gcl_memcpy_rect(void)
+{
+ if (verbose) puts("STUB: gcl_memcpy_rect called");
+ return NULL;
+}
+
+void* gcl_release_image(void)
+{
+ if (verbose) puts("STUB: gcl_release_image called");
+ return NULL;
+}
+
+void* gcl_retain_image(void)
+{
+ if (verbose) puts("STUB: gcl_retain_image called");
+ return NULL;
+}
+
+void* gcl_set_finalizer(void)
+{
+ if (verbose) puts("STUB: gcl_set_finalizer called");
+ return NULL;
+}
+
+void* gcl_start_timer(void)
+{
+ if (verbose) puts("STUB: gcl_start_timer called");
+ return NULL;
+}
+
+void* gcl_stop_timer(void)
+{
+ if (verbose) puts("STUB: gcl_stop_timer called");
+ return NULL;
+}
+
+void* gcl_unmap(void)
+{
+ if (verbose) puts("STUB: gcl_unmap called");
+ return NULL;
+}
diff --git a/src/OpenDirectory/CMakeLists.txt b/src/OpenDirectory/CMakeLists.txt
new file mode 100644
index 000000000..43880f6ca
--- /dev/null
+++ b/src/OpenDirectory/CMakeLists.txt
@@ -0,0 +1,33 @@
+project(OpenDirectory)
+
+set(DYLIB_COMPAT_VERSION "1.0.0")
+set(DYLIB_CURRENT_VERSION "1.0.0")
+
+add_framework(OpenDirectory
+ FAT
+ CURRENT_VERSION
+ VERSION "A"
+
+ SOURCES
+ src/OpenDirectory.m
+ src/NSODSession.m
+ src/ODSession.m
+ src/NSODNode.m
+ src/ODNode.m
+ src/NSODRecord.m
+ src/ODRecord.m
+ src/NSODQuery.m
+ src/ODQuery.m
+ src/NSODContext.m
+ src/ODContext.m
+ src/ODConfiguration.m
+ src/ODModuleEntry.m
+ src/ODMappings.m
+ src/ODAttributeMap.m
+ src/ODRecordMap.m
+
+ DEPENDENCIES
+ system
+ objc
+ Foundation
+)
diff --git a/src/OpenDirectory/include/OpenDirectory/NSODContext.h b/src/OpenDirectory/include/OpenDirectory/NSODContext.h
new file mode 100644
index 000000000..5f1e0a47e
--- /dev/null
+++ b/src/OpenDirectory/include/OpenDirectory/NSODContext.h
@@ -0,0 +1,24 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#include
+
+@interface NSODContext : NSObject
+
+@end
diff --git a/src/OpenDirectory/include/OpenDirectory/NSODNode.h b/src/OpenDirectory/include/OpenDirectory/NSODNode.h
new file mode 100644
index 000000000..426f4d4a6
--- /dev/null
+++ b/src/OpenDirectory/include/OpenDirectory/NSODNode.h
@@ -0,0 +1,24 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#include
+
+@interface NSODNode : NSObject
+
+@end
diff --git a/src/OpenDirectory/include/OpenDirectory/NSODQuery.h b/src/OpenDirectory/include/OpenDirectory/NSODQuery.h
new file mode 100644
index 000000000..7e76ef028
--- /dev/null
+++ b/src/OpenDirectory/include/OpenDirectory/NSODQuery.h
@@ -0,0 +1,24 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#include
+
+@interface NSODQuery : NSObject
+
+@end
diff --git a/src/OpenDirectory/include/OpenDirectory/NSODRecord.h b/src/OpenDirectory/include/OpenDirectory/NSODRecord.h
new file mode 100644
index 000000000..349fe0ab3
--- /dev/null
+++ b/src/OpenDirectory/include/OpenDirectory/NSODRecord.h
@@ -0,0 +1,24 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#include
+
+@interface NSODRecord : NSObject
+
+@end
diff --git a/src/OpenDirectory/include/OpenDirectory/NSODSession.h b/src/OpenDirectory/include/OpenDirectory/NSODSession.h
new file mode 100644
index 000000000..ee9243fb8
--- /dev/null
+++ b/src/OpenDirectory/include/OpenDirectory/NSODSession.h
@@ -0,0 +1,24 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#include
+
+@interface NSODSession : NSObject
+
+@end
diff --git a/src/OpenDirectory/include/OpenDirectory/ODAttributeMap.h b/src/OpenDirectory/include/OpenDirectory/ODAttributeMap.h
new file mode 100644
index 000000000..6d6ae71c4
--- /dev/null
+++ b/src/OpenDirectory/include/OpenDirectory/ODAttributeMap.h
@@ -0,0 +1,24 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#include
+
+@interface ODAttributeMap : NSObject
+
+@end
diff --git a/src/OpenDirectory/include/OpenDirectory/ODConfiguration.h b/src/OpenDirectory/include/OpenDirectory/ODConfiguration.h
new file mode 100644
index 000000000..53acb43d4
--- /dev/null
+++ b/src/OpenDirectory/include/OpenDirectory/ODConfiguration.h
@@ -0,0 +1,24 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#include
+
+@interface ODConfiguration : NSObject
+
+@end
diff --git a/src/OpenDirectory/include/OpenDirectory/ODContext.h b/src/OpenDirectory/include/OpenDirectory/ODContext.h
new file mode 100644
index 000000000..01642f4cc
--- /dev/null
+++ b/src/OpenDirectory/include/OpenDirectory/ODContext.h
@@ -0,0 +1,24 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#include
+
+@interface ODContext : NSObject
+
+@end
diff --git a/src/OpenDirectory/include/OpenDirectory/ODMappings.h b/src/OpenDirectory/include/OpenDirectory/ODMappings.h
new file mode 100644
index 000000000..4902e8a89
--- /dev/null
+++ b/src/OpenDirectory/include/OpenDirectory/ODMappings.h
@@ -0,0 +1,24 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#include
+
+@interface ODMappings : NSObject
+
+@end
diff --git a/src/OpenDirectory/include/OpenDirectory/ODModuleEntry.h b/src/OpenDirectory/include/OpenDirectory/ODModuleEntry.h
new file mode 100644
index 000000000..ff2b7f261
--- /dev/null
+++ b/src/OpenDirectory/include/OpenDirectory/ODModuleEntry.h
@@ -0,0 +1,24 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#include
+
+@interface ODModuleEntry : NSObject
+
+@end
diff --git a/src/OpenDirectory/include/OpenDirectory/ODNode.h b/src/OpenDirectory/include/OpenDirectory/ODNode.h
new file mode 100644
index 000000000..4958ad2aa
--- /dev/null
+++ b/src/OpenDirectory/include/OpenDirectory/ODNode.h
@@ -0,0 +1,24 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#include
+
+@interface ODNode : NSObject
+
+@end
diff --git a/src/OpenDirectory/include/OpenDirectory/ODQuery.h b/src/OpenDirectory/include/OpenDirectory/ODQuery.h
new file mode 100644
index 000000000..915324c77
--- /dev/null
+++ b/src/OpenDirectory/include/OpenDirectory/ODQuery.h
@@ -0,0 +1,24 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#include
+
+@interface ODQuery : NSObject
+
+@end
diff --git a/src/OpenDirectory/include/OpenDirectory/ODQueryDelegate.h b/src/OpenDirectory/include/OpenDirectory/ODQueryDelegate.h
new file mode 100644
index 000000000..e01f4a690
--- /dev/null
+++ b/src/OpenDirectory/include/OpenDirectory/ODQueryDelegate.h
@@ -0,0 +1,24 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#include
+
+@protocol ODQueryDelegate
+
+@end
diff --git a/src/OpenDirectory/include/OpenDirectory/ODRecord.h b/src/OpenDirectory/include/OpenDirectory/ODRecord.h
new file mode 100644
index 000000000..db2e58a63
--- /dev/null
+++ b/src/OpenDirectory/include/OpenDirectory/ODRecord.h
@@ -0,0 +1,24 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#include
+
+@interface ODRecord : NSObject
+
+@end
diff --git a/src/OpenDirectory/include/OpenDirectory/ODRecordMap.h b/src/OpenDirectory/include/OpenDirectory/ODRecordMap.h
new file mode 100644
index 000000000..22fa8364f
--- /dev/null
+++ b/src/OpenDirectory/include/OpenDirectory/ODRecordMap.h
@@ -0,0 +1,24 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#include
+
+@interface ODRecordMap : NSObject
+
+@end
diff --git a/src/OpenDirectory/include/OpenDirectory/ODSession.h b/src/OpenDirectory/include/OpenDirectory/ODSession.h
new file mode 100644
index 000000000..0b2b4c4b5
--- /dev/null
+++ b/src/OpenDirectory/include/OpenDirectory/ODSession.h
@@ -0,0 +1,24 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#include
+
+@interface ODSession : NSObject
+
+@end
diff --git a/src/OpenDirectory/include/OpenDirectory/OpenDirectory.h b/src/OpenDirectory/include/OpenDirectory/OpenDirectory.h
new file mode 100644
index 000000000..9d311e903
--- /dev/null
+++ b/src/OpenDirectory/include/OpenDirectory/OpenDirectory.h
@@ -0,0 +1,45 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+
+#ifndef _OpenDirectory_H_
+#define _OpenDirectory_H_
+
+#import
+
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+
+void* ODTrustInfoCopy(void);
+
+#endif
diff --git a/src/OpenDirectory/src/NSODContext.m b/src/OpenDirectory/src/NSODContext.m
new file mode 100644
index 000000000..f495532a3
--- /dev/null
+++ b/src/OpenDirectory/src/NSODContext.m
@@ -0,0 +1,34 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#import
+
+@implementation NSODContext
+
+- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
+{
+ return [NSMethodSignature signatureWithObjCTypes: "v@:"];
+}
+
+- (void)forwardInvocation:(NSInvocation *)anInvocation
+{
+ NSLog(@"Stub called: %@ in %@", NSStringFromSelector([anInvocation selector]), [self class]);
+}
+
+@end
diff --git a/src/OpenDirectory/src/NSODNode.m b/src/OpenDirectory/src/NSODNode.m
new file mode 100644
index 000000000..7ea32b7ca
--- /dev/null
+++ b/src/OpenDirectory/src/NSODNode.m
@@ -0,0 +1,34 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#import
+
+@implementation NSODNode
+
+- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
+{
+ return [NSMethodSignature signatureWithObjCTypes: "v@:"];
+}
+
+- (void)forwardInvocation:(NSInvocation *)anInvocation
+{
+ NSLog(@"Stub called: %@ in %@", NSStringFromSelector([anInvocation selector]), [self class]);
+}
+
+@end
diff --git a/src/OpenDirectory/src/NSODQuery.m b/src/OpenDirectory/src/NSODQuery.m
new file mode 100644
index 000000000..fb3f5db2c
--- /dev/null
+++ b/src/OpenDirectory/src/NSODQuery.m
@@ -0,0 +1,34 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#import
+
+@implementation NSODQuery
+
+- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
+{
+ return [NSMethodSignature signatureWithObjCTypes: "v@:"];
+}
+
+- (void)forwardInvocation:(NSInvocation *)anInvocation
+{
+ NSLog(@"Stub called: %@ in %@", NSStringFromSelector([anInvocation selector]), [self class]);
+}
+
+@end
diff --git a/src/OpenDirectory/src/NSODRecord.m b/src/OpenDirectory/src/NSODRecord.m
new file mode 100644
index 000000000..b576a9e81
--- /dev/null
+++ b/src/OpenDirectory/src/NSODRecord.m
@@ -0,0 +1,34 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#import
+
+@implementation NSODRecord
+
+- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
+{
+ return [NSMethodSignature signatureWithObjCTypes: "v@:"];
+}
+
+- (void)forwardInvocation:(NSInvocation *)anInvocation
+{
+ NSLog(@"Stub called: %@ in %@", NSStringFromSelector([anInvocation selector]), [self class]);
+}
+
+@end
diff --git a/src/OpenDirectory/src/NSODSession.m b/src/OpenDirectory/src/NSODSession.m
new file mode 100644
index 000000000..c584265fd
--- /dev/null
+++ b/src/OpenDirectory/src/NSODSession.m
@@ -0,0 +1,34 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#import
+
+@implementation NSODSession
+
+- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
+{
+ return [NSMethodSignature signatureWithObjCTypes: "v@:"];
+}
+
+- (void)forwardInvocation:(NSInvocation *)anInvocation
+{
+ NSLog(@"Stub called: %@ in %@", NSStringFromSelector([anInvocation selector]), [self class]);
+}
+
+@end
diff --git a/src/OpenDirectory/src/ODAttributeMap.m b/src/OpenDirectory/src/ODAttributeMap.m
new file mode 100644
index 000000000..daa61007a
--- /dev/null
+++ b/src/OpenDirectory/src/ODAttributeMap.m
@@ -0,0 +1,34 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#import
+
+@implementation ODAttributeMap
+
+- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
+{
+ return [NSMethodSignature signatureWithObjCTypes: "v@:"];
+}
+
+- (void)forwardInvocation:(NSInvocation *)anInvocation
+{
+ NSLog(@"Stub called: %@ in %@", NSStringFromSelector([anInvocation selector]), [self class]);
+}
+
+@end
diff --git a/src/OpenDirectory/src/ODConfiguration.m b/src/OpenDirectory/src/ODConfiguration.m
new file mode 100644
index 000000000..0e487f142
--- /dev/null
+++ b/src/OpenDirectory/src/ODConfiguration.m
@@ -0,0 +1,34 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#import
+
+@implementation ODConfiguration
+
+- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
+{
+ return [NSMethodSignature signatureWithObjCTypes: "v@:"];
+}
+
+- (void)forwardInvocation:(NSInvocation *)anInvocation
+{
+ NSLog(@"Stub called: %@ in %@", NSStringFromSelector([anInvocation selector]), [self class]);
+}
+
+@end
diff --git a/src/OpenDirectory/src/ODContext.m b/src/OpenDirectory/src/ODContext.m
new file mode 100644
index 000000000..91ee78646
--- /dev/null
+++ b/src/OpenDirectory/src/ODContext.m
@@ -0,0 +1,34 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#import
+
+@implementation ODContext
+
+- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
+{
+ return [NSMethodSignature signatureWithObjCTypes: "v@:"];
+}
+
+- (void)forwardInvocation:(NSInvocation *)anInvocation
+{
+ NSLog(@"Stub called: %@ in %@", NSStringFromSelector([anInvocation selector]), [self class]);
+}
+
+@end
diff --git a/src/OpenDirectory/src/ODMappings.m b/src/OpenDirectory/src/ODMappings.m
new file mode 100644
index 000000000..938d72394
--- /dev/null
+++ b/src/OpenDirectory/src/ODMappings.m
@@ -0,0 +1,34 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#import
+
+@implementation ODMappings
+
+- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
+{
+ return [NSMethodSignature signatureWithObjCTypes: "v@:"];
+}
+
+- (void)forwardInvocation:(NSInvocation *)anInvocation
+{
+ NSLog(@"Stub called: %@ in %@", NSStringFromSelector([anInvocation selector]), [self class]);
+}
+
+@end
diff --git a/src/OpenDirectory/src/ODModuleEntry.m b/src/OpenDirectory/src/ODModuleEntry.m
new file mode 100644
index 000000000..f356bf9a2
--- /dev/null
+++ b/src/OpenDirectory/src/ODModuleEntry.m
@@ -0,0 +1,34 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#import
+
+@implementation ODModuleEntry
+
+- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
+{
+ return [NSMethodSignature signatureWithObjCTypes: "v@:"];
+}
+
+- (void)forwardInvocation:(NSInvocation *)anInvocation
+{
+ NSLog(@"Stub called: %@ in %@", NSStringFromSelector([anInvocation selector]), [self class]);
+}
+
+@end
diff --git a/src/OpenDirectory/src/ODNode.m b/src/OpenDirectory/src/ODNode.m
new file mode 100644
index 000000000..24243f915
--- /dev/null
+++ b/src/OpenDirectory/src/ODNode.m
@@ -0,0 +1,34 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#import
+
+@implementation ODNode
+
+- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
+{
+ return [NSMethodSignature signatureWithObjCTypes: "v@:"];
+}
+
+- (void)forwardInvocation:(NSInvocation *)anInvocation
+{
+ NSLog(@"Stub called: %@ in %@", NSStringFromSelector([anInvocation selector]), [self class]);
+}
+
+@end
diff --git a/src/OpenDirectory/src/ODQuery.m b/src/OpenDirectory/src/ODQuery.m
new file mode 100644
index 000000000..5b0361e37
--- /dev/null
+++ b/src/OpenDirectory/src/ODQuery.m
@@ -0,0 +1,34 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#import
+
+@implementation ODQuery
+
+- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
+{
+ return [NSMethodSignature signatureWithObjCTypes: "v@:"];
+}
+
+- (void)forwardInvocation:(NSInvocation *)anInvocation
+{
+ NSLog(@"Stub called: %@ in %@", NSStringFromSelector([anInvocation selector]), [self class]);
+}
+
+@end
diff --git a/src/OpenDirectory/src/ODRecord.m b/src/OpenDirectory/src/ODRecord.m
new file mode 100644
index 000000000..5e207c4bb
--- /dev/null
+++ b/src/OpenDirectory/src/ODRecord.m
@@ -0,0 +1,34 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#import
+
+@implementation ODRecord
+
+- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
+{
+ return [NSMethodSignature signatureWithObjCTypes: "v@:"];
+}
+
+- (void)forwardInvocation:(NSInvocation *)anInvocation
+{
+ NSLog(@"Stub called: %@ in %@", NSStringFromSelector([anInvocation selector]), [self class]);
+}
+
+@end
diff --git a/src/OpenDirectory/src/ODRecordMap.m b/src/OpenDirectory/src/ODRecordMap.m
new file mode 100644
index 000000000..bacd14721
--- /dev/null
+++ b/src/OpenDirectory/src/ODRecordMap.m
@@ -0,0 +1,34 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#import
+
+@implementation ODRecordMap
+
+- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
+{
+ return [NSMethodSignature signatureWithObjCTypes: "v@:"];
+}
+
+- (void)forwardInvocation:(NSInvocation *)anInvocation
+{
+ NSLog(@"Stub called: %@ in %@", NSStringFromSelector([anInvocation selector]), [self class]);
+}
+
+@end
diff --git a/src/OpenDirectory/src/ODSession.m b/src/OpenDirectory/src/ODSession.m
new file mode 100644
index 000000000..3fdec1b83
--- /dev/null
+++ b/src/OpenDirectory/src/ODSession.m
@@ -0,0 +1,34 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+#import
+
+@implementation ODSession
+
+- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
+{
+ return [NSMethodSignature signatureWithObjCTypes: "v@:"];
+}
+
+- (void)forwardInvocation:(NSInvocation *)anInvocation
+{
+ NSLog(@"Stub called: %@ in %@", NSStringFromSelector([anInvocation selector]), [self class]);
+}
+
+@end
diff --git a/src/OpenDirectory/src/OpenDirectory.m b/src/OpenDirectory/src/OpenDirectory.m
new file mode 100644
index 000000000..380ea2191
--- /dev/null
+++ b/src/OpenDirectory/src/OpenDirectory.m
@@ -0,0 +1,36 @@
+/*
+ This file is part of Darling.
+
+ Copyright (C) 2019 Lubos Dolezel
+
+ Darling 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 3 of the License, or
+ (at your option) any later version.
+
+ Darling 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.
+
+ You should have received a copy of the GNU General Public License
+ along with Darling. If not, see .
+*/
+
+
+#include
+#include
+#include
+
+static int verbose = 0;
+
+__attribute__((constructor))
+static void initme(void) {
+ verbose = getenv("STUB_VERBOSE") != NULL;
+}
+
+void* ODTrustInfoCopy(void)
+{
+ if (verbose) puts("STUB: ODTrustInfoCopy called");
+ return NULL;
+}
diff --git a/src/OpenDirectory/CFOpenDirectory/CFOpenDirectory b/src/OpenDirectoryOld/CFOpenDirectory/CFOpenDirectory
similarity index 100%
rename from src/OpenDirectory/CFOpenDirectory/CFOpenDirectory
rename to src/OpenDirectoryOld/CFOpenDirectory/CFOpenDirectory
diff --git a/src/OpenDirectory/CFOpenDirectory/Headers/CFODContext.h b/src/OpenDirectoryOld/CFOpenDirectory/Headers/CFODContext.h
similarity index 100%
rename from src/OpenDirectory/CFOpenDirectory/Headers/CFODContext.h
rename to src/OpenDirectoryOld/CFOpenDirectory/Headers/CFODContext.h
diff --git a/src/OpenDirectory/CFOpenDirectory/Headers/CFODNode.h b/src/OpenDirectoryOld/CFOpenDirectory/Headers/CFODNode.h
similarity index 100%
rename from src/OpenDirectory/CFOpenDirectory/Headers/CFODNode.h
rename to src/OpenDirectoryOld/CFOpenDirectory/Headers/CFODNode.h
diff --git a/src/OpenDirectory/CFOpenDirectory/Headers/CFODQuery.h b/src/OpenDirectoryOld/CFOpenDirectory/Headers/CFODQuery.h
similarity index 100%
rename from src/OpenDirectory/CFOpenDirectory/Headers/CFODQuery.h
rename to src/OpenDirectoryOld/CFOpenDirectory/Headers/CFODQuery.h
diff --git a/src/OpenDirectory/CFOpenDirectory/Headers/CFODRecord.h b/src/OpenDirectoryOld/CFOpenDirectory/Headers/CFODRecord.h
similarity index 100%
rename from src/OpenDirectory/CFOpenDirectory/Headers/CFODRecord.h
rename to src/OpenDirectoryOld/CFOpenDirectory/Headers/CFODRecord.h
diff --git a/src/OpenDirectory/CFOpenDirectory/Headers/CFODSession.h b/src/OpenDirectoryOld/CFOpenDirectory/Headers/CFODSession.h
similarity index 100%
rename from src/OpenDirectory/CFOpenDirectory/Headers/CFODSession.h
rename to src/OpenDirectoryOld/CFOpenDirectory/Headers/CFODSession.h
diff --git a/src/OpenDirectory/CFOpenDirectory/Headers/CFOpenDirectory.h b/src/OpenDirectoryOld/CFOpenDirectory/Headers/CFOpenDirectory.h
similarity index 100%
rename from src/OpenDirectory/CFOpenDirectory/Headers/CFOpenDirectory.h
rename to src/OpenDirectoryOld/CFOpenDirectory/Headers/CFOpenDirectory.h
diff --git a/src/OpenDirectory/CFOpenDirectory/Headers/CFOpenDirectoryConstants.h b/src/OpenDirectoryOld/CFOpenDirectory/Headers/CFOpenDirectoryConstants.h
similarity index 100%
rename from src/OpenDirectory/CFOpenDirectory/Headers/CFOpenDirectoryConstants.h
rename to src/OpenDirectoryOld/CFOpenDirectory/Headers/CFOpenDirectoryConstants.h
diff --git a/src/OpenDirectory/Headers/NSOpenDirectory.h b/src/OpenDirectoryOld/Headers/NSOpenDirectory.h
similarity index 100%
rename from src/OpenDirectory/Headers/NSOpenDirectory.h
rename to src/OpenDirectoryOld/Headers/NSOpenDirectory.h
diff --git a/src/OpenDirectory/Headers/ODAttributeMap.h b/src/OpenDirectoryOld/Headers/ODAttributeMap.h
similarity index 100%
rename from src/OpenDirectory/Headers/ODAttributeMap.h
rename to src/OpenDirectoryOld/Headers/ODAttributeMap.h
diff --git a/src/OpenDirectory/Headers/ODConfiguration.h b/src/OpenDirectoryOld/Headers/ODConfiguration.h
similarity index 100%
rename from src/OpenDirectory/Headers/ODConfiguration.h
rename to src/OpenDirectoryOld/Headers/ODConfiguration.h
diff --git a/src/OpenDirectory/Headers/ODMappings.h b/src/OpenDirectoryOld/Headers/ODMappings.h
similarity index 100%
rename from src/OpenDirectory/Headers/ODMappings.h
rename to src/OpenDirectoryOld/Headers/ODMappings.h
diff --git a/src/OpenDirectory/Headers/ODModuleEntry.h b/src/OpenDirectoryOld/Headers/ODModuleEntry.h
similarity index 100%
rename from src/OpenDirectory/Headers/ODModuleEntry.h
rename to src/OpenDirectoryOld/Headers/ODModuleEntry.h
diff --git a/src/OpenDirectory/Headers/ODNode.h b/src/OpenDirectoryOld/Headers/ODNode.h
similarity index 100%
rename from src/OpenDirectory/Headers/ODNode.h
rename to src/OpenDirectoryOld/Headers/ODNode.h
diff --git a/src/OpenDirectory/Headers/ODQuery.h b/src/OpenDirectoryOld/Headers/ODQuery.h
similarity index 100%
rename from src/OpenDirectory/Headers/ODQuery.h
rename to src/OpenDirectoryOld/Headers/ODQuery.h
diff --git a/src/OpenDirectory/Headers/ODRecord.h b/src/OpenDirectoryOld/Headers/ODRecord.h
similarity index 100%
rename from src/OpenDirectory/Headers/ODRecord.h
rename to src/OpenDirectoryOld/Headers/ODRecord.h
diff --git a/src/OpenDirectory/Headers/ODRecordMap.h b/src/OpenDirectoryOld/Headers/ODRecordMap.h
similarity index 100%
rename from src/OpenDirectory/Headers/ODRecordMap.h
rename to src/OpenDirectoryOld/Headers/ODRecordMap.h
diff --git a/src/OpenDirectory/Headers/ODSession.h b/src/OpenDirectoryOld/Headers/ODSession.h
similarity index 100%
rename from src/OpenDirectory/Headers/ODSession.h
rename to src/OpenDirectoryOld/Headers/ODSession.h
diff --git a/src/OpenDirectory/Headers/OpenDirectory.h b/src/OpenDirectoryOld/Headers/OpenDirectory.h
similarity index 100%
rename from src/OpenDirectory/Headers/OpenDirectory.h
rename to src/OpenDirectoryOld/Headers/OpenDirectory.h
diff --git a/src/OpenDirectory/OpenDirectory b/src/OpenDirectoryOld/OpenDirectory
similarity index 100%
rename from src/OpenDirectory/OpenDirectory
rename to src/OpenDirectoryOld/OpenDirectory
diff --git a/src/WebKit/src/WebKit.m b/src/WebKit/src/WebKit.m
index 5f0e12f75..2e8440e3a 100644
--- a/src/WebKit/src/WebKit.m
+++ b/src/WebKit/src/WebKit.m
@@ -22,6 +22,11 @@
#include
#include
+@interface WebView : NSObject
+@end
+@implementation WebView
+@end
+
static int verbose = 0;
__attribute__((constructor))
diff --git a/src/external/cocotron b/src/external/cocotron
index 4d2f12107..35e442b89 160000
--- a/src/external/cocotron
+++ b/src/external/cocotron
@@ -1 +1 @@
-Subproject commit 4d2f12107154b2964baac8592991f23c73f0d456
+Subproject commit 35e442b89e6746ede732551b6da01d6694e47963
diff --git a/src/external/foundation b/src/external/foundation
index 26645c9d7..d584712b0 160000
--- a/src/external/foundation
+++ b/src/external/foundation
@@ -1 +1 @@
-Subproject commit 26645c9d74ee2062d63b3df2a9f9a6d665bf4c91
+Subproject commit d584712b0bf56c8536d440e079b75991946e8a46