Fix Windows CI / Enhance iOS Build Script (#568)

* Add back MNN_BUILD_HARD option

* Add simulator to buildiOS.sh
This commit is contained in:
Zhang 2020-01-07 18:47:22 +08:00 committed by GitHub
parent 2b2d61046f
commit 2e3d5a318b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 110 additions and 67 deletions

12
.gitignore vendored
View File

@ -357,8 +357,14 @@ include/MNN/backend/opengl/shaders/AllShader.h
source/backend/vulkan/compiler/AllShader.cpp
include/MNN/backend/vulkan/shaders/AllShader.h
.idea
project/ios/ios_64
project/ios/ios_32
project/ios/MNN.framework
project/ios/iOS_64
project/ios/iOS_32
project/ios/SIM_32
project/ios/SIM_64
project/ios/out/
project/ios/MNN_iOS64
project/ios/MNN_iOS32
project/ios/MNN_SIM_32
project/ios/MNN_SIM_64
pymnn_build/

View File

@ -176,9 +176,18 @@ elseif(CMAKE_SYSTEM_NAME MATCHES "^Android" OR (UNIX AND NOT APPLE))
endif()
if(CMAKE_SYSTEM_NAME MATCHES "^Android")
add_definitions(-DMNN_BUILD_FOR_ANDROID)
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
add_definitions(-mfloat-abi=softfp -mfpu=neon)
endif()
endif()
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
if(CMAKE_SYSTEM_NAME MATCHES "^Android")
add_definitions(-mfloat-abi=softfp -mfpu=neon)
else()
IF(MNN_BUILD_HARD)
add_definitions(-mfloat-abi=hard)
ELSE()
add_definitions(-mfloat-abi=softfp)
ENDIF()
endif()
endif()

View File

@ -1,30 +1,56 @@
#!/bin/sh
set -e
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
pushd ${SCRIPT_DIR}
rm -rf ios_64
mkdir ios_64
cd ios_64
cmake ../../../ -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../../../cmake/ios.toolchain.cmake -DMNN_METAL=ON -DIOS_ARCH="arm64" -DENABLE_BITCODE=0 -G Xcode
rm -rf iOS_64
mkdir iOS_64
cd iOS_64
cmake ../../../ -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../../../cmake/ios.toolchain.cmake -DMNN_METAL=ON -DIOS_ARCH="arm64" -DMNN_AAPL_FMWK=ON -DENABLE_BITCODE=0 -G Xcode
echo "Building AArch64"
xcodebuild ONLY_ACTIVE_ARCH=NO CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -configuration Release -scheme MNN -target MNN -sdk iphoneos -quiet -DMNN_AAPL_FMWK=ON
xcodebuild ONLY_ACTIVE_ARCH=NO CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -configuration Release -scheme MNN -target MNN -sdk iphoneos -quiet
cd ../
rm -rf ios_32
mkdir ios_32
cd ios_32
cmake ../../../ -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../../../cmake/ios.toolchain.cmake -DMNN_METAL=ON -DIOS_ARCH="armv7;armv7s" -DENABLE_BITCODE=0 -G Xcode
rm -rf iOS_32
mkdir iOS_32
cd iOS_32
cmake ../../../ -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../../../cmake/ios.toolchain.cmake -DMNN_METAL=ON -DIOS_ARCH="armv7;armv7s" -DMNN_AAPL_FMWK=ON -DENABLE_BITCODE=0 -G Xcode
echo "Building AArch32"
xcodebuild ONLY_ACTIVE_ARCH=NO CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -configuration Release -scheme MNN -target MNN -sdk iphoneos -quiet -DMNN_AAPL_FMWK=ON
xcodebuild ONLY_ACTIVE_ARCH=NO CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -configuration Release -scheme MNN -target MNN -sdk iphoneos -quiet
cd ../
mv ios_32/Release-iphoneos/MNN.framework/MNN ios_32/Release-iphoneos/MNN.framework/MNN_32
rm -rf SIM_32
mkdir SIM_32
cd SIM_32
cmake ../../../ -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../../../cmake/ios.toolchain.cmake -DMNN_METAL=ON -DPLATFORM=SIMULATOR -DENABLE_BITCODE=0 -DMNN_AAPL_FMWK=ON -G Xcode
echo "Building Simulator32"
xcodebuild ONLY_ACTIVE_ARCH=NO CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -configuration Release -scheme MNN -target MNN -sdk iphonesimulator -quiet
cd ../
rm -rf SIM_64
mkdir SIM_64
cd SIM_64
cmake ../../../ -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../../../cmake/ios.toolchain.cmake -DMNN_METAL=ON -DPLATFORM=SIMULATOR64 -DENABLE_BITCODE=0 -DMNN_AAPL_FMWK=ON -G Xcode
echo "Building Simulator64"
xcodebuild ONLY_ACTIVE_ARCH=NO CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -configuration Release -scheme MNN -target MNN -sdk iphonesimulator -quiet
cd ../
echo "Moving Slices"
rm -rf output/
mkdir output
mv iOS_64/Release-iphoneos/MNN.framework/MNN ./MNN_iOS64
mv iOS_32/Release-iphoneos/MNN.framework/MNN ./MNN_iOS32
mv SIM_32/Release-iphonesimulator/MNN.framework/MNN ./MNN_SIM_32
mv SIM_64/Release-iphonesimulator/MNN.framework/MNN ./MNN_SIM_64
mv iOS_32/Release-iphoneos/MNN.framework output/
echo "Creating Fat Binary"
lipo -create ios_32/Release-iphoneos/MNN.framework/MNN_32 ios_64/Release-iphoneos/MNN.framework/MNN -output ios_32/Release-iphoneos/MNN.framework/MNN
rm ios_32/Release-iphoneos/MNN.framework/MNN_32
echo "Patching Framework Headers"
rm -rf ./MNN.framework
cp -R ios_32/Release-iphoneos/MNN.framework ./MNN.framework
cp -R ../../include/MNN/expr ./MNN.framework/Headers/expr
lipo -create ./MNN_iOS64 ./MNN_iOS32 ./MNN_SIM_64 ./MNN_SIM_32 -output output/MNN.framework/MNN
echo "Cleaning up"
rm ./MNN_iOS64 ./MNN_iOS32 ./MNN_SIM_64 ./MNN_SIM_32
echo "Patching framework Headers"
cp -R ../../include/MNN/expr output/MNN.framework/Headers/expr
echo "Unified Framework built at ${PWD}/output/"
popd

View File

@ -1,45 +1,47 @@
include_directories(${CMAKE_CURRENT_LIST_DIR}/source/grad)
include_directories(${CMAKE_CURRENT_LIST_DIR}/source/optimizer)
include_directories(${CMAKE_CURRENT_LIST_DIR}/source/parameters)
include_directories(${CMAKE_CURRENT_LIST_DIR}/source/module)
include_directories(${CMAKE_CURRENT_LIST_DIR}/source/transformer)
include_directories(${CMAKE_CURRENT_LIST_DIR}/source/data)
file(GLOB GRAD ${CMAKE_CURRENT_LIST_DIR}/source/grad/*)
file(GLOB TRANSFORMER ${CMAKE_CURRENT_LIST_DIR}/source/transformer/*)
file(GLOB MODULES ${CMAKE_CURRENT_LIST_DIR}/source/module/*)
file(GLOB PARAMETER ${CMAKE_CURRENT_LIST_DIR}/source/parameters/*)
file(GLOB OPTIMIZER ${CMAKE_CURRENT_LIST_DIR}/source/optimizer/*)
file(GLOB DATALOADER ${CMAKE_CURRENT_LIST_DIR}/source/data/*)
IF(MNN_BUILD_TRAIN)
include_directories(${CMAKE_CURRENT_LIST_DIR}/source/grad)
include_directories(${CMAKE_CURRENT_LIST_DIR}/source/optimizer)
include_directories(${CMAKE_CURRENT_LIST_DIR}/source/parameters)
include_directories(${CMAKE_CURRENT_LIST_DIR}/source/module)
include_directories(${CMAKE_CURRENT_LIST_DIR}/source/transformer)
include_directories(${CMAKE_CURRENT_LIST_DIR}/source/data)
file(GLOB GRAD ${CMAKE_CURRENT_LIST_DIR}/source/grad/*)
file(GLOB TRANSFORMER ${CMAKE_CURRENT_LIST_DIR}/source/transformer/*)
file(GLOB MODULES ${CMAKE_CURRENT_LIST_DIR}/source/module/*)
file(GLOB PARAMETER ${CMAKE_CURRENT_LIST_DIR}/source/parameters/*)
file(GLOB OPTIMIZER ${CMAKE_CURRENT_LIST_DIR}/source/optimizer/*)
file(GLOB DATALOADER ${CMAKE_CURRENT_LIST_DIR}/source/data/*)
add_library(MNNTrain SHARED ${GRAD} ${BASIC_INCLUDE} ${PARAMETER} ${OPTIMIZER} ${MODULES} ${DATALOADER} ${TRANSFORMER})
target_link_libraries(MNNTrain ${MNN_DEPS})
IF(CMAKE_BUILD_TYPE MATCHES Release)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
add_library(MNNTrain SHARED ${GRAD} ${BASIC_INCLUDE} ${PARAMETER} ${OPTIMIZER} ${MODULES} ${DATALOADER} ${TRANSFORMER})
target_link_libraries(MNNTrain ${MNN_DEPS})
IF(CMAKE_BUILD_TYPE MATCHES Release)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
ENDIF()
add_executable(transformer.out ${CMAKE_CURRENT_LIST_DIR}/source/exec/transformerExecution.cpp)
target_link_libraries(transformer.out MNNTrain)
add_executable(train.out ${CMAKE_CURRENT_LIST_DIR}/source/exec/train.cpp ${SCHEMA} ${BASIC_INCLUDE})
target_link_libraries(train.out MNN)
add_executable(rawDataTransform.out ${CMAKE_CURRENT_LIST_DIR}/source/exec/rawDataTransform.cpp ${SCHEMA} ${BASIC_INCLUDE})
include_directories(../../3rd_party/imageHelper/)
add_executable(dataTransformer.out ${CMAKE_CURRENT_LIST_DIR}/source/exec/dataTransformer.cpp ${SCHEMA} ${BASIC_INCLUDE})
target_link_libraries(dataTransformer.out MNN)
option(MNN_USE_OPENCV "Use opencv" OFF)
file(GLOB DEMOSOURCE ${CMAKE_CURRENT_LIST_DIR}/source/demo/*)
add_executable(runTrainDemo.out ${DEMOSOURCE} ${BASIC_INCLUDE})
target_link_libraries(runTrainDemo.out MNNTrain)
if (MNN_USE_OPENCV)
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS_ORIGIN})
set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS_ORIGIN})
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_definitions(-D MNN_USE_OPENCV)
target_link_libraries(runTrainDemo.out ${OpenCV_LIBS})
endif()
ENDIF()
add_executable(transformer.out ${CMAKE_CURRENT_LIST_DIR}/source/exec/transformerExecution.cpp)
target_link_libraries(transformer.out MNNTrain)
add_executable(train.out ${CMAKE_CURRENT_LIST_DIR}/source/exec/train.cpp ${SCHEMA} ${BASIC_INCLUDE})
target_link_libraries(train.out MNN)
add_executable(rawDataTransform.out ${CMAKE_CURRENT_LIST_DIR}/source/exec/rawDataTransform.cpp ${SCHEMA} ${BASIC_INCLUDE})
include_directories(../../3rd_party/imageHelper/)
add_executable(dataTransformer.out ${CMAKE_CURRENT_LIST_DIR}/source/exec/dataTransformer.cpp ${SCHEMA} ${BASIC_INCLUDE})
target_link_libraries(dataTransformer.out MNN)
option(MNN_USE_OPENCV "Use opencv" OFF)
file(GLOB DEMOSOURCE ${CMAKE_CURRENT_LIST_DIR}/source/demo/*)
add_executable(runTrainDemo.out ${DEMOSOURCE} ${BASIC_INCLUDE})
target_link_libraries(runTrainDemo.out MNNTrain)
if (MNN_USE_OPENCV)
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS_ORIGIN})
set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS_ORIGIN})
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_definitions(-D MNN_USE_OPENCV)
target_link_libraries(runTrainDemo.out ${OpenCV_LIBS})
endif()