KMC
KMC copied to clipboard
qol revisions: SIMD detection, external zlib, Makefile CXXFLAGS/LDFLAGS
These commits address:
- Architecture detection had an explicit comparison to "Intel" if x86_64, which caused compilation failure on any AMD processor, despite having the requested vector extensions available (SSE2, SSE4.1, AVX, AVX2)
- replaced with gcc-specific calls to __builtin_cpu_supports() (https://gcc.gnu.org/onlinedocs/gcc/x86-Built-in-Functions.html)
- cpu_info now unused and can be removed
- simplifies dyn disp
- removed SSE2 and instead terminate checks at SSE4.1
- Static compilation against external zlib causes downstream issues and it can also be left to the user to choose the compression library of choice, allowing dynamic library and facilitating use of libkmc_core.a
- removed static compilation for kmc binary
- added separate makefile target for static library (libkmc_core.a)
- added -lz to linker flags
- use / rewriting CC in Makefile when the intended compiler is c++ causes implicit compilation issues, changed to CXX where relevant, used flags in LDFLAGS and CXXFLAGS instead of CLINK and CFLAGS to allow appropriate implicit compilation calls in kmc_core/ and kmc_CLI/
- no longer requires changing CC to g++ (or similar) on make call
- remove python binding creation and requirement for pybind11
I am happy to keep this as a fork if these changes break other elements that you regard as essential. I do think it is important to address 1) and 2). 3) is not an essential change but makes the Makefile difficult to work with