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.
