hyperboria / bugs

Peer-to-peer IPv6 networking, secure and near-zero-conf.
154 stars 17 forks source link

Question on build process #158

Closed pruflyos closed 5 years ago

pruflyos commented 6 years ago

Looking at the sources it seems like Nodejs is only needed to build cjdns, right? So actually, cjdns (or cjdroute) is written in C or C++ and not in Javascript, so it should be possible to build cjdns without Nodejs as well, right?

If the above is correct, why was Nodejs chosen as the build tool for cjdns instead of just providing make files?

I'm asking because I try to build cjdns as part of the Android AOSP build. Android AOSP uses Android.mk (http://android.mk/) as the build system, so I need to create an appropriate Android.mk build file. However, I'm having a hard time figuring out what compiler flags I have to set and what libraries cjdns depends on to get it successfully build.

I know there is the ./android_do build script in cjdns but I'm not sure how to hook that into the AOSP build system and additionally, ./android_do tries to download the Android NDK and setup the whole toolchain which isn't necessary if you have a working AOSP build environment already setup. All I want to achieve is compile cjdns using the existing AOSP build environment.

Thanks for any help!

Kubuxu commented 6 years ago

So actually, cjdns (or cjdroute) is written in C or C++ and not in Javascript, so it should be possible to build cjdns without Nodejs as well, right?

Cjdns uses Nodejs as a way of: structuring linking and pre-post processor. So no, it won't be possible to build cjdns without Nodejs.

Show-vars commented 6 years ago

Using Nodejs scripts as build system for C application is overkill. Also it makes difficult to perform automatic package assemblies for popular linux distros. Classical Makefile should be enough.

crabctrl commented 5 years ago

Is there any progress being made here? I think a lot of people, especially package maintainers, would like to avoid NodeJS; it seems like a waste to pull in such a controversial dependency for very little reason.

kpcyrd commented 5 years ago

@atoms118 there was no progress since the issue was created. The reason this is non-trivial is because it would require changes to the code as well as somebody would have to introduce a different pre-processor system like cmake. This is certainly possible but nobody sent a pull request yet.