浏览代码

chore(cross-compile.cmake): gen. it in ./configure

greatbridf 2 年之前
父节点
当前提交
9b18576715
共有 3 个文件被更改,包括 26 次插入3 次删除
  1. 1 0
      .gitignore
  2. 22 0
      configure
  3. 3 3
      cross-compile.cmake

+ 1 - 0
.gitignore

@@ -11,3 +11,4 @@ bx_enh_dbg.ini
 compile_commands.json
 
 Makefile
+cross-compile.cmake

+ 22 - 0
configure

@@ -6,6 +6,27 @@ event() {
     printf "$1... "
 }
 
+# $1: OS NAME
+# $2: CROSS COMPILE FLAG
+generate_cross_compile_script() {
+cat > cross-compile.cmake <<EOF
+set(CMAKE_SYSTEM_NAME $1)
+
+set(TOOLCHAIN_PATH_AND_PREFIX "$2")
+
+set(CMAKE_C_COMPILER \${TOOLCHAIN_PATH_AND_PREFIX}gcc)
+set(CMAKE_CXX_COMPILER \${TOOLCHAIN_PATH_AND_PREFIX}c++)
+set(CMAKE_AR \${TOOLCHAIN_PATH_AND_PREFIX}ar)
+set(CMAKE_LINKER \${TOOLCHAIN_PATH_AND_PREFIX}ld)
+set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
+
+SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+# for libraries and headers in the target directories
+SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+EOF
+}
+
 event "finding qemu"
 for item in $QEMU_EXECUTABLES; do
     if $item --version > /dev/null 2>&1; then
@@ -68,6 +89,7 @@ event "checking cross compiling"
 if [ "$CROSS_COMPILE" != "" ]; then
     echo "yes"
     CROSS_COMPILE_FLAG='--toolchain cross-compile.cmake'
+    generate_cross_compile_script "$OS" "$CROSS_COMPILE"
 else
     echo "no"
     CROSS_COMPILE_FLAG=

+ 3 - 3
cross-compile.cmake

@@ -1,8 +1,8 @@
-set(CMAKE_SYSTEM_NAME Linux)
+set(CMAKE_SYSTEM_NAME Darwin)
 
-set(TOOLCHAIN_PATH_AND_PREFIX "")
+set(TOOLCHAIN_PATH_AND_PREFIX "/usr/local/bin/x86_64-elf-")
 
-set(CMAKE_C_COMPILER ${TOOLCHAIN_PATH_AND_PREFIX}cc)
+set(CMAKE_C_COMPILER ${TOOLCHAIN_PATH_AND_PREFIX}gcc)
 set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PATH_AND_PREFIX}c++)
 set(CMAKE_AR ${TOOLCHAIN_PATH_AND_PREFIX}ar)
 set(CMAKE_LINKER ${TOOLCHAIN_PATH_AND_PREFIX}ld)