Hi,

I was using llvm3.3, switching to 3.2 and adding some compile flags (-s
ALLOW_MEMORY_GROWTH=1 -s TOTAL_MEMORY=52428800) made it compile.

Notes:

   - Using the shared lib option did not work out well for me so I am not
   using it currently.
   - Also I use --without-x so it does not try to get anything output
   related running. (maybe only on linux needed)
   - I installed a compiled ngspice version so I can run ngmakeidx from the
   compiled version)
   - Some debug functions can be rewritten so disable-debug is not needed,
   I will do this later, maybe that helps for the problem I am now at (see
   below)


I wrote a python script to make the process more reproducible. Currently
only tested on fedora linux though.
Script: https://gist.github.com/FlorianLudwig/9766208

My current state is:


$ node ngspice.js
fopen("/proc/%d/statm"): No such file or directory
fopen("/proc/meminfo"): No such file or directory
Note: can't find init file.
******
** ngspice-25 : Circuit level simulation program
** The U. C. Berkeley CAD Group
** Copyright 1985-1994, Regents of the University of California.
** Please get your ngspice manual from
http://ngspice.sourceforge.net/docs.html
** Please file your bug-reports at
http://ngspice.sourceforge.net/bugrep.html
** Creation Date: Tue Mar 25 15:34:26 CET 2014
******
Assertion failed: undefined
Assertion failed: undefined

/home/f.ludwig/ve/ngspice/src/ngspice-25/ngspice.js:1012566
      throw e;
            ^
abort() at Error
    at stackTrace
(/home/f.ludwig/ve/ngspice/src/ngspice-25/ngspice.js:1032:15)
    at abort
(/home/f.ludwig/ve/ngspice/src/ngspice-25/ngspice.js:1012650:25)
    at assert (/home/f.ludwig/ve/ngspice/src/ngspice-25/ngspice.js:545:5)
    at Pointer_stringify
(/home/f.ludwig/ve/ngspice/src/ngspice-25/ngspice.js:778:5)
    at _fopen (/home/f.ludwig/ve/ngspice/src/ngspice-25/ngspice.js:63792:14)
    at _tmpfile
(/home/f.ludwig/ve/ngspice/src/ngspice-25/ngspice.js:64100:14)
    at Object._main
(/home/f.ludwig/ve/ngspice/src/ngspice-25/ngspice.js:66709:11)
    at Object.callMain
(/home/f.ludwig/ve/ngspice/src/ngspice-25/ngspice.js:1012547:30)
    at doRun
(/home/f.ludwig/ve/ngspice/src/ngspice-25/ngspice.js:1012600:25)
    at run (/home/f.ludwig/ve/ngspice/src/ngspice-25/ngspice.js:1012615:5)



On Mon, Mar 24, 2014 at 8:32 PM, Sam Reid <[email protected]> wrote:

