<div dir="ltr">Reading it back, I'm not sure if I made this very clear:<div><br></div><div>- project A is an OTP app containing C port code in c_src, and the above rebar.config with port compiler info<br></div><div>- project B is another OTP app referencing project A as a source dependency in project B's rebar config</div><div>- when I build project A in its own dir with 'rebar3 compile', it compiles the C code as expected</div><div>- when I build project B in its own dir with 'rebar3 compile', it recognises the port compiler dependency in project A's rebar.config, downloads and compiles it, but then fails to compile project A as a dep, saying "found no source files"</div><div><br></div><div>So I need some way for the port compiler, when running in the context of the parent app A, to know the proper path for 'c_src' inside the source dependency B. Can't see how it could be any problem with the port compiler, not least because jiffy uses it fine, so I must be missing something!<br></div><div><div><br></div><div>Incidentally I added CXXFLAGS to the port_env as well, but no difference, as expected. Clutching at straws somewhat there. ;-)</div><div><br></div><div>I also tried using a Makefile, which I guess is the intended rebar3 way, and that seems to work - but I'd love to know what's happening here.</div><div><br></div><div>Cheers,</div><div>Igor</div><div><div><br></div><div><br></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail-m_546863149659962758gmail_attr">On Wed, Jan 23, 2019 at 7:35 PM Igor Clark <<a href="mailto:igor.clark@gmail.com" target="_blank">igor.clark@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi everyone,<br>
<br>
I have an simple app which has a C port in it. I have a rebar.config from which it builds correctly when I run 'rebar3 compile' inside the app directory:<br>
<br>
> { erl_opts, [debug_info] }.<br>
> { deps, [] }.<br>
> <br>
> { plugins, [<br>
>       { pc, { git, "<a href="https://github.com/blt/port_compiler.git" rel="noreferrer" target="_blank">https://github.com/blt/port_compiler.git</a>", { tag, "v1.10.1" } } }<br>
> ] }.<br>
> <br>
> { provider_hooks, [<br>
>       { pre, [<br>
>               { compile, { pc, compile }},<br>
>               { clean, { pc, clean }}<br>
>       ] }<br>
> ] }.<br>
> <br>
> { port_specs, [<br>
>       { "priv/bin/my_port_binary", [<br>
>               "c_src/my_c_file.1.c",<br>
>               "c_src/subdir/my_c_file_2.c"<br>
>       ] }<br>
> ] }.<br>
> <br>
> { port_env, [<br>
>       { "CFLAGS", "$CFLAGS -Ic_src/ -g -Wall -Werror -O2" }<br>
> ] }.<br>
<br>
<br>
Compiling this works fine. The artifact is created in priv/bin, and running myapp:module_info() inside the shell shows the right details.<br>
<br>
However, when I try to include this app as a dependency, I get this error:<br>
<br>
> ===> Found no source files for:<br>
> "c_src/my_c_file.1.c"<br>
> ===> Found no source files for:<br>
> "c_src/subdir/my_c_file_2.c"<br>
<br>
<br>
I've included src, c_src and rebar.config in the 'files' entry in src/my_app.app.src.<br>
<br>
I've also included a jiffy dep as a test to make sure C code gets built correctly, and that works fine, but I can't see what jiffy's config has that I don't.<br>
<br>
Anyone know what I'm missing to make this work?<br>
<br>
Thanks very much!<br>
Igor</blockquote></div>