1*9880d681SAndroid Build Coastguard Workerfunction(llvm_create_cross_target_internal target_name toolchain buildtype) 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker if(NOT DEFINED LLVM_${target_name}_BUILD) 4*9880d681SAndroid Build Coastguard Worker set(LLVM_${target_name}_BUILD "${CMAKE_BINARY_DIR}/${target_name}") 5*9880d681SAndroid Build Coastguard Worker set(LLVM_${target_name}_BUILD ${LLVM_${target_name}_BUILD} PARENT_SCOPE) 6*9880d681SAndroid Build Coastguard Worker message(STATUS "Setting native build dir to " ${LLVM_${target_name}_BUILD}) 7*9880d681SAndroid Build Coastguard Worker endif(NOT DEFINED LLVM_${target_name}_BUILD) 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Worker if (EXISTS ${LLVM_MAIN_SRC_DIR}/cmake/platforms/${toolchain}.cmake) 10*9880d681SAndroid Build Coastguard Worker set(CROSS_TOOLCHAIN_FLAGS_${target_name} 11*9880d681SAndroid Build Coastguard Worker -DCMAKE_TOOLCHAIN_FILE=\"${LLVM_MAIN_SRC_DIR}/cmake/platforms/${toolchain}.cmake\" 12*9880d681SAndroid Build Coastguard Worker CACHE STRING "Toolchain file for ${target_name}") 13*9880d681SAndroid Build Coastguard Worker endif() 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker add_custom_command(OUTPUT ${LLVM_${target_name}_BUILD} 16*9880d681SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -E make_directory ${LLVM_${target_name}_BUILD} 17*9880d681SAndroid Build Coastguard Worker COMMENT "Creating ${LLVM_${target_name}_BUILD}...") 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker add_custom_command(OUTPUT ${LLVM_${target_name}_BUILD}/CMakeCache.txt 20*9880d681SAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" 21*9880d681SAndroid Build Coastguard Worker ${CROSS_TOOLCHAIN_FLAGS_${target_name}} ${CMAKE_SOURCE_DIR} 22*9880d681SAndroid Build Coastguard Worker -DLLVM_TARGET_IS_CROSSCOMPILE_HOST=TRUE 23*9880d681SAndroid Build Coastguard Worker WORKING_DIRECTORY ${LLVM_${target_name}_BUILD} 24*9880d681SAndroid Build Coastguard Worker DEPENDS ${LLVM_${target_name}_BUILD} 25*9880d681SAndroid Build Coastguard Worker COMMENT "Configuring ${target_name} LLVM...") 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker add_custom_target(CONFIGURE_LLVM_${target_name} 28*9880d681SAndroid Build Coastguard Worker DEPENDS ${LLVM_${target_name}_BUILD}/CMakeCache.txt) 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Worker set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES 31*9880d681SAndroid Build Coastguard Worker ${LLVM_${target_name}_BUILD}) 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker if(NOT IS_DIRECTORY ${LLVM_${target_name}_BUILD}) 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Worker message(STATUS "Configuring ${target_name} build...") 37*9880d681SAndroid Build Coastguard Worker execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory 38*9880d681SAndroid Build Coastguard Worker ${LLVM_${target_name}_BUILD} ) 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker message(STATUS "Configuring ${target_name} targets...") 41*9880d681SAndroid Build Coastguard Worker if (buildtype) 42*9880d681SAndroid Build Coastguard Worker set(build_type_flags "-DCMAKE_BUILD_TYPE=${buildtype}") 43*9880d681SAndroid Build Coastguard Worker endif() 44*9880d681SAndroid Build Coastguard Worker execute_process(COMMAND ${CMAKE_COMMAND} ${build_type_flags} 45*9880d681SAndroid Build Coastguard Worker -G "${CMAKE_GENERATOR}" -DLLVM_TARGETS_TO_BUILD=${LLVM_TARGETS_TO_BUILD} 46*9880d681SAndroid Build Coastguard Worker ${CROSS_TOOLCHAIN_FLAGS_${target_name}} ${CMAKE_SOURCE_DIR} 47*9880d681SAndroid Build Coastguard Worker -DLLVM_TARGET_IS_CROSSCOMPILE_HOST=TRUE 48*9880d681SAndroid Build Coastguard Worker WORKING_DIRECTORY ${LLVM_${target_name}_BUILD} ) 49*9880d681SAndroid Build Coastguard Worker endif(NOT IS_DIRECTORY ${LLVM_${target_name}_BUILD}) 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Workerendfunction() 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Workerfunction(llvm_create_cross_target target_name sysroot) 54*9880d681SAndroid Build Coastguard Worker llvm_create_cross_target_internal(${target_name} ${sysroot} ${CMAKE_BUILD_TYPE}) 55*9880d681SAndroid Build Coastguard Workerendfunction() 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Workerllvm_create_cross_target_internal(NATIVE "" Release) 58