Browse Source

Added script to build with emscripten backend

pull/348/merge
Canming Huang 5 years ago
parent
commit
ab278277d9
  1. 12
      CMakeLists.txt
  2. 4
      Emgu.CV.Extern/CMakeLists.txt
  3. 9
      platforms/emscripten/cmake_configure.sh
  4. 6
      tests/cvextern_test/CMakeLists.txt

12
CMakeLists.txt

@ -114,6 +114,15 @@ ELSE()
SET(FREETYPE_LIBRARY "") SET(FREETYPE_LIBRARY "")
ENDIF() ENDIF()
#IF("${CMAKE_SYSTEM_NAME}" STREQUAL "Emscripten")
# SET(CMAKE_C_FLAGS_RELEASE "--save-bc ${CMAKE_SOURCE_DIR}/libs/bc/ ${CMAKE_C_FLAGS_RELEASE}")
# SET(CMAKE_CXX_FLAGS_RELEASE "--save-bc ${CMAKE_SOURCE_DIR}/libs/bc/ ${CMAKE_CXX_FLAGS_RELEASE}")
# SET(CMAKE_C_FLAGS_DEBUG "--save-bc ${CMAKE_SOURCE_DIR}/libs/bc/ ${CMAKE_C_FLAGS_DEBUG}")
# SET(CMAKE_CXX_FLAGS_DEBUG "--save-bc ${CMAKE_SOURCE_DIR}/libs/bc/ ${CMAKE_CXX_FLAGS_DEBUG}")
# SET(CMAKE_EXE_LINKER_FLAGS "--save-bc ${CMAKE_SOURCE_DIR}/libs/bc/ ${CMAKE_EXE_LINKER_FLAGS}")
# SET(CMAKE_SHARED_LINKER_FLAGS "--save-bc ${CMAKE_SOURCE_DIR}/libs/bc/ ${CMAKE_SHARED_LINKER_FLAGS}")
#ENDIF()
IF( NOT (NETFX_CORE OR ANDROID OR IOS ) ) IF( NOT (NETFX_CORE OR ANDROID OR IOS ) )
# IF (NOT WIN32) # IF (NOT WIN32)
@ -130,8 +139,7 @@ IF( NOT (NETFX_CORE OR ANDROID OR IOS ) )
SET(CMAKE_EXPORT_NO_PACKAGE_REGISTRY ON) SET(CMAKE_EXPORT_NO_PACKAGE_REGISTRY ON)
#ADD_SUBDIRECTORY(vtk) # always build vtk as static library #ADD_SUBDIRECTORY(vtk) # always build vtk as static library
SET(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_CACHE}) SET(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_CACHE})
ENDIF() ENDIF()
# IF (NOT WIN32) # IF (NOT WIN32)

4
Emgu.CV.Extern/CMakeLists.txt

@ -2936,11 +2936,15 @@ ENDIF()
#ENDIF() #ENDIF()
IF(IOS) IF(IOS)
add_library(${the_target} STATIC ${extern_srcs} ${extern_hdrs} ) add_library(${the_target} STATIC ${extern_srcs} ${extern_hdrs} )
ELSEIF(WIN32) ELSEIF(WIN32)
#add the version information for windows binary #add the version information for windows binary
add_library(${the_target} SHARED ${extern_srcs} ${extern_hdrs} ${PROJECT_SOURCE_DIR}/version.rc ) add_library(${the_target} SHARED ${extern_srcs} ${extern_hdrs} ${PROJECT_SOURCE_DIR}/version.rc )
ELSEIF("${CMAKE_SYSTEM_NAME}" STREQUAL "Emscripten")
add_library(${the_target} SHARED ${extern_srcs} ${extern_hdrs} )
set_target_properties(${the_target} PROPERTIES SUFFIX ".bc")
ELSE() ELSE()
add_library(${the_target} SHARED ${extern_srcs} ${extern_hdrs} ) add_library(${the_target} SHARED ${extern_srcs} ${extern_hdrs} )
IF (APPLE) IF (APPLE)

9
platforms/emscripten/cmake_configure.sh

@ -0,0 +1,9 @@
#!/bin/sh
cd "$(dirname "$0")"
mkdir -p build
cd build
CFLAGS=-fPIC CXXFLAGS=-fPIC emcmake cmake -DBUILD_TESTS:BOOL=FALSE -DBUILD_PERF_TESTS:BOOL=FALSE -DBUILD_opencv_apps:BOOL=FALSE -DBUILD_DOCS:BOOL=FALSE -DWITH_TBB:BOOL=TRUE -DWITH_CUDA:BOOL=FALSE -DWITH_IPP:BOOL=FALSE -DWITH_EIGEN:BOOL=FALSE -DOPENCV_EXTRA_MODULES_PATH=$PWD/../../../opencv_contrib/modules -DBUILD_opencv_ts:BOOL=FALSE -DBUILD_opencv_java:BOOL=FALSE -DBUILD_opencv_python2:BOOL=FALSE -DBUILD_opencv_python3:BOOL=FALSE -DBUILD_SHARED_LIBS:BOOL=FALSE -DCMAKE_BUILD_TYPE:String="Release" -DCMAKE_CXX_STANDARD:String="11" -DBUILD_ITT:BOOL=FALSE -DCV_ENABLE_INTRINSICS:BOOL=FALSE -DWITH_OPENCL:BOOL=OFF -DBUILD_JPEG:BOOL=TRUE -DBUILD_PNG:BOOL=TRUE -DEMGU_CV_WITH_TESSERACT:BOOL=FALSE $PWD/../../..
emmake make cvextern
cd ..

6
tests/cvextern_test/CMakeLists.txt

@ -120,7 +120,7 @@ IF(EMGU_ENABLE_SSE)
IF(MSVC AND EMGUCV_ARCH MATCHES "win32" AND (NOT CV_ICC)) IF(MSVC AND EMGUCV_ARCH MATCHES "win32" AND (NOT CV_ICC))
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE2") ## Optimization SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE2") ## Optimization
ENDIF() ENDIF()
IF (NOT WIN32)
IF ((NOT WIN32) AND NOT ("${CMAKE_SYSTEM_NAME}" STREQUAL "Emscripten"))
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -latomic") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -latomic")
ENDIF() ENDIF()
ENDIF() ENDIF()
@ -133,6 +133,10 @@ target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS}
# ${GEOTIFF_LIBRARY} # ${GEOTIFF_LIBRARY}
) )
IF("${CMAKE_SYSTEM_NAME}" STREQUAL "Emscripten")
set_target_properties(${the_target} PROPERTIES SUFFIX ".html")
ENDIF()
IF(DEFINED EMGUCV_PLATFORM_TOOLSET) IF(DEFINED EMGUCV_PLATFORM_TOOLSET)
set_target_properties(${the_target} PROPERTIES PLATFORM_TOOLSET ${EMGUCV_PLATFORM_TOOLSET}) set_target_properties(${the_target} PROPERTIES PLATFORM_TOOLSET ${EMGUCV_PLATFORM_TOOLSET})
ENDIF() ENDIF()

Loading…
Cancel
Save