> I did get ngpsice to compile to the point where it would run and print
> some ngspice text to the console.  I had my best success when I switched to
> OS X and complied from there--could never get certain issues resolved on my
> Ubuntu.  Also, I wrote a list of all the steps I had to do to compile and
> run ngpsice on OS X.  Note this list is a bit old and may be incomplete:
>
> Building ngspice with emscripten on OSX:
>
> Download emscripten SDK and ngspice.
>
> Mkdir release
>
> Cd release
>
> Hack configure to fail sigsetjmp tests, see
> https://groups.google.com/forum/#!topic/emscripten-discuss/nvq18u4lj6E
>
> Run emconfigure ../configure --(some shared library option?) possibly with
> --disable-debug?
>
> Emmake make
>
> Overwrite the ngmakeidx file that cannot be run.
>
> Rename the ngspice binary to ngspice.o
>
> Cd src
>
> Emcc ngspice
>
> Memory limit is wrong, fix it in the code TOTAL_MEMORY
>
> Now we are missing sigsetjmp, which the config said we do not have.
>
> We are also missing siglongjmp
>
> We are also missing logb
>
>
> Not sure what to do next, let me know if you make any progress with
> ngspice to JS though!  Thanks!
>
>
> On Sun, Mar 16, 2014 at 7:51 AM, Florian Ludwig 
> <[email protected]>wrote:
>
>> Hi Sam,
>>
>> I am looking into the same matter and I get pass make but using emcc to
>> generate js fails on me, did you get the last step working?
>>
>> Full Output:
>> $ emcc ngspice.bc
>> warning: Casting a function pointer type to a potentially incompatible
>> one (use -s VERBOSE=1 to see more)
>> warning: See
>> https://github.com/kripken/emscripten/wiki/CodeGuidelinesAndLimitations#function-pointer-issuesfor
>>  more information on dangerous function pointer casts
>> warning: Casting a function pointer type to a potentially incompatible
>> one (use -s VERBOSE=1 to see more)
>> warning: See
>> https://github.com/kripken/emscripten/wiki/CodeGuidelinesAndLimitations#function-pointer-issuesfor
>>  more information on dangerous function pointer casts
>> Stack: Error
>>     at assertTrue (eval at globalEval
>> (/home/f.ludwig/emtest/emscripten/src/compiler.js:105:8), <anonymous>:59:26)
>>     at makeComparison (eval at globalEval
>> (/home/f.ludwig/emtest/emscripten/src/compiler.js:105:8),
>> <anonymous>:2057:5)
>>     at eval (eval at globalEval
>> (/home/f.ludwig/emtest/emscripten/src/compiler.js:105:8),
>> <anonymous>:1162:18)
>>     at Array.map (native)
>>     at eval (eval at globalEval
>> (/home/f.ludwig/emtest/emscripten/src/compiler.js:105:8),
>> <anonymous>:1161:43)
>>     at Array.forEach (native)
>>     at switchHandler (eval at globalEval
>> (/home/f.ludwig/emtest/emscripten/src/compiler.js:105:8),
>> <anonymous>:1153:31)
>>     at eval (eval at globalEval
>> (/home/f.ludwig/emtest/emscripten/src/compiler.js:105:8),
>> <anonymous>:522:34)
>>     at Array.forEach (native)
>>     at functionSplitter (eval at globalEval
>> (/home/f.ludwig/emtest/emscripten/src/compiler.js:105:8),
>> <anonymous>:511:16)
>> aborting from js compiler due to exception: Assertion failed: undefined |
>> undefined
>> aborting from js compiler due to exception: unhandleable illegal icmp:
>> slt | undefined
>> Traceback (most recent call last):
>>   File "/home/f.ludwig/emtest/emscripten/emscripten.py", line 1405, in
>> <module>
>>     _main(environ=os.environ)
>>   File "/home/f.ludwig/emtest/emscripten/emscripten.py", line 1393, in
>> _main
>>     temp_files.run_and_clean(lambda: main(
>>   File "/home/f.ludwig/emtest/emscripten/tools/tempfiles.py", line 39, in
>> run_and_clean
>>     return func()
>>   File "/home/f.ludwig/emtest/emscripten/emscripten.py", line 1401, in
>> <lambda>
>>     DEBUG_CACHE=DEBUG_CACHE,
>>   File "/home/f.ludwig/emtest/emscripten/emscripten.py", line 1288, in
>> main
>>     jcache=jcache, temp_files=temp_files, DEBUG=DEBUG,
>> DEBUG_CACHE=DEBUG_CACHE)
>>   File "/home/f.ludwig/emtest/emscripten/emscripten.py", line 292, in
>> emscript
>>     assert len(output) == 2, 'Did not receive forwarded data in an output
>> - process failed? We only got: ' + output[0][-3000:]
>> AssertionError: Did not receive forwarded data in an output - process
>> failed? We only got: EAPF64[(($311)>>3)]=$313;
>>  var $314=($12)+($21);
>>  var $315=($314)+($25);
>>  var $316=($_lobit|0);
>>  var $317=($19)+($23);
>>  var $318=($316)*($317);
>>  var $319=($315)+($318);
>>  var $320=($319)*($79);
>>  var $321=HEAP32[(($112)>>2)];
>>  var $322=HEAPF64[(($321)>>3)];
>>  var $323=($320)+($322);
>>  HEAPF64[(($321)>>3)]=$323;
>>  var $324=($14)+($21);
>>  var $325=($324)+($27);
>>  var $326=($_lobit17_not|0);
>>  var $327=($326)*($317);
>>  var $328=($327)+($325);
>>  var $329=($328)*($79);
>>  var $330=HEAP32[(($125)>>2)];
>>  var $331=HEAPF64[(($330)>>3)];
>>  var $332=($329)+($331);
>>  HEAPF64[(($330)>>3)]=$332;
>>  var $333=(($here_019+420)|0);
>>  var $334=HEAP32[(($333)>>2)];
>>  var $335=HEAPF64[(($334)>>3)];
>>  var $336=($335)-($299);
>>  HEAPF64[(($334)>>3)]=$336;
>>  var $337=(($here_019+436)|0);
>>  var $338=HEAP32[(($337)>>2)];
>>  var $339=HEAPF64[(($338)>>3)];
>>  var $340=($339)-($304);
>>  HEAPF64[(($338)>>3)]=$340;
>>  var $341=($25)*($79);
>>  var $342=HEAP32[(($193)>>2)];
>>  var $343=HEAPF64[(($342)>>3)];
>>  var $344=($343)-($341);
>>  HEAPF64[(($342)>>3)]=$344;
>>  var $345=($27)*($79);
>>  var $346=HEAP32[(($206)>>2)];
>>  var $347=HEAPF64[(($346)>>3)];
>>  var $348=($347)-($345);
>>  HEAPF64[(($346)>>3)]=$348;
>>  var $349=(($here_019+452)|0);
>>  var $350=HEAP32[(($349)>>2)];
>>  var $351=HEAPF64[(($350)>>3)];
>>  var $352=($351)-($299);
>>  HEAPF64[(($350)>>3)]=$352;
>>  var $353=((($_lobit17_not)-($_lobit))|0);
>>  var $354=($353|0);
>>  var $355=($354)*($19);
>>  var $356=($355)*($79);
>>  var $357=HEAP32[(($219)>>2)];
>>  var $358=HEAPF64[(($357)>>3)];
>>  var $359=($356)+($358);
>>  HEAPF64[(($357)>>3)]=$359;
>>  var $360=($354)*($23);
>>  var $361=($360)-($25);
>>  var $362=($361)*($79);
>>  var $363=HEAP32[(($235)>>2)];
>>  var $364=HEAPF64[(($363)>>3)];
>>  var $365=($362)+($364);
>>  HEAPF64[(($363)>>3)]=$365;
>>  var $366=((-.0))-($21);
>>  var $367=($366)-($327);
>>  var $368=($367)*($79);
>>  var $369=HEAP32[(($248)>>2)];
>>  var $370=HEAPF64[(($369)>>3)];
>>  var $371=($368)+($370);
>>  HEAPF64[(($369)>>3)]=$371;
>>  var $372=(((-$353))|0);
>>  var $373=($372|0);
>>  var $374=($373)*($19);
>>  var $375=($374)*($79);
>>  var $376=HEAP32[(($261)>>2)];
>>  var $377=HEAPF64[(($376)>>3)];
>>  var $378=($375)+($377);
>>  HEAPF64[(($376)>>3)]=$378;
>>  var $379=(($here_019+468)|0);
>>  var $380=HEAP32[(($379)>>2)];
>>  var $381=HEAPF64[(($380)>>3)];
>>  var $382=($381)-($304);
>>  HEAPF64[(($380)>>3)]=$382;
>>  var $383=((-.0))-($27);
>>  var $384=($383)-($360);
>>  var $385=($384)*($79);
>>  var $386=HEAP32[(($276)>>2)];
>>  var $387=HEAPF64[(($386)>>3)];
>>  var $388=($385)+($387);
>>  HEAPF64[(($386)>>3)]=$388;
>>  var $389=($366)-($318);
>>  var $390=($389)*($79);
>>  var $391=HEAP32[(($289)>>2)];
>>  var $392=HEAPF64[(($391)>>3)];
>>  var $393=($390)+($392);
>>  HEAPF64[(($391)>>3)]=$393;
>>  var $394=(($here_019+4)|0);
>>  var $here_0=HEAP32[(($394)>>2)];
>>  var $395=($here_0|0)==0;
>>  if($395){label=5;break;}else{var $here_019=$here_0;label=4;break;}
>>  case 5:
>>  var $396=(($model_020+4)|0);
>>  var $397=HEAP32[(($396)>>2)];
>>  var $398=($397|0)==0;
>>  if($398){label=6;break;}else{var $model_020=$397;label=3;break;}
>>  case 6:
>>  return 0;
>>   default: assert(0, "bad label: " + label);
>>  }
>>
>> }
>>
>>
>> Traceback (most recent call last):
>>   File "../emscripten/emcc", line 1525, in <module>
>>     final = shared.Building.emscripten(final, append_ext=False,
>> extra_args=extra_args)
>>   File "/home/f.ludwig/emtest/emscripten/tools/shared.py", line 1276, in
>> emscripten
>>     assert os.path.exists(filename + '.o.js') and len(open(filename +
>> '.o.js', 'r').read()) > 0, 'Emscripten failed to generate .js: ' +
>> str(compiler_output)
>> AssertionError: Emscripten failed to generate .js:
>>
>>
>> On Thursday, January 2, 2014 6:44:11 PM UTC+1, Sam Reid wrote:
>>>
>>> Thanks for the pointer Alon, the "Building Projects" link was very
>>> helpful.  Following those instructions, I was able to get the build working
>>> on OS X.  Running those instructions on Ubuntu produced the same linker
>>> problem, but when I supplied "--disable-debug" to the emconfig configure
>>> call, that problem went away.
>>>
>>> Sam
>>>
>>  --
>> You received this message because you are subscribed to a topic in the
>> Google Groups "emscripten-discuss" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/emscripten-discuss/MUjETZKxBgs/unsubscribe
>> .
>> To unsubscribe from this group and all its topics, send an email to
>> [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>  --
> You received this message because you are subscribed to a topic in the
> Google Groups "emscripten-discuss" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/emscripten-discuss/MUjETZKxBgs/unsubscribe
> .
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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].
For more options, visit https://groups.google.com/d/optout.

Reply via email to