Skip to content

Commit

Permalink
Merge pull request #537 from Chilledheart/build_bring_in_ios_support
Browse files Browse the repository at this point in the history
  • Loading branch information
Keeyou committed Dec 16, 2023
2 parents 556783a + c319588 commit faafaad
Show file tree
Hide file tree
Showing 7 changed files with 1,172 additions and 11 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -69,3 +69,4 @@ yass.spec
/android/yass/src/main/res/drawable/icon.png
local.properties
/.gradle
*.apk
8 changes: 4 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1659,7 +1659,7 @@ if (HAVE_FLOCK)
add_definitions(-DHAVE_FLOCK)
endif()

if (NOT WIN32)
if (NOT WIN32 AND NOT APPLE)
check_library_exists(c pipe2 "" HAVE_PIPE2)
check_library_exists(c dup3 "" HAVE_DUP3)
endif()
Expand Down Expand Up @@ -1783,7 +1783,7 @@ elseif (WIN32 AND GUI)
else()
set(GUI_LIBRARIES rasapi32 wininet shlwapi winmm gdi32 comdlg32 ole32 comctl32 shell32)
endif()
elseif (APPLE AND GUI AND COMPILER_CLANG)
elseif (APPLE AND GUI AND NOT IOS)
message(STATUS "Compiling with GUI support: Cocoa")
find_library(COCOA_LIBRARY Cocoa REQUIRED)
# Locate Interface Builder Tool, needed to build things like Storyboards outside of Xcode.
Expand Down Expand Up @@ -3341,7 +3341,7 @@ if (CLI)
yass_base
)

if (NOT CMAKE_SKIP_INSTALL_RULES AND NOT WIN32)
if (NOT CMAKE_SKIP_INSTALL_RULES AND NOT WIN32 AND NOT IOS)
install(TARGETS yass_cli RUNTIME DESTINATION bin)
# TODO add freebsd rc files
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND NOT ANDROID AND NOT OHOS)
Expand Down Expand Up @@ -3382,7 +3382,7 @@ if (SERVER)
yass_base
)

if (NOT CMAKE_SKIP_INSTALL_RULES AND NOT WIN32)
if (NOT CMAKE_SKIP_INSTALL_RULES AND NOT WIN32 AND NOT IOS)
install(TARGETS yass_server RUNTIME DESTINATION bin)
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND NOT ANDROID AND NOT OHOS)
install(FILES yass-server.json.sample RENAME server.json DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/yass)
Expand Down
1,122 changes: 1,122 additions & 0 deletions cmake/platforms/ios.toolchain.cmake

Large diffs are not rendered by default.

6 changes: 4 additions & 2 deletions src/core/asio.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ struct IUnknown;
#endif
#include <wincrypt.h>
#undef X509_NAME
#elif defined(__APPLE__)
#elif BUILDFLAG(IS_MAC)
#include <Security/Security.h>
#endif

Expand Down Expand Up @@ -306,7 +306,9 @@ static int load_ca_to_ssl_ctx_system(SSL_CTX* ssl_ctx) {
}
LOG(INFO) << "Loading ca from SChannel: " << count << " certificates";
return count;
#elif defined(__APPLE__)
#elif BUILDFLAG(IS_IOS)
return 0;
#elif BUILDFLAG(IS_MAC)
SecTrustSettingsDomain domain = kSecTrustSettingsDomainSystem;
CFArrayRef certs;
OSStatus status;
Expand Down
6 changes: 2 additions & 4 deletions src/core/rand_util_posix.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

#if defined(__linux__) || defined(__ANDROID__)
#include "linux_syscall_support.h"
#elif defined(__APPLE__)
#elif BUILDFLAG(IS_MAC)
// TODO(crbug.com/995996): Waiting for this header to appear in the iOS SDK.
// (See below.)
#include <sys/random.h>
Expand Down Expand Up @@ -87,15 +87,13 @@ void RandBytes(void* output, size_t output_length) {
MSAN_UNPOISON(output, output_length);
return;
}
#elif defined(__APPLE__)
#if (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12)
#elif BUILDFLAG(IS_MAC)
// TODO(crbug.com/995996): Enable this on iOS too, when sys/random.h arrives
// in its SDK.
if (getentropy(output, output_length) == 0) {
return;
}
#endif
#endif // defined(__APPLE__)

