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.
