├── README.md └── llvm_build_sh.sh /README.md: -------------------------------------------------------------------------------- 1 | ### OLLVM-Project 2 | 3 | `OLLVM-Project` based on [LLVM](https://github.com/llvm/llvm-project) and [obfuscator](https://github.com/obfuscator-llvm/obfuscator) 4 | 5 | ### Install 6 | * clang 7 | ``` 8 | ./llvm_build_sh.sh clang ollvm-project 9 | ``` 10 | 11 | * xcode project 12 | ``` 13 | ./llvm_build_sh.sh xcode ollvm-project 14 | ``` 15 | 16 | * xcode toolchain 17 | ``` 18 | ./llvm_build_sh.sh toolchain ollvm-project 19 | ``` 20 | 21 | 22 | ### Version 23 | * [11.0.0](https://github.com/TannerJin/ollvm-project/tree/release/11.0) 24 | 25 | * [apple_12.0.0](https://github.com/TannerJin/ollvm-project/tree/release/apple_12.0.0) 26 | -------------------------------------------------------------------------------- /llvm_build_sh.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # llvm_build_sh.sh 4 | # StringTest 5 | # 6 | # Created by jintao on 2021/1/12. 7 | # Copyright © 2021 jintao. All rights reserved. 8 | 9 | llvmBuildFlag=$1 10 | llvmProject=$2 11 | 12 | # 编译工具链 13 | function build_xcode_toolchain() { 14 | echo "Begin build xcode toolchain..." 15 | 16 | SRC_DIR=$PWD/$llvmProject 17 | BUILD_DIR=$PWD/$llvmProject-XcodeToolchain 18 | 19 | rm -rf $BUILD_DIR/* 20 | mkdir -p $BUILD_DIR && cd $_ 21 | 22 | cmake -G "Ninja" \ 23 | -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;compiler-rt" \ 24 | -DCMAKE_BUILD_TYPE=MinSizeRel \ 25 | -DLLVM_APPEND_VC_REV=on \ 26 | -DLLDB_USE_SYSTEM_DEBUGSERVER=YES \ 27 | -DLLVM_CREATE_XCODE_TOOLCHAIN=on \ 28 | -DCMAKE_INSTALL_PREFIX=~/Library/Developer/ \ 29 | $SRC_DIR/llvm 30 | 31 | echo "Ninja build xcode_toolchain..." 32 | ninja 33 | 34 | echo "Ninja Install xcode_toolchain..." 35 | ninja install-xcode-toolchain 36 | } 37 | 38 | # 编译clang 39 | function build_clang() { 40 | echo "Begin build clang..." 41 | 42 | SRC_DIR=$PWD/$llvmProject 43 | BUILD_DIR=$PWD/$llvmProject-clang 44 | 45 | for arg; do 46 | case $arg in 47 | --src=*) SRC_DIR="${arg##*=}"; shift ;; 48 | --build=*) BUILD_DIR="${arg##*=}"; shift ;; 49 | *) echo "Incorrect usage." >&2; exit 1 ;; 50 | esac 51 | done 52 | 53 | echo 54 | echo "SRC_DIR . . . . = $SRC_DIR" 55 | echo "BUILD_DIR . . . = $BUILD_DIR" 56 | echo 57 | 58 | NINJA=$(xcrun -f ninja) 59 | 60 | HOST_COMPILER_PATH=$(dirname $(xcrun -f clang)) 61 | 62 | mkdir -p $BUILD_DIR && cd $_ 63 | 64 | set -x 65 | xcrun cmake -G Ninja \ 66 | -DCMAKE_MAKE_PROGRAM=$NINJA \ 67 | -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON \ 68 | -DCMAKE_C_COMPILER=$HOST_COMPILER_PATH/clang \ 69 | -DCMAKE_CXX_COMPILER=$HOST_COMPILER_PATH/clang++ \ 70 | -DLLVM_TARGETS_TO_BUILD="X86" \ 71 | -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;compiler-rt" \ 72 | -DLLDB_INCLUDE_TESTS=OFF \ 73 | $SRC_DIR/llvm && $NINJA 74 | } 75 | 76 | # 编译Xcode 77 | function build_xcode() { 78 | echo "Begin build xcode project..." 79 | 80 | SRC_DIR=$PWD/$llvmProject 81 | BUILD_DIR=$PWD/$llvmProject-Xcode 82 | 83 | rm -rf $BUILD_DIR/* 84 | mkdir -p $BUILD_DIR && cd $_ 85 | 86 | cmake -G "Xcode" \ 87 | $SRC_DIR/llvm 88 | } 89 | 90 | function build() { 91 | if [ $llvmBuildFlag = toolchain ] 92 | then 93 | build_xcode_toolchain 94 | elif [ $llvmBuildFlag == clang ] 95 | then 96 | build_clang 97 | elif [ $llvmBuildFlag == xcode ] 98 | then 99 | build_xcode 100 | else 101 | echo "无效的编译参数" 102 | fi 103 | } 104 | 105 | build 106 | --------------------------------------------------------------------------------