devinus / markdown

A simple Elixir Markdown to HTML conversion library
The Unlicense
87 stars 19 forks source link

Could not compile dependency hoedown, make command failed. - Windows #10

Open seadynamic8 opened 9 years ago

seadynamic8 commented 9 years ago

I'm assuming since you have a Makefile.win that you also support Windows.

Anyways, when I go to compile the dependcies, I get the following from mix:

==> hoedown
cc -g -O3 -ansi -pedantic -Wall -Wextra -Wno-unused-parameter -Isrc -c -o src/autolink.o src/autolink.c
make: cc: Command not found
Makefile:80: recipe for target 'src/autolink.o' failed
make: *** [src/autolink.o] Error 127
==> markdown_server
** (Mix) Could not compile dependency hoedown, make command failed. If you want to recompile this dependency, please run: mix deps.compile hoedown

I'm not sure if this is from your library or hoedown. Can you please take a look?

Thanks.

josevalim commented 9 years ago

Have you installed a C compiler on your machine? It seems it is missing the cc executable. MinGW may include one, otherwise you may need the Visual Studio tooling.

seadynamic8 commented 9 years ago

I have gcc on my machine. Can I use that instead?

Do I have to compile this manually?

josevalim commented 9 years ago

Is cc available in your PATH? If you change cc manually to your gcc compiler, does it work?

seadynamic8 commented 9 years ago

I was just looking it up. It seems that cc is the clang compiler, renamed to "cc" on FreeBSD systems. https://www.freebsd.org/doc/en_US.ISO8859-1/books/developers-handbook/tools-compiling.html

I just created a symoblic link from cc to gcc. But that failed with this error:

>mix deps.compile
==> hoedown
cc -g -O3 -ansi -pedantic -Wall -Wextra -Wno-unused-parameter -Isrc -c -o src/autolink.o src/autolink.c
cc -g -O3 -ansi -pedantic -Wall -Wextra -Wno-unused-parameter -Isrc -c -o src/buffer.o src/buffer.c
cc -g -O3 -ansi -pedantic -Wall -Wextra -Wno-unused-parameter -Isrc -c -o src/document.o src/document.c
cc -g -O3 -ansi -pedantic -Wall -Wextra -Wno-unused-parameter -Isrc -c -o src/escape.o src/escape.c
cc -g -O3 -ansi -pedantic -Wall -Wextra -Wno-unused-parameter -Isrc -c -o src/html.o src/html.c
cc -g -O3 -ansi -pedantic -Wall -Wextra -Wno-unused-parameter -Isrc -Wno-static-in-inline -c -o src/html_blocks.o src/html_blocks.c
cc -g -O3 -ansi -pedantic -Wall -Wextra -Wno-unused-parameter -Isrc -c -o src/html_smartypants.o src/html_smartypants.c
cc -g -O3 -ansi -pedantic -Wall -Wextra -Wno-unused-parameter -Isrc -c -o src/stack.o src/stack.c
cc -g -O3 -ansi -pedantic -Wall -Wextra -Wno-unused-parameter -Isrc -c -o src/version.o src/version.c
cc -shared src/autolink.o src/buffer.o src/document.o src/escape.o src/html.o src/html_blocks.o src/html_smartypants.o src/stack.o src/version.o  -o libhoedown.so.3
ln -f -s libhoedown.so.3 libhoedown.so
cc -g -O3 -ansi -pedantic -Wall -Wextra -Wno-unused-parameter -Isrc -c -o bin/hoedown.o bin/hoedown.c
bin/hoedown.c: In function 'parse_short_option':
bin/hoedown.c:200:15: warning: 'num' may be used uninitialized in this function [-Wmaybe-uninitialized]
   data->ounit = num;
               ^
bin/hoedown.c: In function 'parse_long_option':
bin/hoedown.c:323:15: warning: 'num' may be used uninitialized in this function [-Wmaybe-uninitialized]
   data->ounit = num;
               ^
cc bin/hoedown.o src/autolink.o src/buffer.o src/document.o src/escape.o src/html.o src/html_blocks.o src/html_smartypants.o src/stack.o src/version.o  -o hoedown
cc -g -O3 -ansi -pedantic -Wall -Wextra -Wno-unused-parameter -Isrc -c -o bin/smartypants.o bin/smartypants.c
bin/smartypants.c: In function 'parse_short_option':
bin/smartypants.c:89:15: warning: 'num' may be used uninitialized in this function [-Wmaybe-uninitialized]
   data->ounit = num;
               ^
cc bin/smartypants.o src/autolink.o src/buffer.o src/document.o src/escape.o src/html.o src/html_blocks.o src/html_smartypants.o src/stack.o src/version.o  -o smartypants
==> markdown
could not compile dependency markdown, mix compile failed. You can recompile this dependency with `mix deps.compile markdown` or update it with `mix deps.update markdown`
** (ErlangError) erlang error: :enoent
    (elixir) lib/system.ex:440: System.cmd("nmake", ["/F", "Makefile.win", "priv\\markdown.dll"], [stderr_to_stdout: true])
    mix.exs:6: Mix.Tasks.Compile.Hoedown.run/1
    (mix) lib/mix/tasks/compile.ex:59: anonymous fn/2 in Mix.Tasks.Compile.run/1
    (elixir) lib/enum.ex:977: Enum."-map/2-lc$^0/1-0-"/2
    (mix) lib/mix/tasks/compile.ex:58: Mix.Tasks.Compile.run/1
    (mix) lib/mix/tasks/deps.compile.ex:105: anonymous fn/2 in Mix.Tasks.Deps.Compile.do_mix/1
    (mix) lib/mix/project.ex:194: Mix.Project.in_project/4
    (elixir) lib/file.ex:1061: File.cd!/2

Let me see if I can get clang installed on my system and sym link it to cc.

josevalim commented 9 years ago

Ah, something is definitely wrong. You are on Windows but it seems to be using the regular Makefile and not the Windows one. Which terminal are you using to compile this? Which Elixir version?

seadynamic8 commented 9 years ago

I'm on Windows 8.1, using ConEmu as my terminal. Using Elixir 1.0.2

I just tried doing this with clang compiler, sym linked to cc. Same output.

josevalim commented 9 years ago

What does :os.type return for you in your iex shell? I am running out of ideas. :(

josevalim commented 9 years ago

Also, what is requiring this project? We have a markdown processor in pure Elixir here, would that be enough for your needs?

seadynamic8 commented 9 years ago

:os.type returns this: {:win32, :nt}

I was trying to do an Elixir sip (www.elixirsips.com), trying to make a markdown parser.

Ah, I should've figured that out. It was calling for ex_doc, ex_doc didn't have the markdown parser, so I went to look for another one.

Thanks Jose.