The autotools command line has the "-O2" optimization flag, which the cmake 
command line is missing.

Try running emcmake like this (to enable optimizations favouring size over 
performance:

emcmake cmake -DCMAKE_BUILD_TYPE=MinSizeRel ..

...or this to enable optimizations favouring performance over size:

emcmake cmake -DCMAKE_BUILD_TYPE=Release ..

On Thursday, 30 December 2021 at 14:31:16 UTC+1 [email protected] wrote:

> I tried to find out the differences in the build step.
> I removed a header file and made the build fail .... so that I could get 
> the compiler line print out 
> Here is the one with autotools
> =========================================
> em++: error: '/home/myname/emsdk/upstream/bin/clang++ -target 
> wasm32-unknown-emscripten -DEMSCRIPTEN -fignore-exceptions -mllvm 
> -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm 
> -disable-lsr -D__EMSCRIPTEN_major__=3 -D__EMSCRIPTEN_minor__=0 
> -D__EMSCRIPTEN_tiny__=0 -D_LIBCPP_ABI_VERSION=2 
> -Werror=implicit-function-declaration -Xclang -iwithsysroot/include/SDL 
> --sysroot=/home/myname/emsdk/upstream/emscripten/cache/sysroot -Xclang 
> -iwithsysroot/include/compat -DHAVE_CONFIG_H -I. -I../.. 
> *-fvisibility=hidden* -DBUILDING_LIBmySPELL -g -O2 -MT myspell.lo -MD -MP 
> -MF .deps/myspell.Tpo -c -fPIC -DPIC myspell.cxx -o .libs/myspell.o' failed 
> (returned 1)
> =========================================
> Here is the one with CMake
> =========================================
> em++: error: '/home/myname/emsdk/upstream/bin/clang++ -target 
> wasm32-unknown-emscripten -DEMSCRIPTEN -fignore-exceptions 
> *-fvisibility=default* -mllvm -combiner-global-alias-analysis=false 
> -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -D__EMSCRIPTEN_major__=3 
> -D__EMSCRIPTEN_minor__=0 -D__EMSCRIPTEN_tiny__=0 -D_LIBCPP_ABI_VERSION=2 
> -Werror=implicit-function-declaration -Xclang -iwithsysroot/include/SDL 
> --sysroot=/home/myname/emsdk/upstream/emscripten/cache/sysroot -Xclang 
> -iwithsysroot/include/compat -I/home/myname/cmake_expt/myspell/include -c 
> /home/myname/cmake_expt/myspell/src/myspell.cxx -o 
> CMakeFiles/myspell.dir/src/myspell.cxx.o' failed (returned 1)
> =========================================
> I can see the difference in the visibility setting.  Also I see there are 
> are -g O2 -MT -MD -MP -MF -fPIC -dPIC in Autotools but not in CMake.
> See if anybody could find anything from this.
> Also pl tell me where to make the required change
> Thanks
>
>
> On Thursday, December 30, 2021 at 5:52:07 AM UTC-5 Mahesh Velankar wrote:
>
>> Brion,
>> Thanks for taking time to address my question. 
>> Where should I put that compiler flag?
>>
>> This is my CMakeLists.txt file
>>
>> =================================================================
>> cmake_minimum_required(VERSION 3.5)
>>
>> #project(hello_library)
>> project(myspell)
>>
>> ############################################################
>> # Create a library
>> ############################################################
>>
>> #Generate the static library from the library sources
>> add_library(myspell STATIC•
>>     src/myspell.cxx
>>     src/dict.cxx
>>     src/msp.cxx
>> )
>>
>> target_include_directories(myspell
>>     PUBLIC•
>>         ${PROJECT_SOURCE_DIR}/include
>> )
>>
>>
>> ############################################################
>> # Create an executable
>> ############################################################
>>
>> # Add an executable with the above sources
>> add_executable(myspell-bin•
>>     src/main.cxx
>> )
>>
>> # link the new myspell target with the myspell-bin target
>> target_link_libraries( myspell-bin
>>     PRIVATE•
>>         myspell
>> )
>> # now we rename myspell-bin executable to myspell using target properties
>> set_target_properties(myspell-bin
>>         PROPERTIES OUTPUT_NAME myspell)
>> ================================================================= 
>>
>> and this is how I am building it
>>
>> ===============================================
>> #! /bin/bash
>> ls
>> rm -rf build
>> mkdir -p build
>>
>> cd build
>>
>> emcmake cmake ..
>> emmake make
>> em++ -s ALLOW_MEMORY_GROWTH=1 -s INITIAL_MEMORY=33554432 -s 
>> EXPORTED_FUNCTIONS="['_Myspell_create', '_Myspell_spell', 
>> '_Myspell_suggest', '_Myspell_free_list', '_Myspell_destroy']" 
>> ./libmyspell.a -o myspell.js
>>
>> cp ../myspell-worker.js .
>> ===============================================
>>
>> Please let me know where should I make the changes.
>> Also please let me know if I need to provide more details
>>
>> Thanks
>> -Mahesh
>>
>> On Wednesday, December 29, 2021 at 10:03:08 PM UTC-5 br..com wrote:
>>
>>> On Wed, Dec 29, 2021 at 2:13 PM Ma ... wrote:
>>>
>>>> First I tried it with auto tools (since hunspell was already built for 
>>>> wasm using auto tools)......I refereed to the same (hunspell-wasm) build 
>>>> environment and just changed the details to get my wasm..........and that 
>>>> worked very very well.........Speed was amazing in the web page.
>>>>
>>>> Then I tried to build the same code with cmake..... as I wanted to do 
>>>> the whole thing by myself .... better than the above copy paste approach 
>>>> for future support. I thought cmake was easier to grasp than autotools,. 
>>>> So 
>>>> I followed a tutorial and successfully built the wasm. That wasm also 
>>>> worked
>>>>
>>>> However strangely this cmake based wasm performs about 10 times slower 
>>>> than the autotools based built wasm. (this 10 times thing is just a 
>>>> guess......no measurement......but it moves with ant's speed compared to 
>>>> the earlier)
>>>>
>>>
>>> As a guess, did you not include an optimization option in the compiler 
>>> flags on the CMake version?
>>>
>>> -- brion
>>>
>>>

-- 
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/9781cc95-a66e-4fda-ae96-1403ff1b1dc6n%40googlegroups.com.

Reply via email to