Floh,

Yes. 

emcmake cmake -DCMAKE_BUILD_TYPE=Release ..

That worked like a charm.
Thanks for taking time to address my question
-Mahesh

On Thursday, December 30, 2021 at 9:51:37 AM UTC-5 Floh wrote:

> 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/b9bd3678-8d4a-4e1d-885f-d2b6ef0c4790n%40googlegroups.com.

Reply via email to