PS: I just realized that I misunderstood last part about OpenCV.js.

But if OpenCV.js can be built for WASM callable from JS, I'd imagine that 
creating a static WASM library instead should be quite trivial (maybe 
there's even already a build option for it).

On Monday, 26 April 2021 at 16:47:28 UTC+2 Floh wrote:

> The function TBB_machine_fetchadd4() looks like it's from Intel TBB 
> library (https://en.wikipedia.org/wiki/Threading_Building_Blocks), I 
> doubt TBB works as is on WASM. 
>
> I would look for a cmake config option similar to "-DWITH_FFMPEG=OFF" 
> which switches off TBB usage.
>
> Also this part of the emcmake invokation doesn't look right:  
> -DCMAKE_OSX_ARCHITECTURES="x86_64" because you're not building for OSX (but 
> emscripten), nor for x86_64 (but for WASM).
>
> Did you check that OpenCV.js isn't actually compiled to WASM? The .js in 
> the name doesn't necessarily mean that it is Javascript. For instance these 
> build instructions for OpenCV.js have a lot of "wasm" in their build 
> command options ;)
>
> https://docs.opencv.org/3.4.10/d4/da1/tutorial_js_setup.html
>
> On Sunday, 25 April 2021 at 14:11:47 UTC+2 [email protected] wrote:
>
>> Hello,
>>
>> I am new to emscripten and cmake and  trying to make a simple application 
>> in cpp that uses openCV modules and compile it to wasm. I followed the 
>> documentation and tried to produce static library files *.a and the cpp 
>> file that references the opencv library as a .o file. This is where I had 
>> the error.
>>
>> I ran the command
>> cmake ../ -B./ -DBUILD_SHARED_LIBS=OFF -DCMAKE_OSX_ARCHITECTURES="x86_64" 
>> -DWITH_1394=OFF -DWITH_FFMPEG=OFF -DBUILD_TESTS=OFF
>> to build opencv statically into the current folder which is inside the 
>> openCV folder. Then I ran the commands
>>
>>    - 
>>    
>>    make
>>    - sudo make install.   
>>
>>
>> after this I navigated to where my cpp file is cvcaller.cpp, then ran
>>
>>    - 
>>    
>>    cmake .
>>    - 
>>    
>>    make
>>    based on this I get the executable. It all works well here. I ran the 
>>    produced executable and it shows the value as it should.
>>    But when I ran the following commands instead based on the 
>>    documentation here 
>>    
>> <https://emscripten.org/docs/compiling/Building-Projects.html#build-system-issues>,
>>  
>>    I got the error.
>>    
>>     I cleared the folder which had the make files from before and ran the 
>> following commands.
>>
>>    - 
>>    
>>    emcmake cmake ../ -B./ -DBUILD_SHARED_LIBS=OFF 
>>    -DCMAKE_OSX_ARCHITECTURES="x86_64" -DWITH_1394=OFF -
>>    DWITH_FFMPEG=OFF -DBUILD_TESTS=OFF
>>    - 
>>    
>>    emmake make
>>    
>> error happens. I think the emcmake cmake is not working as it should in 
>> this case. 
>>
>>
>> make: make
>> Scanning dependencies of target gen-pkgconfig
>> [ 0%] Generate opencv.pc
>> [ 0%] Built target gen-pkgconfig
>> Scanning dependencies of target ittnotify
>> [ 0%] Building C object 
>> 3rdparty/ittnotify/CMakeFiles/ittnotify.dir/src/ittnotify/ittnotify_static.c.o
>> In file included from 
>> /Users/atul109/MyDocuments/work/new/emscripten_playground/opencv-3.4.14/3rdparty/ittnotify/src/ittnotify/ittnotify_static.c:59:
>> /Users/atul109/MyDocuments/work/new/emscripten_playground/opencv-3.4.14/3rdparty/ittnotify/src/ittnotify/ittnotify_config.h:376:12:
>>  
>> error: implicit declaration of function '
>>
>>
>>
>> *TBB_machine_fetchadd4' is invalid in C99 
>> [-Werror,-Wimplicit-function-declaration]return TBB_machine_fetchadd4(ptr, 
>> 1) + 1L;^1 error generated.emcc: error: 
>> '/Users/atul109/MyDocuments/work/new/emscripten_playground/emsdk/upstream/bin/clang
>>  
>> -target wasm32-unknown-emscripten -D__EMSCRIPTEN_PTHREADS=1 -DEMSCRIPTEN 
>> -fignore-exceptions -mllvm -combiner-global-alias-analysis=false -mllvm 
>> -enable-emscripten-sjlj -mllvm -disable-lsr -D__EMSCRIPTEN_major*=2 
>> -D__EMSCRIPTEN_minor__=0 -D__EMSCRIPTEN_tiny__=17 -D_LIBCPP_ABI_VERSION=2 
>> -Dunix -D__unix -D__unix__ -Werror=implicit-function-declaration -Xclang 
>> -iwithsysroot/include/SDL 
>> --sysroot=/Users/atul109/MyDocuments/work/new/emscripten_playground/emsdk/upstream/emscripten/cache/sysroot
>>  
>> -Xclang -iwithsysroot/include/compat 
>> -I/Users/atul109/MyDocuments/work/new/emscripten_playground/opencv-3.4.14/3rdparty/ittnotify/include
>>  
>> -I/Users/atul109/MyDocuments/work/new/emscripten_playground/opencv-3.4.14/WasmBuild/3rdparty/ippicv/ippicv_lnx/icv/include
>>  
>> -I/Users/atul109/MyDocuments/work/new/emscripten_playground/opencv-3.4.14/WasmBuild/3rdparty/ippicv/ippicv_lnx/iw/include
>>  
>> -I/Users/atul109/MyDocuments/work/new/emscripten_playground/opencv-3.4.14/WasmBuild
>>  
>> -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor 
>> -Werror=address -Werror=sequence-point -Wformat -Werror=format-security 
>> -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Winit-self 
>> -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized 
>> -Winconsistent-missing-override -Wno-delete-non-virtual-dtor 
>> -Wno-unnamed-type-template-args -Wno-comment 
>> -Wno-deprecated-enum-enum-conversion 
>> -Wno-deprecated-anon-enum-enum-conversion -fdiagnostics-show-option 
>> -pthread -Qunused-arguments -ffunction-sections -fdata-sections 
>> -fvisibility=hidden -fvisibility-inlines-hidden -Wno-implicit-fallthrough 
>> -Wno-undef -Wno-sign-compare -O3 -DNDEBUG -DNDEBUG -fPIC -c -pthread 
>> /Users/atul109/MyDocuments/work/new/emscripten_playground/opencv-3.4.14/3rdparty/ittnotify/src/ittnotify/ittnotify_static.c
>>  
>> -o CMakeFiles/ittnotify.dir/src/ittnotify/ittnotify_static.c.o' failed (1)
>> make[2]: *** 
>> [3rdparty/ittnotify/CMakeFiles/ittnotify.dir/src/ittnotify/ittnotify_static.c.o]
>>  
>> Error 1
>> make[1]: *** [3rdparty/ittnotify/CMakeFiles/ittnotify.dir/all] Error 2
>> make: *** [all] Error 2
>> emmake: error: 'make' failed (2)
>>
>> From what I understand the ittnotify is causing error. But somehow it was 
>> fine when I did the normal cmake and make. It only does this for emcmake 
>> cmake and emmake make.
>>
>> /Users/atul109/MyDocuments/work/new/emscripten_playground/opencv-3.4.14/3rdparty/ittnotify/src/ittnotify/ittnotify_config.h:376:12:
>>  
>> error: implicit declaration of function '__TBB_machine_fetchadd4' is 
>> invalid in C99 [-Werror,-Wimplicit-function-declaration]
>> return __TBB_machine_fetchadd4(ptr, 1) + 1L;
>> ^
>> 1 error generated.
>>
>> Please help. I am stuck on this for a while now and have no clue as to 
>> what to do to get my cpp application run as wasm in browser because it has 
>> opencv modules in it. using openCV.js and calling it's functions through js 
>> is not an option for me.
>>
>> Thanks.
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/emscripten-discuss/5973a7c1-7705-4c2d-9679-51f217d79daan%40googlegroups.com.

Reply via email to