// If the OS-specific mechanisms didn't work, fall through to reading from
// urandom.
Expand Down
2 changes: 1 addition & 1 deletion third_party/boringssl/src
Submodule src updated 1 files
+0 −4 CMakeLists.txt
38 changes: 38 additions & 0 deletions tools/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ var macosxVersionMinFlag string
var macosxUniversalBuildFlag bool
var macosxCodeSignIdentityFlag string

var iosVersionMinFlag string

var msvcTargetArchFlag string
var msvcCrtLinkageFlag string
var msvcAllowXpFlag bool
Expand Down Expand Up @@ -147,6 +149,8 @@ func InitFlag() {
flag.BoolVar(&macosxUniversalBuildFlag, "macosx-universal-build", getEnvBool("ENABLE_OSX_UNIVERSAL_BUILD", true), "Enable Mac OS X Universal Build")
flag.StringVar(&macosxCodeSignIdentityFlag, "macosx-codesign-identity", getEnv("CODESIGN_IDENTITY", "-"), "Set Mac OS X CodeSign Identity")

flag.StringVar(&iosVersionMinFlag, "ios-version-min", getEnv("MACOSX_DEPLOYMENT_TARGET", "13.0"), "Set iOS deployment target, such as 13.0")

flag.StringVar(&msvcTargetArchFlag, "msvc-tgt-arch", getEnv("VSCMD_ARG_TGT_ARCH", "x64"), "Set Visual C++ Target Achitecture")
flag.StringVar(&msvcCrtLinkageFlag, "msvc-crt-linkage", getEnv("MSVC_CRT_LINKAGE", "static"), "Set Visual C++ CRT Linkage")
flag.BoolVar(&msvcAllowXpFlag, "msvc-allow-xp", getEnvBool("MSVC_ALLOW_XP", false), "Enable Windows XP Build")
Expand Down Expand Up @@ -265,6 +269,11 @@ func prebuildFindSourceDirectory() {
buildDir = fmt.Sprintf("build-%s%d-%s", systemNameFlag, freebsdAbiFlag, archFlag)
} else if systemNameFlag == "android" {
buildDir = fmt.Sprintf("build-%s%d-%s", systemNameFlag, androidApiLevel, archFlag)
} else if systemNameFlag == "ios" {
buildDir = fmt.Sprintf("build-%s-%s", systemNameFlag, archFlag)
if subSystemNameFlag != "" {
buildDir = fmt.Sprintf("build-%s-%s-%s", systemNameFlag, subSystemNameFlag, archFlag)
}
} else {
arch := archFlag
if systemNameFlag == "darwin" && macosxUniversalBuildFlag {
Expand Down Expand Up @@ -719,6 +728,35 @@ func buildStageGenerateBuildScript() {
}
}

if systemNameFlag == "ios" {
cmakeArgs = append(cmakeArgs, fmt.Sprintf("-DCMAKE_TOOLCHAIN_FILE=%s/../cmake/platforms/ios.toolchain.cmake", buildDir))
cmakeArgs = append(cmakeArgs, fmt.Sprintf("-DDEPLOYMENT_TARGET=%s", iosVersionMinFlag))
platform := "OS"
if subSystemNameFlag == "simulator" {
if archFlag == "x86" {
platform = "SIMULATOR"
} else if archFlag == "x86_64" {
platform = "SIMULATOR64"
} else if archFlag == "arm64" {
platform = "SIMULATORARM64"
} else {
glog.Fatalf("Invalid archFlag: %s", archFlag);
}
} else if subSystemNameFlag != "" {
glog.Fatalf("Invalid subSystemNameFlag: %s", subSystemNameFlag);
} else {
if archFlag == "arm" {
platform = "OS"
} else if archFlag == "arm64" {
platform = "OS64"
} else {
glog.Fatalf("Invalid archFlag: %s", archFlag);
}
}

cmakeArgs = append(cmakeArgs, fmt.Sprintf("-DPLATFORM=%s", platform))
}

if systemNameFlag == "android" {
if _, err := os.Stat(androidNdkDir); errors.Is(err, os.ErrNotExist) {
glog.Fatalf("Android Ndk Directory at %s demanded", androidNdkDir);
Expand Down

0 comments on commit faafaad

Please sign in to comment.