diff --git a/.gitignore b/.gitignore index 5e98e4f..83dbe79 100644 --- a/.gitignore +++ b/.gitignore @@ -24,4 +24,7 @@ xcuserdata ## Other *.xccheckout *.moved-aside -*.xcuserstate \ No newline at end of file +*.xcuserstate +.DS_Store +libzmq/ +!libzmq/pull_compile_libzmq_git.sh diff --git a/Dependencies/libzmq/pull_compile_libzmq_git.sh b/Dependencies/libzmq/pull_compile_libzmq_git.sh new file mode 100755 index 0000000..86e1353 --- /dev/null +++ b/Dependencies/libzmq/pull_compile_libzmq_git.sh @@ -0,0 +1,212 @@ +#!/usr/bin/env bash + + +# Script adapted from https://github.com/samsoir/libzmq-ios-universal +# tried to keep things to a minimum + + + + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + + +GLOBAL_OUTDIR=${DIR}/dependencies +BUILD_DIR=${DIR}/build + +LIBZMQ_DIR="${DIR}/libzmq-git" +LIBZMQ_FILE="libzmq.a" + +IOS_DEPLOY_TARGET="8.0" +OSX_DEPLOY_TARGET="10.9" + + +if [[ -f "${DIR}/libzmq-ios.a" ]]; then +exit 0; +#library already built +fi + + + + +echo "Initializing build directory..." +if [[ -d ${BUILD_DIR} ]]; then +rm -rf "${BUILD_DIR}" +fi + + +echo "Initializing dependency directory..." +if [[ -d ${GLOBAL_OUTDIR} ]]; then +rm -rf "${GLOBAL_OUTDIR}" +fi + +mkdir -p "${GLOBAL_OUTDIR}/include" "${GLOBAL_OUTDIR}/lib" + + + + +setenv () +{ +export ARCH=$1 +export SDK=$2 +export HOST=$3 + + +export SDKROOT +SDKROOT=$(xcrun -sdk "${SDK}" --show-sdk-path) + +export CFLAGS="${CFLAGS} -arch ${ARCH}" + +export CXXFLAGS="${CFLAGS}" +export CPPFLAGS="${CFLAGS}" +export LDFLAGS="${CFLAGS}" + +mkdir -p "${BUILD_DIR}/${SDK}-${ARCH}" + +} + + + + +setenv_ios () +{ +export CFLAGS="-mios-version-min=${IOS_DEPLOY_TARGET}" +setenv $1 $2 $3 +} + +setenv_osx () +{ +export CFLAGS="-mmacosx-version-min=${OSX_DEPLOY_TARGET}" +setenv $1 $2 $3 +} + +compile_zmq () +{ +make distclean + + + +"${LIBZMQ_DIR}/configure" --disable-dependency-tracking \ +--enable-static --disable-shared \ +--host=${HOST} \ +--prefix="${BUILD_DIR}/${SDK}-${ARCH}" --without-libsodium + +make +make install +make clean +} + + +rm -rf "${LIBZMQ_DIR}" + +echo "Cloning libzmq from source https://github.com/zeromq/libzmq.git" + +git clone "https://github.com/zeromq/libzmq.git" "${LIBZMQ_DIR}" + + + +cd "${LIBZMQ_DIR}" || exit + +${LIBZMQ_DIR}/autogen.sh + +cd "${DIR}" || exit + + +echo "Compiling libzmq for iphoneos/iphonesimulator" +echo "=============================================" +# ios and mac osx should be compiled in different files +# https://karp.id.au/post/xcode_7_linker_rules/ + +echo "Compiling libzmq for armv7..." +setenv_ios "armv7" "iphoneos" "arm-apple-darwin" +compile_zmq + +echo "Compiling libzmq for armv7s..." +setenv_ios "armv7s" "iphoneos" "arm-apple-darwin" +compile_zmq + +echo "Compiling libzmq for arm64..." +setenv_ios "arm64" "iphoneos" "arm-apple-darwin" +compile_zmq + +echo "Compiling libzmq for i386..." +setenv_ios "i386" "iphonesimulator" "i386-apple-darwin" +compile_zmq + +echo "Compiling libzmq for x86_64..." +setenv_ios "x86_64" "iphonesimulator" "x86_64-apple-darwin" +compile_zmq + + +echo "Creating fat static library for iphoneos/iphonesimulator" + +lipo_input+=("${BUILD_DIR}/iphoneos-armv7/lib/${LIBZMQ_FILE}") +lipo_input+=("${BUILD_DIR}/iphoneos-armv7s/lib/${LIBZMQ_FILE}") +lipo_input+=("${BUILD_DIR}/iphoneos-arm64/lib/${LIBZMQ_FILE}") +lipo_input+=("${BUILD_DIR}/iphonesimulator-i386/lib/${LIBZMQ_FILE}") +lipo_input+=("${BUILD_DIR}/iphonesimulator-x86_64/lib/${LIBZMQ_FILE}") + +mkdir -p "${BUILD_DIR}/universal-ios/" + +lipo -create ${lipo_input[*]} -output "${BUILD_DIR}/universal-ios/${LIBZMQ_FILE}" + + + +echo "Compiling libzmq for macosx" +echo "===========================" + +echo "Compiling libzmq for i386..." +setenv_osx "i386" "macosx" "i386-apple-darwin" +compile_zmq + +echo "Compiling libzmq for x86_64..." +setenv_osx "x86_64" "macosx" "x86_64-apple-darwin" +compile_zmq + + +echo "Creating fat static library for macosx" + +lipo_input=( ) +lipo_input+=("${BUILD_DIR}/macosx-i386/lib/${LIBZMQ_FILE}") +lipo_input+=("${BUILD_DIR}/macosx-x86_64/lib/${LIBZMQ_FILE}") + +mkdir -p "${BUILD_DIR}/universal-osx/" + +lipo -create ${lipo_input[*]} -output "${BUILD_DIR}/universal-osx/${LIBZMQ_FILE}" + + + + + + + +echo "Copying libzmq headers into universal library..." + +mkdir -p "${BUILD_DIR}/universal" +cp -R "${LIBZMQ_DIR}/include" "${BUILD_DIR}/universal" + + + + + + + +echo "Tidying up..." +rm -rf builds +rm -rf config.* +rm -rf dependencies +rm -rf doc +rm -rf foreign +rm -f libtool +rm -f Makefile +rm -rf perf +rm -rf src +rm -rf tests +rm -rf packaging +rm -rf tools + + +cp ${DIR}/build/universal/include/zmq.h ${DIR} +cp ${DIR}/build/universal/include/zmq_utils.h ${DIR} +cp ${DIR}/build/universal-ios/libzmq.a ${DIR}/libzmq-ios.a +cp ${DIR}/build/universal-osx/libzmq.a ${DIR}/libzmq-osx.a + diff --git a/README.md b/README.md index b4b92db..c02d513 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,8 @@ SwiftZMQ - [x] Poller - [x] Proxy +This fork clones the libzmq repo and compiles it statically into the SwiftZMQ framework, also it adds the iOS framework target + ##Example ```swift diff --git a/SwiftZMQ.xcodeproj/project.pbxproj b/SwiftZMQ.xcodeproj/project.pbxproj index 2ea2c42..460776c 100644 --- a/SwiftZMQ.xcodeproj/project.pbxproj +++ b/SwiftZMQ.xcodeproj/project.pbxproj @@ -7,15 +7,30 @@ objects = { /* Begin PBXBuildFile section */ - B00ED9EB1BD8A2CD00BBBBAE /* SwiftZMQ.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B00ED9E01BD8A2CD00BBBBAE /* SwiftZMQ.framework */; settings = {ASSET_TAGS = (); }; }; - B00EDA421BDDD1FB00BBBBAE /* Context.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA361BDDD1FB00BBBBAE /* Context.swift */; settings = {ASSET_TAGS = (); }; }; - B00EDA431BDDD1FB00BBBBAE /* CURVE.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA371BDDD1FB00BBBBAE /* CURVE.swift */; settings = {ASSET_TAGS = (); }; }; - B00EDA441BDDD1FB00BBBBAE /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA381BDDD1FB00BBBBAE /* Error.swift */; settings = {ASSET_TAGS = (); }; }; - B00EDA461BDDD1FB00BBBBAE /* Message.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA3A1BDDD1FB00BBBBAE /* Message.swift */; settings = {ASSET_TAGS = (); }; }; - B00EDA471BDDD1FB00BBBBAE /* Poller.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA3B1BDDD1FB00BBBBAE /* Poller.swift */; settings = {ASSET_TAGS = (); }; }; - B00EDA481BDDD1FB00BBBBAE /* Proxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA3C1BDDD1FB00BBBBAE /* Proxy.swift */; settings = {ASSET_TAGS = (); }; }; - B00EDA491BDDD1FB00BBBBAE /* Socket.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA3D1BDDD1FB00BBBBAE /* Socket.swift */; settings = {ASSET_TAGS = (); }; }; - B00EDA4D1BDDD27000BBBBAE /* ZMQTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA411BDDD1FB00BBBBAE /* ZMQTests.swift */; settings = {ASSET_TAGS = (); }; }; + 53045E9A1C50914D0037E4C1 /* libzmq-osx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 53045E981C50914D0037E4C1 /* libzmq-osx.a */; }; + 53045E9B1C5091580037E4C1 /* libzmq-ios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 53045E971C50914D0037E4C1 /* libzmq-ios.a */; }; + 539073F51C50484E00E8F9C6 /* Context.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA361BDDD1FB00BBBBAE /* Context.swift */; }; + 539073F61C50484E00E8F9C6 /* Socket.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA3D1BDDD1FB00BBBBAE /* Socket.swift */; }; + 539073F71C50484E00E8F9C6 /* Message.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA3A1BDDD1FB00BBBBAE /* Message.swift */; }; + 539073F81C50484E00E8F9C6 /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA381BDDD1FB00BBBBAE /* Error.swift */; }; + 539073F91C50484E00E8F9C6 /* CURVE.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA371BDDD1FB00BBBBAE /* CURVE.swift */; }; + 539073FA1C50484E00E8F9C6 /* Proxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA3C1BDDD1FB00BBBBAE /* Proxy.swift */; }; + 539073FB1C50484E00E8F9C6 /* Poller.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA3B1BDDD1FB00BBBBAE /* Poller.swift */; }; + 539073FD1C50484E00E8F9C6 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 53C76A2F1C4EE1FE00F0357B /* libc++.tbd */; }; + 539074001C50484E00E8F9C6 /* zmq_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 53C76A2A1C4EDFD500F0357B /* zmq_utils.h */; }; + 539074011C50484E00E8F9C6 /* zmq.h in Headers */ = {isa = PBXBuildFile; fileRef = 53C76A2B1C4EDFD500F0357B /* zmq.h */; }; + 53C76A2D1C4EDFD500F0357B /* zmq_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 53C76A2A1C4EDFD500F0357B /* zmq_utils.h */; }; + 53C76A2E1C4EDFD500F0357B /* zmq.h in Headers */ = {isa = PBXBuildFile; fileRef = 53C76A2B1C4EDFD500F0357B /* zmq.h */; }; + 53C76A301C4EE1FE00F0357B /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 53C76A2F1C4EE1FE00F0357B /* libc++.tbd */; }; + B00ED9EB1BD8A2CD00BBBBAE /* SwiftZMQ.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B00ED9E01BD8A2CD00BBBBAE /* SwiftZMQ.framework */; }; + B00EDA421BDDD1FB00BBBBAE /* Context.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA361BDDD1FB00BBBBAE /* Context.swift */; }; + B00EDA431BDDD1FB00BBBBAE /* CURVE.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA371BDDD1FB00BBBBAE /* CURVE.swift */; }; + B00EDA441BDDD1FB00BBBBAE /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA381BDDD1FB00BBBBAE /* Error.swift */; }; + B00EDA461BDDD1FB00BBBBAE /* Message.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA3A1BDDD1FB00BBBBAE /* Message.swift */; }; + B00EDA471BDDD1FB00BBBBAE /* Poller.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA3B1BDDD1FB00BBBBAE /* Poller.swift */; }; + B00EDA481BDDD1FB00BBBBAE /* Proxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA3C1BDDD1FB00BBBBAE /* Proxy.swift */; }; + B00EDA491BDDD1FB00BBBBAE /* Socket.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA3D1BDDD1FB00BBBBAE /* Socket.swift */; }; + B00EDA4D1BDDD27000BBBBAE /* ZMQTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B00EDA411BDDD1FB00BBBBAE /* ZMQTests.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -29,6 +44,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 53045E971C50914D0037E4C1 /* libzmq-ios.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libzmq-ios.a"; path = "Dependencies/libzmq/libzmq-ios.a"; sourceTree = SOURCE_ROOT; }; + 53045E981C50914D0037E4C1 /* libzmq-osx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libzmq-osx.a"; path = "Dependencies/libzmq/libzmq-osx.a"; sourceTree = SOURCE_ROOT; }; + 539074071C50484E00E8F9C6 /* SwiftZMQ_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftZMQ_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 53C2A3BA1C4DE5B2008600D1 /* pull_compile_libzmq_git.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = pull_compile_libzmq_git.sh; sourceTree = ""; }; + 53C76A2A1C4EDFD500F0357B /* zmq_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zmq_utils.h; sourceTree = ""; }; + 53C76A2B1C4EDFD500F0357B /* zmq.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zmq.h; sourceTree = ""; }; + 53C76A2F1C4EE1FE00F0357B /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; }; B00ED9E01BD8A2CD00BBBBAE /* SwiftZMQ.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftZMQ.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B00ED9EA1BD8A2CD00BBBBAE /* SwiftZMQTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwiftZMQTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; B00EDA021BD8A34B00BBBBAE /* module.map */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = module.map; sourceTree = ""; }; @@ -46,10 +68,21 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 539073FC1C50484E00E8F9C6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 539073FD1C50484E00E8F9C6 /* libc++.tbd in Frameworks */, + 53045E9B1C5091580037E4C1 /* libzmq-ios.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; B00ED9DC1BD8A2CD00BBBBAE /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 53C76A301C4EE1FE00F0357B /* libc++.tbd in Frameworks */, + 53045E9A1C50914D0037E4C1 /* libzmq-osx.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -64,9 +97,23 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 53C2A3B91C4DE5B2008600D1 /* libzmq */ = { + isa = PBXGroup; + children = ( + 53045E971C50914D0037E4C1 /* libzmq-ios.a */, + 53045E981C50914D0037E4C1 /* libzmq-osx.a */, + 53C76A2A1C4EDFD500F0357B /* zmq_utils.h */, + 53C76A2B1C4EDFD500F0357B /* zmq.h */, + 53C2A3BA1C4DE5B2008600D1 /* pull_compile_libzmq_git.sh */, + ); + name = libzmq; + path = dependencies/libzmq; + sourceTree = ""; + }; B00ED9D61BD8A2CD00BBBBAE = { isa = PBXGroup; children = ( + 53C76A2F1C4EE1FE00F0357B /* libc++.tbd */, B00ED9FA1BD8A2D900BBBBAE /* Dependencies */, B00EDA351BDDD1FA00BBBBAE /* SwiftZMQ */, B00EDA3F1BDDD1FB00BBBBAE /* SwiftZMQTests */, @@ -79,6 +126,7 @@ children = ( B00ED9E01BD8A2CD00BBBBAE /* SwiftZMQ.framework */, B00ED9EA1BD8A2CD00BBBBAE /* SwiftZMQTests.xctest */, + 539074071C50484E00E8F9C6 /* SwiftZMQ_iOS.framework */, ); name = Products; sourceTree = ""; @@ -86,6 +134,7 @@ B00ED9FA1BD8A2D900BBBBAE /* Dependencies */ = { isa = PBXGroup; children = ( + 53C2A3B91C4DE5B2008600D1 /* libzmq */, B00EDA001BD8A34B00BBBBAE /* ZeroMQ */, ); name = Dependencies; @@ -128,20 +177,51 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ + 539073FF1C50484E00E8F9C6 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 539074001C50484E00E8F9C6 /* zmq_utils.h in Headers */, + 539074011C50484E00E8F9C6 /* zmq.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; B00ED9DD1BD8A2CD00BBBBAE /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + 53C76A2D1C4EDFD500F0357B /* zmq_utils.h in Headers */, + 53C76A2E1C4EDFD500F0357B /* zmq.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + 539073F21C50484E00E8F9C6 /* SwiftZMQ_iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 539074041C50484E00E8F9C6 /* Build configuration list for PBXNativeTarget "SwiftZMQ_iOS" */; + buildPhases = ( + 539073F31C50484E00E8F9C6 /* Run Script */, + 539073F41C50484E00E8F9C6 /* Sources */, + 539073FC1C50484E00E8F9C6 /* Frameworks */, + 539073FF1C50484E00E8F9C6 /* Headers */, + 539074021C50484E00E8F9C6 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SwiftZMQ_iOS; + productName = swiftzmq; + productReference = 539074071C50484E00E8F9C6 /* SwiftZMQ_iOS.framework */; + productType = "com.apple.product-type.framework"; + }; B00ED9DF1BD8A2CD00BBBBAE /* SwiftZMQ */ = { isa = PBXNativeTarget; buildConfigurationList = B00ED9F41BD8A2CD00BBBBAE /* Build configuration list for PBXNativeTarget "SwiftZMQ" */; buildPhases = ( + 53C2A3BC1C4DE652008600D1 /* Run Script */, B00ED9DB1BD8A2CD00BBBBAE /* Sources */, B00ED9DC1BD8A2CD00BBBBAE /* Frameworks */, B00ED9DD1BD8A2CD00BBBBAE /* Headers */, @@ -181,7 +261,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 0700; + LastUpgradeCheck = 0720; ORGANIZATIONNAME = Zewo; TargetAttributes = { B00ED9DF1BD8A2CD00BBBBAE = { @@ -206,11 +286,19 @@ targets = ( B00ED9DF1BD8A2CD00BBBBAE /* SwiftZMQ */, B00ED9E91BD8A2CD00BBBBAE /* SwiftZMQTests */, + 539073F21C50484E00E8F9C6 /* SwiftZMQ_iOS */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 539074021C50484E00E8F9C6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; B00ED9DE1BD8A2CD00BBBBAE /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -227,7 +315,52 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 539073F31C50484E00E8F9C6 /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "${PROJECT_DIR}/dependencies/libzmq/pull_compile_libzmq_git.sh"; + }; + 53C2A3BC1C4DE652008600D1 /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "${PROJECT_DIR}/dependencies/libzmq/pull_compile_libzmq_git.sh\n\n"; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ + 539073F41C50484E00E8F9C6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 539073F51C50484E00E8F9C6 /* Context.swift in Sources */, + 539073F61C50484E00E8F9C6 /* Socket.swift in Sources */, + 539073F71C50484E00E8F9C6 /* Message.swift in Sources */, + 539073F81C50484E00E8F9C6 /* Error.swift in Sources */, + 539073F91C50484E00E8F9C6 /* CURVE.swift in Sources */, + 539073FA1C50484E00E8F9C6 /* Proxy.swift in Sources */, + 539073FB1C50484E00E8F9C6 /* Poller.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; B00ED9DB1BD8A2CD00BBBBAE /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -261,6 +394,75 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + 539074051C50484E00E8F9C6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COMBINE_HIDPI_IMAGES = YES; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + FRAMEWORK_VERSION = A; + INFOPLIST_FILE = SwiftZMQ/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)", + "$(PROJECT_DIR)/Dependencies/ZeroMQ", + "$(PROJECT_DIR)/dependencies/libzmq", + "$(PROJECT_DIR)/Dependencies/libzmq", + ); + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = "-L/usr/local/lib "; + PRODUCT_BUNDLE_IDENTIFIER = "com.zewo.SwiftZMQ-iOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_INCLUDE_PATHS = "$(SRCROOT)/Dependencies"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 539074061C50484E00E8F9C6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COMBINE_HIDPI_IMAGES = YES; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + FRAMEWORK_VERSION = A; + INFOPLIST_FILE = SwiftZMQ/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)", + "$(PROJECT_DIR)/Dependencies/ZeroMQ", + "$(PROJECT_DIR)/dependencies/libzmq", + "$(PROJECT_DIR)/Dependencies/libzmq", + ); + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = "-L/usr/local/lib "; + PRODUCT_BUNDLE_IDENTIFIER = "com.zewo.SwiftZMQ-iOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_INCLUDE_PATHS = "$(SRCROOT)/Dependencies"; + }; + name = Release; + }; B00ED9F21BD8A2CD00BBBBAE /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -298,12 +500,11 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = /usr/local/include; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LIBRARY_SEARCH_PATHS = /usr/local/lib; MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - OTHER_LDFLAGS = "-lzmq"; - SDKROOT = macosx; + OTHER_LDFLAGS = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -341,11 +542,11 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = /usr/local/include; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LIBRARY_SEARCH_PATHS = /usr/local/lib; MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-lzmq"; - SDKROOT = macosx; + OTHER_LDFLAGS = ""; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -354,6 +555,7 @@ B00ED9F51BD8A2CD00BBBBAE /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; @@ -368,14 +570,15 @@ "$(inherited)", "$(PROJECT_DIR)", "$(PROJECT_DIR)/Dependencies/ZeroMQ", + "$(PROJECT_DIR)/dependencies/libzmq", + "$(PROJECT_DIR)/Dependencies/libzmq", ); + MACOSX_DEPLOYMENT_TARGET = 10.9; OTHER_CFLAGS = ""; - OTHER_LDFLAGS = ( - "-L/usr/local/lib", - "-lzmq", - ); + OTHER_LDFLAGS = "-L/usr/local/lib"; PRODUCT_BUNDLE_IDENTIFIER = com.zewo.SwiftZMQ; PRODUCT_NAME = SwiftZMQ; + SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_INCLUDE_PATHS = "$(SRCROOT)/Dependencies"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -385,6 +588,7 @@ B00ED9F61BD8A2CD00BBBBAE /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; @@ -399,14 +603,15 @@ "$(inherited)", "$(PROJECT_DIR)", "$(PROJECT_DIR)/Dependencies/ZeroMQ", + "$(PROJECT_DIR)/dependencies/libzmq", + "$(PROJECT_DIR)/Dependencies/libzmq", ); + MACOSX_DEPLOYMENT_TARGET = 10.9; OTHER_CFLAGS = ""; - OTHER_LDFLAGS = ( - "-L/usr/local/lib", - "-lzmq", - ); + OTHER_LDFLAGS = "-L/usr/local/lib"; PRODUCT_BUNDLE_IDENTIFIER = com.zewo.SwiftZMQ; PRODUCT_NAME = SwiftZMQ; + SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_INCLUDE_PATHS = "$(SRCROOT)/Dependencies"; }; @@ -418,6 +623,7 @@ COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = SwiftZMQ/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + OTHER_LDFLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = com.zewo.SwiftZMQTests; PRODUCT_NAME = SwiftZMQTests; }; @@ -429,6 +635,7 @@ COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = SwiftZMQ/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + OTHER_LDFLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = com.zewo.SwiftZMQTests; PRODUCT_NAME = SwiftZMQTests; }; @@ -437,6 +644,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 539074041C50484E00E8F9C6 /* Build configuration list for PBXNativeTarget "SwiftZMQ_iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 539074051C50484E00E8F9C6 /* Debug */, + 539074061C50484E00E8F9C6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; B00ED9DA1BD8A2CD00BBBBAE /* Build configuration list for PBXProject "SwiftZMQ" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/SwiftZMQ.xcodeproj/xcshareddata/xcschemes/SwiftZMQ OSX.xcscheme b/SwiftZMQ.xcodeproj/xcshareddata/xcschemes/SwiftZMQ OSX.xcscheme index f498780..8fe3e37 100644 --- a/SwiftZMQ.xcodeproj/xcshareddata/xcschemes/SwiftZMQ OSX.xcscheme +++ b/SwiftZMQ.xcodeproj/xcshareddata/xcschemes/SwiftZMQ OSX.xcscheme @@ -1,6 +1,6 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SwiftZMQ/Context.swift b/SwiftZMQ/Context.swift index 2489a03..aaf94d5 100644 --- a/SwiftZMQ/Context.swift +++ b/SwiftZMQ/Context.swift @@ -37,6 +37,8 @@ public enum SocketType { case Pull case Pair case Stream + case Server + case Client } extension SocketType { @@ -54,6 +56,9 @@ extension SocketType { case ZMQ_PULL: self = Pull case ZMQ_PAIR: self = Pair case ZMQ_STREAM: self = Stream + case ZMQ_SERVER: self = Server + case ZMQ_CLIENT: self = Client + default: return nil } } @@ -74,6 +79,8 @@ extension SocketType { case .Pull: return ZMQ_PULL case .Pair: return ZMQ_PAIR case .Stream: return ZMQ_STREAM + case .Server: return ZMQ_SERVER + case .Client: return ZMQ_CLIENT } } }