luvi icon indicating copy to clipboard operation
luvi copied to clipboard

overhaul build system and move all ci to github actions

Open truemedian opened this issue 2 years ago • 3 comments

This is rather large overhaul of the cmake and make files as well as removing appveyor from CI.

This moves all CI and release builds to github actions. The makefile can now pass all options the cmake build accepts. The cmake file can now link lua and libuv dynamically (as well as link libluv dynamically correctly now).

The smallest change is adding luv as a way to require luv on top of the normal uv provided in luvi. This makes luvi compatible with luarocks packages that use luv.

The default cmake build is now tiny (all extra libraries are default OFF), which makes it easier to consider which libraries need to be enabled or disabled.

CPACK has been removed from the cmake file, it hadn't been updated since 2015; any packaging of luvi should probably happen with luvi + lit + luvit, as that is the most reasonable use of a luvi package.

Make.bat now detects the architecture of the computer (or is overridden using ARCH) instead of having mode and mode32 builds. Perhaps we should look into using mingw to build for windows (which means reusing the Makefile).

As a side effect of this PR. Appveyor will need to be turned off.

truemedian avatar Feb 06 '23 21:02 truemedian

I noticed that WithOpenSSLASM has gone from default ON to default OFF. Any reason for that?

EDIT: To be more specific, the default in the Makefile/make.bat used to be regular-asm, but now the default for regular is without WithOpenSSLASM=ON, so the new default (and the CI builds) will not build OpenSSL with ASM.

squeek502 avatar Feb 07 '23 01:02 squeek502

I changed it mainly for windows builds, where it required a separate compiler (NASM) to be installed. I was contemplating changing it to be default ON for the makefile, but didn't end on a decision before making this PR. I don't know enough about the optimization gains that it provides.

I was considering removing the option entirely, since openssl says that it is mostly a debugging thing.

Update: I've decided that this is probably not a good idea. I'm going to set OpenSSLASM back to being default ON, removing it from the makefile (because openssl says you shouldn't be turning it off without good reason). If someone needs a build without these optimizations they can pass the argument in EXTRA_CONFIGURE_FLAGS.

truemedian avatar Feb 07 '23 01:02 truemedian

I made this PR early mostly to see if anyone can see any mistakes I've made and get some feedback on the build changes. I'm still waiting on the results of a script I'm running that is checking all possible combinations of build modes.

truemedian avatar Feb 07 '23 01:02 truemedian

Closing this in favor of a better rewrite #285

truemedian avatar Jul 03 '24 18:07 truemedian