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 source/backend/vulkan/compiler/AllShader.cpp
include/MNN/backend/vulkan/shaders/AllShader.h include/MNN/backend/vulkan/shaders/AllShader.h
.idea .idea
project/ios/ios_64 project/ios/iOS_64
project/ios/ios_32 project/ios/iOS_32
project/ios/MNN.framework 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/ pymnn_build/

View File

@ -176,9 +176,18 @@ elseif(CMAKE_SYSTEM_NAME MATCHES "^Android" OR (UNIX AND NOT APPLE))
endif() endif()
if(CMAKE_SYSTEM_NAME MATCHES "^Android") if(CMAKE_SYSTEM_NAME MATCHES "^Android")
add_definitions(-DMNN_BUILD_FOR_ANDROID) add_definitions(-DMNN_BUILD_FOR_ANDROID)
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm") endif()
add_definitions(-mfloat-abi=softfp -mfpu=neon)
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() endif()

View File

@ -1,30 +1,56 @@
#!/bin/sh #!/bin/sh
set -e
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
pushd ${SCRIPT_DIR} pushd ${SCRIPT_DIR}
rm -rf ios_64
mkdir ios_64 rm -rf iOS_64
cd ios_64 mkdir 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 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" 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 ../ cd ../
rm -rf ios_32 rm -rf iOS_32
mkdir ios_32 mkdir iOS_32
cd 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 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" 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 ../ 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" 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 lipo -create ./MNN_iOS64 ./MNN_iOS32 ./MNN_SIM_64 ./MNN_SIM_32 -output output/MNN.framework/MNN
rm ios_32/Release-iphoneos/MNN.framework/MNN_32 echo "Cleaning up"
echo "Patching Framework Headers" rm ./MNN_iOS64 ./MNN_iOS32 ./MNN_SIM_64 ./MNN_SIM_32
rm -rf ./MNN.framework echo "Patching framework Headers"
cp -R ios_32/Release-iphoneos/MNN.framework ./MNN.framework cp -R ../../include/MNN/expr output/MNN.framework/Headers/expr
cp -R ../../include/MNN/expr ./MNN.framework/Headers/expr echo "Unified Framework built at ${PWD}/output/"
popd popd

View File

@ -1,45 +1,47 @@
include_directories(${CMAKE_CURRENT_LIST_DIR}/source/grad) IF(MNN_BUILD_TRAIN)
include_directories(${CMAKE_CURRENT_LIST_DIR}/source/optimizer) include_directories(${CMAKE_CURRENT_LIST_DIR}/source/grad)
include_directories(${CMAKE_CURRENT_LIST_DIR}/source/parameters) include_directories(${CMAKE_CURRENT_LIST_DIR}/source/optimizer)
include_directories(${CMAKE_CURRENT_LIST_DIR}/source/module) include_directories(${CMAKE_CURRENT_LIST_DIR}/source/parameters)
include_directories(${CMAKE_CURRENT_LIST_DIR}/source/transformer) include_directories(${CMAKE_CURRENT_LIST_DIR}/source/module)
include_directories(${CMAKE_CURRENT_LIST_DIR}/source/data) include_directories(${CMAKE_CURRENT_LIST_DIR}/source/transformer)
file(GLOB GRAD ${CMAKE_CURRENT_LIST_DIR}/source/grad/*) include_directories(${CMAKE_CURRENT_LIST_DIR}/source/data)
file(GLOB TRANSFORMER ${CMAKE_CURRENT_LIST_DIR}/source/transformer/*) file(GLOB GRAD ${CMAKE_CURRENT_LIST_DIR}/source/grad/*)
file(GLOB MODULES ${CMAKE_CURRENT_LIST_DIR}/source/module/*) file(GLOB TRANSFORMER ${CMAKE_CURRENT_LIST_DIR}/source/transformer/*)
file(GLOB PARAMETER ${CMAKE_CURRENT_LIST_DIR}/source/parameters/*) file(GLOB MODULES ${CMAKE_CURRENT_LIST_DIR}/source/module/*)
file(GLOB OPTIMIZER ${CMAKE_CURRENT_LIST_DIR}/source/optimizer/*) file(GLOB PARAMETER ${CMAKE_CURRENT_LIST_DIR}/source/parameters/*)
file(GLOB DATALOADER ${CMAKE_CURRENT_LIST_DIR}/source/data/*) 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}) add_library(MNNTrain SHARED ${GRAD} ${BASIC_INCLUDE} ${PARAMETER} ${OPTIMIZER} ${MODULES} ${DATALOADER} ${TRANSFORMER})
target_link_libraries(MNNTrain ${MNN_DEPS}) target_link_libraries(MNNTrain ${MNN_DEPS})
IF(CMAKE_BUILD_TYPE MATCHES Release) IF(CMAKE_BUILD_TYPE MATCHES Release)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3") 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() 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()