diff --git a/.gitignore b/.gitignore
index 8375704..5e0c14b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
-.deps
+# Linux build intermediate files.
+.deps/
.dirstamp
-.libs
+.libs/
*~
*.o
*.lo
@@ -20,13 +21,11 @@ m4/
/missing
/config.status
/ltmain.sh
-/config.log
/libtool
/configure
/intltool-merge.in
/install-sh
/configure.scan
-/autoscan.log
/nbproject/private
/po/Makefile.in.in
/po/stamp-it
@@ -35,3 +34,71 @@ m4/
/src/config.h
/src/config.h.in
/build-aux/
+
+# NetBeans local configuration files.
+/nbproject/
+
+# Log files.
+*.log
+
+# Visual Studio cache & intermadiate directory.
+.vs/
+
+# Visual studio local project files.
+*.suo
+*.user
+
+# Visual C++ cache files.
+ipch/
+obj/
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+package-lock.json
+
+# Visual studio intermediate build files.
+msvc/**/Debug
+msvc/**/Release
+
+# Visual Studio Code cache & intermadiate directory.
+.vscode/
+
+# macOS intemediate and metadata files.
+.DS_Store
+*.swp
+*.lock
+profile
+
+# Xcode temp files.
+*~.nib
+
+# Xcode private settings.
+*.pbxuser
+*.mode1v3
+*.mode2v3
+*.perspectivev3
+
+# Xcode default settings.
+!default.pbxuser
+!default.mode1v3
+!default.mode2v3
+!default.perspectivev3
+
+# Xcode personal settings.
+xcuserdata
+!xcshareddata
+
+# Gradle cache files.
+.gradle/
+.externalNativeBuild/
+
+# Android studio cache/settings files.
+.idea/
+*.iml
+
+# Gradle local settings.
+local.properties
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
new file mode 100644
index 0000000..be1f675
--- /dev/null
+++ b/azure-pipelines.yml
@@ -0,0 +1,81 @@
+jobs:
+- job: build_linux
+ pool:
+ vmImage: 'ubuntu-18.04'
+ # vmImage: 'ubuntu-16.04'
+ # container: 'buildpack-deps:bionic'
+ steps:
+ - bash: 'autoreconf --install'
+ - bash: './configure CPPFLAGS=-DNDEBUG'
+ - bash: 'make'
+- job: build_windows_x86_static
+ pool:
+ vmImage: 'windows-2019'
+ steps:
+ - task: MSBuild@1
+ inputs:
+ solution: 'msvc/teobase.sln'
+ platform: x86
+ configuration: Release
+ msbuildArguments: -target:teobase-static
+- job: build_windows_x86_64_static
+ pool:
+ vmImage: 'windows-2019'
+ steps:
+ - task: MSBuild@1
+ inputs:
+ solution: 'msvc/teobase.sln'
+ platform: x64
+ configuration: Release
+ msbuildArguments: -target:teobase-static
+- job: build_windows_x86_dynamic
+ pool:
+ vmImage: 'windows-2019'
+ steps:
+ - task: MSBuild@1
+ inputs:
+ solution: 'msvc/teobase.sln'
+ platform: x86
+ configuration: Release
+ msbuildArguments: -target:teobase-dynamic
+- job: build_windows_x86_64_dynamic
+ pool:
+ vmImage: 'windows-2019'
+ steps:
+ - task: MSBuild@1
+ inputs:
+ solution: 'msvc/teobase.sln'
+ platform: x64
+ configuration: Release
+ msbuildArguments: -target:teobase-dynamic
+- job: build_android
+ pool:
+ vmImage: 'ubuntu-18.04'
+ steps:
+ - task: Gradle@2
+ inputs:
+ workingDirectory: 'gradle'
+ gradleWrapperFile: 'gradle/gradlew'
+ tasks: 'assembleRelease'
+- job: build_macos
+ pool:
+ vmImage: 'macOS-10.14'
+ steps:
+ - task: Xcode@5
+ inputs:
+ actions: 'build'
+ configuration: 'Release'
+ sdk: 'macosx'
+ xcWorkspacePath: 'xcode/teobase-macos-bundle.xcodeproj/project.xcworkspace'
+ scheme: 'teobase'
+- job: build_ios
+ pool:
+ vmImage: 'macOS-10.14'
+ steps:
+ - task: Xcode@5
+ inputs:
+ actions: 'build'
+ configuration: 'Release'
+ sdk: 'iphoneos'
+ xcWorkspacePath: 'xcode/teobase-ios.xcodeproj/project.xcworkspace'
+ scheme: 'teobase'
diff --git a/gradle/.gitignore b/gradle/.gitignore
new file mode 100644
index 0000000..f0f71e2
--- /dev/null
+++ b/gradle/.gitignore
@@ -0,0 +1,15 @@
+*.iml
+.gradle
+/local.properties
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+.cxx
+.idea
diff --git a/gradle/build.gradle b/gradle/build.gradle
new file mode 100644
index 0000000..5fad230
--- /dev/null
+++ b/gradle/build.gradle
@@ -0,0 +1,26 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+ repositories {
+ google()
+ jcenter()
+
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:3.5.2'
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ jcenter()
+
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
diff --git a/gradle/gradle.properties b/gradle/gradle.properties
new file mode 100644
index 0000000..23339e0
--- /dev/null
+++ b/gradle/gradle.properties
@@ -0,0 +1,21 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx1536m
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app's APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
+# Automatically convert third-party libraries to use AndroidX
+android.enableJetifier=true
+# Kotlin code style for this project: "official" or "obsolete":
+kotlin.code.style=official
diff --git a/gradle/gradle/wrapper/gradle-wrapper.jar b/gradle/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..f6b961f
Binary files /dev/null and b/gradle/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/gradle/wrapper/gradle-wrapper.properties b/gradle/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..61d4a41
--- /dev/null
+++ b/gradle/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Sun Nov 17 17:36:23 MSK 2019
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
diff --git a/gradle/gradlew b/gradle/gradlew
new file mode 100644
index 0000000..cccdd3d
--- /dev/null
+++ b/gradle/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/gradle/gradlew.bat b/gradle/gradlew.bat
new file mode 100644
index 0000000..f955316
--- /dev/null
+++ b/gradle/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/gradle/settings.gradle b/gradle/settings.gradle
new file mode 100644
index 0000000..62fab25
--- /dev/null
+++ b/gradle/settings.gradle
@@ -0,0 +1,2 @@
+include ':teobase-dynamic'
+rootProject.name='teobase'
diff --git a/gradle/teobase-dynamic/.gitignore b/gradle/teobase-dynamic/.gitignore
new file mode 100644
index 0000000..796b96d
--- /dev/null
+++ b/gradle/teobase-dynamic/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/gradle/teobase-dynamic/CMakeLists.txt b/gradle/teobase-dynamic/CMakeLists.txt
new file mode 100644
index 0000000..d7f5e99
--- /dev/null
+++ b/gradle/teobase-dynamic/CMakeLists.txt
@@ -0,0 +1,17 @@
+cmake_minimum_required(VERSION 3.4.1)
+
+find_library( log-lib
+ log )
+add_library( teobase
+ SHARED
+ ../../src/teobase/logging.c
+ ../../src/teobase/mutex.c
+ ../../src/teobase/socket.c
+ ../../src/teobase/time.c )
+
+target_include_directories( teobase
+ PRIVATE
+ ../../include )
+
+target_link_libraries( teobase
+ ${log-lib} )
diff --git a/gradle/teobase-dynamic/build.gradle b/gradle/teobase-dynamic/build.gradle
new file mode 100644
index 0000000..c66dfcf
--- /dev/null
+++ b/gradle/teobase-dynamic/build.gradle
@@ -0,0 +1,37 @@
+apply plugin: 'com.android.library'
+android {
+ compileSdkVersion 28
+ buildToolsVersion "29.0.2"
+
+ defaultConfig {
+ minSdkVersion 15
+ targetSdkVersion 28
+ versionCode 1
+ versionName "1.0"
+
+ consumerProguardFiles 'consumer-rules.pro'
+
+ ndk {
+ abiFilters 'armeabi-v7a', 'arm64-v8a'
+ }
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+
+ externalNativeBuild {
+ cmake {
+ path "CMakeLists.txt"
+ }
+ }
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation 'androidx.appcompat:appcompat:1.0.2'
+ implementation 'androidx.core:core-ktx:1.0.2'
+}
diff --git a/gradle/teobase-dynamic/consumer-rules.pro b/gradle/teobase-dynamic/consumer-rules.pro
new file mode 100644
index 0000000..e69de29
diff --git a/gradle/teobase-dynamic/proguard-rules.pro b/gradle/teobase-dynamic/proguard-rules.pro
new file mode 100644
index 0000000..f1b4245
--- /dev/null
+++ b/gradle/teobase-dynamic/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/gradle/teobase-dynamic/src/main/AndroidManifest.xml b/gradle/teobase-dynamic/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..8427bc3
--- /dev/null
+++ b/gradle/teobase-dynamic/src/main/AndroidManifest.xml
@@ -0,0 +1,2 @@
+
diff --git a/msvc/teobase-dynamic.vcxproj b/msvc/teobase-dynamic.vcxproj
new file mode 100644
index 0000000..8e5afe7
--- /dev/null
+++ b/msvc/teobase-dynamic.vcxproj
@@ -0,0 +1,170 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ 16.0
+ {27788139-0EA9-4ADF-8BD3-16E8B23195EE}
+ teobasedynamic
+ 10.0
+
+
+
+ DynamicLibrary
+ true
+ v142
+ MultiByte
+
+
+ DynamicLibrary
+ false
+ v142
+ true
+ MultiByte
+
+
+ DynamicLibrary
+ true
+ v142
+ MultiByte
+
+
+ DynamicLibrary
+ false
+ v142
+ true
+ MultiByte
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(SolutionDir)$(ProjectName)\$(Platform)\$(Configuration)\
+ $(ProjectName)\$(Platform)\$(Configuration)\
+
+
+ $(SolutionDir)$(ProjectName)\$(Platform)\$(Configuration)\
+ $(ProjectName)\$(Platform)\$(Configuration)\
+
+
+ $(SolutionDir)$(ProjectName)\$(Configuration)\
+ $(ProjectName)\$(Configuration)\
+
+
+ $(SolutionDir)$(ProjectName)\$(Configuration)\
+ $(ProjectName)\$(Configuration)\
+
+
+
+ Level3
+ Disabled
+ true
+ true
+ $(SolutionDir)..\include;$(SolutionDir)..\src;%(AdditionalIncludeDirectories)
+ TEOBASE_DYNAMIC;TEOBASE_EXPORTS;%(PreprocessorDefinitions)
+
+
+ Console
+ Ws2_32.lib;%(AdditionalDependencies)
+
+
+
+
+ Level3
+ Disabled
+ true
+ true
+ $(SolutionDir)..\include;$(SolutionDir)..\src;%(AdditionalIncludeDirectories)
+ TEOBASE_DYNAMIC;TEOBASE_EXPORTS;%(PreprocessorDefinitions)
+
+
+ Console
+ Ws2_32.lib;%(AdditionalDependencies)
+
+
+
+
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+ true
+ $(SolutionDir)..\include;$(SolutionDir)..\src;%(AdditionalIncludeDirectories)
+ TEOBASE_DYNAMIC;TEOBASE_EXPORTS;%(PreprocessorDefinitions)
+
+
+ Console
+ true
+ true
+ Ws2_32.lib;%(AdditionalDependencies)
+
+
+
+
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+ true
+ $(SolutionDir)..\include;$(SolutionDir)..\src;%(AdditionalIncludeDirectories)
+ TEOBASE_DYNAMIC;TEOBASE_EXPORTS;%(PreprocessorDefinitions)
+
+
+ Console
+ true
+ true
+ Ws2_32.lib;%(AdditionalDependencies)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/msvc/teobase-dynamic.vcxproj.filters b/msvc/teobase-dynamic.vcxproj.filters
new file mode 100644
index 0000000..1b54df3
--- /dev/null
+++ b/msvc/teobase-dynamic.vcxproj.filters
@@ -0,0 +1,48 @@
+
+
+
+
+ {739c63bb-0042-470b-9715-12b7b3c33d2a}
+
+
+ {b40d35d7-c386-4c62-9c06-7d97dd254e59}
+
+
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+
\ No newline at end of file
diff --git a/msvc/teobase-static.vcxproj b/msvc/teobase-static.vcxproj
new file mode 100644
index 0000000..cdbb871
--- /dev/null
+++ b/msvc/teobase-static.vcxproj
@@ -0,0 +1,162 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 16.0
+ {1A3E0EA1-F59C-476D-B79F-74D2CB98599F}
+ teobasestatic
+ 10.0
+
+
+
+ StaticLibrary
+ true
+ v142
+ MultiByte
+
+
+ StaticLibrary
+ false
+ v142
+ true
+ MultiByte
+
+
+ StaticLibrary
+ true
+ v142
+ MultiByte
+
+
+ StaticLibrary
+ false
+ v142
+ true
+ MultiByte
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(SolutionDir)$(ProjectName)\$(Configuration)\
+ $(ProjectName)\$(Configuration)\
+
+
+ $(SolutionDir)$(ProjectName)\$(Configuration)\
+ $(ProjectName)\$(Configuration)\
+
+
+ $(SolutionDir)$(ProjectName)\$(Platform)\$(Configuration)\
+ $(ProjectName)\$(Platform)\$(Configuration)\
+
+
+ $(SolutionDir)$(ProjectName)\$(Platform)\$(Configuration)\
+ $(ProjectName)\$(Platform)\$(Configuration)\
+
+
+
+ Level3
+ Disabled
+ true
+ true
+ $(SolutionDir)..\include;$(SolutionDir)..\src;%(AdditionalIncludeDirectories)
+
+
+ Console
+
+
+
+
+ Level3
+ Disabled
+ true
+ true
+ $(SolutionDir)..\include;$(SolutionDir)..\src;%(AdditionalIncludeDirectories)
+
+
+ Console
+
+
+
+
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+ true
+ $(SolutionDir)..\include;$(SolutionDir)..\src;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ true
+
+
+
+
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+ true
+ $(SolutionDir)..\include;$(SolutionDir)..\src;%(AdditionalIncludeDirectories)
+
+
+ Console
+ true
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/msvc/teobase-static.vcxproj.filters b/msvc/teobase-static.vcxproj.filters
new file mode 100644
index 0000000..cad751f
--- /dev/null
+++ b/msvc/teobase-static.vcxproj.filters
@@ -0,0 +1,48 @@
+
+
+
+
+ {7645b6c3-fb24-4380-aa1e-22c567318466}
+
+
+ {74e386db-52b7-489b-b86d-ee06507add44}
+
+
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+
\ No newline at end of file
diff --git a/msvc/teobase.sln b/msvc/teobase.sln
new file mode 100644
index 0000000..1465a6a
--- /dev/null
+++ b/msvc/teobase.sln
@@ -0,0 +1,41 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29306.81
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "teobase-static", "teobase-static.vcxproj", "{1A3E0EA1-F59C-476D-B79F-74D2CB98599F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "teobase-dynamic", "teobase-dynamic.vcxproj", "{27788139-0EA9-4ADF-8BD3-16E8B23195EE}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {1A3E0EA1-F59C-476D-B79F-74D2CB98599F}.Debug|x64.ActiveCfg = Debug|x64
+ {1A3E0EA1-F59C-476D-B79F-74D2CB98599F}.Debug|x64.Build.0 = Debug|x64
+ {1A3E0EA1-F59C-476D-B79F-74D2CB98599F}.Debug|x86.ActiveCfg = Debug|Win32
+ {1A3E0EA1-F59C-476D-B79F-74D2CB98599F}.Debug|x86.Build.0 = Debug|Win32
+ {1A3E0EA1-F59C-476D-B79F-74D2CB98599F}.Release|x64.ActiveCfg = Release|x64
+ {1A3E0EA1-F59C-476D-B79F-74D2CB98599F}.Release|x64.Build.0 = Release|x64
+ {1A3E0EA1-F59C-476D-B79F-74D2CB98599F}.Release|x86.ActiveCfg = Release|Win32
+ {1A3E0EA1-F59C-476D-B79F-74D2CB98599F}.Release|x86.Build.0 = Release|Win32
+ {27788139-0EA9-4ADF-8BD3-16E8B23195EE}.Debug|x64.ActiveCfg = Debug|x64
+ {27788139-0EA9-4ADF-8BD3-16E8B23195EE}.Debug|x64.Build.0 = Debug|x64
+ {27788139-0EA9-4ADF-8BD3-16E8B23195EE}.Debug|x86.ActiveCfg = Debug|Win32
+ {27788139-0EA9-4ADF-8BD3-16E8B23195EE}.Debug|x86.Build.0 = Debug|Win32
+ {27788139-0EA9-4ADF-8BD3-16E8B23195EE}.Release|x64.ActiveCfg = Release|x64
+ {27788139-0EA9-4ADF-8BD3-16E8B23195EE}.Release|x64.Build.0 = Release|x64
+ {27788139-0EA9-4ADF-8BD3-16E8B23195EE}.Release|x86.ActiveCfg = Release|Win32
+ {27788139-0EA9-4ADF-8BD3-16E8B23195EE}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {547EE2AC-D935-4AE7-A9FA-AE33128508D4}
+ EndGlobalSection
+EndGlobal
diff --git a/xcode/teobase-ios.xcodeproj/project.pbxproj b/xcode/teobase-ios.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..a340a7a
--- /dev/null
+++ b/xcode/teobase-ios.xcodeproj/project.pbxproj
@@ -0,0 +1,382 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ A25438D423AAA1A900B3E5E2 /* mutex.c in Sources */ = {isa = PBXBuildFile; fileRef = A25438D323AAA1A900B3E5E2 /* mutex.c */; };
+ A2906B752383DE3B00717DA6 /* logging.c in Sources */ = {isa = PBXBuildFile; fileRef = A2906B722383DE3B00717DA6 /* logging.c */; };
+ A2906B762383DE3B00717DA6 /* socket.c in Sources */ = {isa = PBXBuildFile; fileRef = A2906B732383DE3B00717DA6 /* socket.c */; };
+ A2906B772383DE3B00717DA6 /* time.c in Sources */ = {isa = PBXBuildFile; fileRef = A2906B742383DE3B00717DA6 /* time.c */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ A25438CF23AAA19F00B3E5E2 /* api.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = api.h; path = ../include/teobase/api.h; sourceTree = ""; };
+ A25438D023AAA19F00B3E5E2 /* mutex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mutex.h; path = ../include/teobase/mutex.h; sourceTree = ""; };
+ A25438D323AAA1A900B3E5E2 /* mutex.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mutex.c; path = ../src/teobase/mutex.c; sourceTree = ""; };
+ A2906B652383DBA600717DA6 /* teobase.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = teobase.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ A2906B692383DBA700717DA6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ A2906B722383DE3B00717DA6 /* logging.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = logging.c; path = ../src/teobase/logging.c; sourceTree = ""; };
+ A2906B732383DE3B00717DA6 /* socket.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = socket.c; path = ../src/teobase/socket.c; sourceTree = ""; };
+ A2906B742383DE3B00717DA6 /* time.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = time.c; path = ../src/teobase/time.c; sourceTree = ""; };
+ A2906B782383DE4600717DA6 /* platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = platform.h; path = ../include/teobase/platform.h; sourceTree = ""; };
+ A2906B792383DE4600717DA6 /* time.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = time.h; path = ../include/teobase/time.h; sourceTree = ""; };
+ A2906B7A2383DE4600717DA6 /* windows.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = windows.h; path = ../include/teobase/windows.h; sourceTree = ""; };
+ A2906B7B2383DE4600717DA6 /* logging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = logging.h; path = ../include/teobase/logging.h; sourceTree = ""; };
+ A2906B7C2383DE4600717DA6 /* socket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = socket.h; path = ../include/teobase/socket.h; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ A2906B622383DBA600717DA6 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ A2906B5B2383DBA600717DA6 = {
+ isa = PBXGroup;
+ children = (
+ A2906B712383DD9D00717DA6 /* Headers */,
+ A2906B702383DD9600717DA6 /* Source */,
+ A2906B672383DBA600717DA6 /* teobase-ios */,
+ A2906B662383DBA600717DA6 /* Products */,
+ );
+ sourceTree = "";
+ };
+ A2906B662383DBA600717DA6 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ A2906B652383DBA600717DA6 /* teobase.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ A2906B672383DBA600717DA6 /* teobase-ios */ = {
+ isa = PBXGroup;
+ children = (
+ A2906B692383DBA700717DA6 /* Info.plist */,
+ );
+ path = "teobase-ios";
+ sourceTree = "";
+ };
+ A2906B702383DD9600717DA6 /* Source */ = {
+ isa = PBXGroup;
+ children = (
+ A25438D323AAA1A900B3E5E2 /* mutex.c */,
+ A2906B722383DE3B00717DA6 /* logging.c */,
+ A2906B732383DE3B00717DA6 /* socket.c */,
+ A2906B742383DE3B00717DA6 /* time.c */,
+ );
+ name = Source;
+ sourceTree = "";
+ };
+ A2906B712383DD9D00717DA6 /* Headers */ = {
+ isa = PBXGroup;
+ children = (
+ A25438CF23AAA19F00B3E5E2 /* api.h */,
+ A25438D023AAA19F00B3E5E2 /* mutex.h */,
+ A2906B7B2383DE4600717DA6 /* logging.h */,
+ A2906B782383DE4600717DA6 /* platform.h */,
+ A2906B7C2383DE4600717DA6 /* socket.h */,
+ A2906B792383DE4600717DA6 /* time.h */,
+ A2906B7A2383DE4600717DA6 /* windows.h */,
+ );
+ name = Headers;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ A2906B602383DBA600717DA6 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ A2906B642383DBA600717DA6 /* teobase */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = A2906B6D2383DBA700717DA6 /* Build configuration list for PBXNativeTarget "teobase" */;
+ buildPhases = (
+ A2906B602383DBA600717DA6 /* Headers */,
+ A2906B612383DBA600717DA6 /* Sources */,
+ A2906B622383DBA600717DA6 /* Frameworks */,
+ A2906B632383DBA600717DA6 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = teobase;
+ productName = teobase;
+ productReference = A2906B652383DBA600717DA6 /* teobase.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ A2906B5C2383DBA600717DA6 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 1120;
+ ORGANIZATIONNAME = example;
+ TargetAttributes = {
+ A2906B642383DBA600717DA6 = {
+ CreatedOnToolsVersion = 11.2.1;
+ };
+ };
+ };
+ buildConfigurationList = A2906B5F2383DBA600717DA6 /* Build configuration list for PBXProject "teobase-ios" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = A2906B5B2383DBA600717DA6;
+ productRefGroup = A2906B662383DBA600717DA6 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ A2906B642383DBA600717DA6 /* teobase */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ A2906B632383DBA600717DA6 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ A2906B612383DBA600717DA6 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ A2906B762383DE3B00717DA6 /* socket.c in Sources */,
+ A2906B752383DE3B00717DA6 /* logging.c in Sources */,
+ A2906B772383DE3B00717DA6 /* time.c in Sources */,
+ A25438D423AAA1A900B3E5E2 /* mutex.c in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ A2906B6B2383DBA700717DA6 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Debug;
+ };
+ A2906B6C2383DBA700717DA6 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ VALIDATE_PRODUCT = YES;
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Release;
+ };
+ A2906B6E2383DBA700717DA6 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_CXX_LANGUAGE_STANDARD = "c++17";
+ CODE_SIGN_STYLE = Automatic;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ GCC_C_LANGUAGE_STANDARD = c11;
+ HEADER_SEARCH_PATHS = (
+ ../src,
+ ../include,
+ );
+ INFOPLIST_FILE = "teobase-ios/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ OTHER_CFLAGS = "";
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.teobaseios;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ A2906B6F2383DBA700717DA6 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_CXX_LANGUAGE_STANDARD = "c++17";
+ CODE_SIGN_STYLE = Automatic;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ GCC_C_LANGUAGE_STANDARD = c11;
+ HEADER_SEARCH_PATHS = (
+ ../src,
+ ../include,
+ );
+ INFOPLIST_FILE = "teobase-ios/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ OTHER_CFLAGS = "";
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.teobaseios;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ A2906B5F2383DBA600717DA6 /* Build configuration list for PBXProject "teobase-ios" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ A2906B6B2383DBA700717DA6 /* Debug */,
+ A2906B6C2383DBA700717DA6 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ A2906B6D2383DBA700717DA6 /* Build configuration list for PBXNativeTarget "teobase" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ A2906B6E2383DBA700717DA6 /* Debug */,
+ A2906B6F2383DBA700717DA6 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = A2906B5C2383DBA600717DA6 /* Project object */;
+}
diff --git a/xcode/teobase-ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/xcode/teobase-ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..27d24c8
--- /dev/null
+++ b/xcode/teobase-ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/xcode/teobase-ios.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/xcode/teobase-ios.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/xcode/teobase-ios.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/xcode/teobase-ios.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/xcode/teobase-ios.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 0000000..6b30c74
--- /dev/null
+++ b/xcode/teobase-ios.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
@@ -0,0 +1,10 @@
+
+
+
+
+ BuildSystemType
+ Original
+ PreviewsEnabled
+
+
+
diff --git a/xcode/teobase-ios.xcodeproj/xcshareddata/xcschemes/teobase.xcscheme b/xcode/teobase-ios.xcodeproj/xcshareddata/xcschemes/teobase.xcscheme
new file mode 100644
index 0000000..8d7b5f6
--- /dev/null
+++ b/xcode/teobase-ios.xcodeproj/xcshareddata/xcschemes/teobase.xcscheme
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xcode/teobase-ios/Info.plist b/xcode/teobase-ios/Info.plist
new file mode 100644
index 0000000..9bcb244
--- /dev/null
+++ b/xcode/teobase-ios/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ $(CURRENT_PROJECT_VERSION)
+
+
diff --git a/xcode/teobase-macos-bundle.xcodeproj/project.pbxproj b/xcode/teobase-macos-bundle.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..0d01301
--- /dev/null
+++ b/xcode/teobase-macos-bundle.xcodeproj/project.pbxproj
@@ -0,0 +1,344 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ A25438D823AAA20D00B3E5E2 /* mutex.c in Sources */ = {isa = PBXBuildFile; fileRef = A25438D723AAA20D00B3E5E2 /* mutex.c */; };
+ A2906B582383D85800717DA6 /* logging.c in Sources */ = {isa = PBXBuildFile; fileRef = A2906B552383D85800717DA6 /* logging.c */; };
+ A2906B592383D85800717DA6 /* socket.c in Sources */ = {isa = PBXBuildFile; fileRef = A2906B562383D85800717DA6 /* socket.c */; };
+ A2906B5A2383D85800717DA6 /* time.c in Sources */ = {isa = PBXBuildFile; fileRef = A2906B572383D85800717DA6 /* time.c */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ A212E38C2383D68300B41DEA /* teobase.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = teobase.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
+ A212E38F2383D68300B41DEA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ A25438D523AAA1F500B3E5E2 /* api.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = api.h; path = ../include/teobase/api.h; sourceTree = ""; };
+ A25438D623AAA1F500B3E5E2 /* mutex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mutex.h; path = ../include/teobase/mutex.h; sourceTree = ""; };
+ A25438D723AAA20D00B3E5E2 /* mutex.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mutex.c; path = ../src/teobase/mutex.c; sourceTree = ""; };
+ A2906B502383D84E00717DA6 /* windows.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = windows.h; path = ../include/teobase/windows.h; sourceTree = ""; };
+ A2906B512383D84E00717DA6 /* socket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = socket.h; path = ../include/teobase/socket.h; sourceTree = ""; };
+ A2906B522383D84E00717DA6 /* logging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = logging.h; path = ../include/teobase/logging.h; sourceTree = ""; };
+ A2906B532383D84E00717DA6 /* time.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = time.h; path = ../include/teobase/time.h; sourceTree = ""; };
+ A2906B542383D84E00717DA6 /* platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = platform.h; path = ../include/teobase/platform.h; sourceTree = ""; };
+ A2906B552383D85800717DA6 /* logging.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = logging.c; path = ../src/teobase/logging.c; sourceTree = ""; };
+ A2906B562383D85800717DA6 /* socket.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = socket.c; path = ../src/teobase/socket.c; sourceTree = ""; };
+ A2906B572383D85800717DA6 /* time.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = time.c; path = ../src/teobase/time.c; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ A212E3892383D68300B41DEA /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ A212E3832383D68300B41DEA = {
+ isa = PBXGroup;
+ children = (
+ A2384F0D2383D7D70021A2A9 /* Headers */,
+ A2384F0E2383D7E70021A2A9 /* Source */,
+ A212E38E2383D68300B41DEA /* teobase-macos-bundle */,
+ A212E38D2383D68300B41DEA /* Products */,
+ );
+ sourceTree = "";
+ };
+ A212E38D2383D68300B41DEA /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ A212E38C2383D68300B41DEA /* teobase.bundle */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ A212E38E2383D68300B41DEA /* teobase-macos-bundle */ = {
+ isa = PBXGroup;
+ children = (
+ A212E38F2383D68300B41DEA /* Info.plist */,
+ );
+ path = "teobase-macos-bundle";
+ sourceTree = "";
+ };
+ A2384F0D2383D7D70021A2A9 /* Headers */ = {
+ isa = PBXGroup;
+ children = (
+ A25438D523AAA1F500B3E5E2 /* api.h */,
+ A25438D623AAA1F500B3E5E2 /* mutex.h */,
+ A2906B522383D84E00717DA6 /* logging.h */,
+ A2906B542383D84E00717DA6 /* platform.h */,
+ A2906B512383D84E00717DA6 /* socket.h */,
+ A2906B532383D84E00717DA6 /* time.h */,
+ A2906B502383D84E00717DA6 /* windows.h */,
+ );
+ name = Headers;
+ sourceTree = "";
+ };
+ A2384F0E2383D7E70021A2A9 /* Source */ = {
+ isa = PBXGroup;
+ children = (
+ A25438D723AAA20D00B3E5E2 /* mutex.c */,
+ A2906B552383D85800717DA6 /* logging.c */,
+ A2906B562383D85800717DA6 /* socket.c */,
+ A2906B572383D85800717DA6 /* time.c */,
+ );
+ name = Source;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ A212E38B2383D68300B41DEA /* teobase */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = A212E3922383D68300B41DEA /* Build configuration list for PBXNativeTarget "teobase" */;
+ buildPhases = (
+ A212E3882383D68300B41DEA /* Sources */,
+ A212E3892383D68300B41DEA /* Frameworks */,
+ A212E38A2383D68300B41DEA /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = teobase;
+ productName = teobase;
+ productReference = A212E38C2383D68300B41DEA /* teobase.bundle */;
+ productType = "com.apple.product-type.bundle";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ A212E3842383D68300B41DEA /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 1120;
+ ORGANIZATIONNAME = example;
+ TargetAttributes = {
+ A212E38B2383D68300B41DEA = {
+ CreatedOnToolsVersion = 11.2.1;
+ };
+ };
+ };
+ buildConfigurationList = A212E3872383D68300B41DEA /* Build configuration list for PBXProject "teobase-macos-bundle" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = A212E3832383D68300B41DEA;
+ productRefGroup = A212E38D2383D68300B41DEA /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ A212E38B2383D68300B41DEA /* teobase */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ A212E38A2383D68300B41DEA /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ A212E3882383D68300B41DEA /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ A2906B592383D85800717DA6 /* socket.c in Sources */,
+ A2906B582383D85800717DA6 /* logging.c in Sources */,
+ A2906B5A2383D85800717DA6 /* time.c in Sources */,
+ A25438D823AAA20D00B3E5E2 /* mutex.c in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ A212E3902383D68300B41DEA /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ MACOSX_DEPLOYMENT_TARGET = 10.14;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = macosx;
+ };
+ name = Debug;
+ };
+ A212E3912383D68300B41DEA /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ MACOSX_DEPLOYMENT_TARGET = 10.14;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = macosx;
+ };
+ name = Release;
+ };
+ A212E3932383D68300B41DEA /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_CXX_LANGUAGE_STANDARD = "c++17";
+ CODE_SIGN_STYLE = Automatic;
+ COMBINE_HIDPI_IMAGES = YES;
+ GCC_C_LANGUAGE_STANDARD = c11;
+ HEADER_SEARCH_PATHS = (
+ ../src,
+ ../include,
+ );
+ INFOPLIST_FILE = "$(SRCROOT)/teobase-macos-bundle/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles";
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.teobase;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ WRAPPER_EXTENSION = bundle;
+ };
+ name = Debug;
+ };
+ A212E3942383D68300B41DEA /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_CXX_LANGUAGE_STANDARD = "c++17";
+ CODE_SIGN_STYLE = Automatic;
+ COMBINE_HIDPI_IMAGES = YES;
+ GCC_C_LANGUAGE_STANDARD = c11;
+ HEADER_SEARCH_PATHS = (
+ ../src,
+ ../include,
+ );
+ INFOPLIST_FILE = "$(SRCROOT)/teobase-macos-bundle/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles";
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.teobase;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ WRAPPER_EXTENSION = bundle;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ A212E3872383D68300B41DEA /* Build configuration list for PBXProject "teobase-macos-bundle" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ A212E3902383D68300B41DEA /* Debug */,
+ A212E3912383D68300B41DEA /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ A212E3922383D68300B41DEA /* Build configuration list for PBXNativeTarget "teobase" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ A212E3932383D68300B41DEA /* Debug */,
+ A212E3942383D68300B41DEA /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = A212E3842383D68300B41DEA /* Project object */;
+}
diff --git a/xcode/teobase-macos-bundle.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/xcode/teobase-macos-bundle.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..2f74b42
--- /dev/null
+++ b/xcode/teobase-macos-bundle.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/xcode/teobase-macos-bundle.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/xcode/teobase-macos-bundle.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/xcode/teobase-macos-bundle.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/xcode/teobase-macos-bundle.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/xcode/teobase-macos-bundle.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 0000000..6b30c74
--- /dev/null
+++ b/xcode/teobase-macos-bundle.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
@@ -0,0 +1,10 @@
+
+
+
+
+ BuildSystemType
+ Original
+ PreviewsEnabled
+
+
+
diff --git a/xcode/teobase-macos-bundle.xcodeproj/xcshareddata/xcschemes/teobase.xcscheme b/xcode/teobase-macos-bundle.xcodeproj/xcshareddata/xcschemes/teobase.xcscheme
new file mode 100644
index 0000000..cb32ff1
--- /dev/null
+++ b/xcode/teobase-macos-bundle.xcodeproj/xcshareddata/xcschemes/teobase.xcscheme
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xcode/teobase-macos-bundle/Info.plist b/xcode/teobase-macos-bundle/Info.plist
new file mode 100644
index 0000000..86c22d1
--- /dev/null
+++ b/xcode/teobase-macos-bundle/Info.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+ NSHumanReadableCopyright
+ Copyright © 2019 example. All rights reserved.
+ NSPrincipalClass
+
+
+
diff --git a/xcode/teobase-macos-static.xcodeproj/project.pbxproj b/xcode/teobase-macos-static.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..7b4fc56
--- /dev/null
+++ b/xcode/teobase-macos-static.xcodeproj/project.pbxproj
@@ -0,0 +1,328 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ A212E3772383157900B41DEA /* logging.h in Headers */ = {isa = PBXBuildFile; fileRef = A212E3722383157900B41DEA /* logging.h */; };
+ A212E3782383157900B41DEA /* time.h in Headers */ = {isa = PBXBuildFile; fileRef = A212E3732383157900B41DEA /* time.h */; };
+ A212E3792383157900B41DEA /* socket.h in Headers */ = {isa = PBXBuildFile; fileRef = A212E3742383157900B41DEA /* socket.h */; };
+ A212E37A2383157900B41DEA /* platform.h in Headers */ = {isa = PBXBuildFile; fileRef = A212E3752383157900B41DEA /* platform.h */; };
+ A212E37B2383157900B41DEA /* windows.h in Headers */ = {isa = PBXBuildFile; fileRef = A212E3762383157900B41DEA /* windows.h */; };
+ A212E3802383159A00B41DEA /* socket.c in Sources */ = {isa = PBXBuildFile; fileRef = A212E37D2383159A00B41DEA /* socket.c */; };
+ A212E3812383159A00B41DEA /* time.c in Sources */ = {isa = PBXBuildFile; fileRef = A212E37E2383159A00B41DEA /* time.c */; };
+ A212E3822383159A00B41DEA /* logging.c in Sources */ = {isa = PBXBuildFile; fileRef = A212E37F2383159A00B41DEA /* logging.c */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ A212E3722383157900B41DEA /* logging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = logging.h; path = ../include/teobase/logging.h; sourceTree = ""; };
+ A212E3732383157900B41DEA /* time.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = time.h; path = ../include/teobase/time.h; sourceTree = ""; };
+ A212E3742383157900B41DEA /* socket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = socket.h; path = ../include/teobase/socket.h; sourceTree = ""; };
+ A212E3752383157900B41DEA /* platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = platform.h; path = ../include/teobase/platform.h; sourceTree = ""; };
+ A212E3762383157900B41DEA /* windows.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = windows.h; path = ../include/teobase/windows.h; sourceTree = ""; };
+ A212E37D2383159A00B41DEA /* socket.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = socket.c; path = ../src/teobase/socket.c; sourceTree = ""; };
+ A212E37E2383159A00B41DEA /* time.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = time.c; path = ../src/teobase/time.c; sourceTree = ""; };
+ A212E37F2383159A00B41DEA /* logging.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = logging.c; path = ../src/teobase/logging.c; sourceTree = ""; };
+ A2EEFA85238314F70072B4DD /* libteobase.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libteobase.a; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ A2EEFA83238314F70072B4DD /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ A212E3712383156D00B41DEA /* Headers */ = {
+ isa = PBXGroup;
+ children = (
+ A212E3722383157900B41DEA /* logging.h */,
+ A212E3752383157900B41DEA /* platform.h */,
+ A212E3742383157900B41DEA /* socket.h */,
+ A212E3732383157900B41DEA /* time.h */,
+ A212E3762383157900B41DEA /* windows.h */,
+ );
+ name = Headers;
+ sourceTree = "";
+ };
+ A212E37C2383157F00B41DEA /* Source */ = {
+ isa = PBXGroup;
+ children = (
+ A212E37F2383159A00B41DEA /* logging.c */,
+ A212E37D2383159A00B41DEA /* socket.c */,
+ A212E37E2383159A00B41DEA /* time.c */,
+ );
+ name = Source;
+ sourceTree = "";
+ };
+ A2EEFA7C238314F70072B4DD = {
+ isa = PBXGroup;
+ children = (
+ A212E3712383156D00B41DEA /* Headers */,
+ A212E37C2383157F00B41DEA /* Source */,
+ A2EEFA86238314F70072B4DD /* Products */,
+ );
+ sourceTree = "";
+ };
+ A2EEFA86238314F70072B4DD /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ A2EEFA85238314F70072B4DD /* libteobase.a */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ A2EEFA81238314F70072B4DD /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ A212E3792383157900B41DEA /* socket.h in Headers */,
+ A212E37B2383157900B41DEA /* windows.h in Headers */,
+ A212E37A2383157900B41DEA /* platform.h in Headers */,
+ A212E3772383157900B41DEA /* logging.h in Headers */,
+ A212E3782383157900B41DEA /* time.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ A2EEFA84238314F70072B4DD /* teobase */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = A2EEFA89238314F70072B4DD /* Build configuration list for PBXNativeTarget "teobase" */;
+ buildPhases = (
+ A2EEFA81238314F70072B4DD /* Headers */,
+ A2EEFA82238314F70072B4DD /* Sources */,
+ A2EEFA83238314F70072B4DD /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = teobase;
+ productName = teobase;
+ productReference = A2EEFA85238314F70072B4DD /* libteobase.a */;
+ productType = "com.apple.product-type.library.static";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ A2EEFA7D238314F70072B4DD /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 1120;
+ ORGANIZATIONNAME = example;
+ TargetAttributes = {
+ A2EEFA84238314F70072B4DD = {
+ CreatedOnToolsVersion = 11.2.1;
+ };
+ };
+ };
+ buildConfigurationList = A2EEFA80238314F70072B4DD /* Build configuration list for PBXProject "teobase-macos-static" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = A2EEFA7C238314F70072B4DD;
+ productRefGroup = A2EEFA86238314F70072B4DD /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ A2EEFA84238314F70072B4DD /* teobase */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXSourcesBuildPhase section */
+ A2EEFA82238314F70072B4DD /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ A212E3812383159A00B41DEA /* time.c in Sources */,
+ A212E3822383159A00B41DEA /* logging.c in Sources */,
+ A212E3802383159A00B41DEA /* socket.c in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ A2EEFA87238314F70072B4DD /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ MACOSX_DEPLOYMENT_TARGET = 10.14;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = macosx;
+ };
+ name = Debug;
+ };
+ A2EEFA88238314F70072B4DD /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ MACOSX_DEPLOYMENT_TARGET = 10.14;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = macosx;
+ };
+ name = Release;
+ };
+ A2EEFA8A238314F70072B4DD /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_CXX_LANGUAGE_STANDARD = "c++14";
+ CODE_SIGN_STYLE = Automatic;
+ EXECUTABLE_PREFIX = lib;
+ GCC_C_LANGUAGE_STANDARD = c11;
+ HEADER_SEARCH_PATHS = (
+ ../src,
+ ../include,
+ );
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ };
+ name = Debug;
+ };
+ A2EEFA8B238314F70072B4DD /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_CXX_LANGUAGE_STANDARD = "c++14";
+ CODE_SIGN_STYLE = Automatic;
+ EXECUTABLE_PREFIX = lib;
+ GCC_C_LANGUAGE_STANDARD = c11;
+ HEADER_SEARCH_PATHS = (
+ ../src,
+ ../include,
+ );
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ A2EEFA80238314F70072B4DD /* Build configuration list for PBXProject "teobase-macos-static" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ A2EEFA87238314F70072B4DD /* Debug */,
+ A2EEFA88238314F70072B4DD /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ A2EEFA89238314F70072B4DD /* Build configuration list for PBXNativeTarget "teobase" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ A2EEFA8A238314F70072B4DD /* Debug */,
+ A2EEFA8B238314F70072B4DD /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = A2EEFA7D238314F70072B4DD /* Project object */;
+}
diff --git a/xcode/teobase-macos-static.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/xcode/teobase-macos-static.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..2322949
--- /dev/null
+++ b/xcode/teobase-macos-static.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/xcode/teobase-macos-static.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/xcode/teobase-macos-static.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/xcode/teobase-macos-static.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/xcode/teobase-macos-static.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/xcode/teobase-macos-static.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 0000000..6b30c74
--- /dev/null
+++ b/xcode/teobase-macos-static.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
@@ -0,0 +1,10 @@
+
+
+
+
+ BuildSystemType
+ Original
+ PreviewsEnabled
+
+
+
diff --git a/xcode/teobase-macos-static.xcodeproj/xcshareddata/xcschemes/teobase.xcscheme b/xcode/teobase-macos-static.xcodeproj/xcshareddata/xcschemes/teobase.xcscheme
new file mode 100644
index 0000000..eb0e230
--- /dev/null
+++ b/xcode/teobase-macos-static.xcodeproj/xcshareddata/xcschemes/teobase.xcscheme
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+