mirror of
https://github.com/neovim/neovim
synced 2025-07-16 01:01:49 +00:00
NEW BUILD SYSTEM!
This is a MVP implementation which supports building the "nvim" binary,
including cross-compilation for some targets.
As an example, you can build a aarch64-macos binary from
an x86-64-linux-gnu host, or vice versa
Add CI target for build.zig currently for functionaltests on linux
x86_64 only
Follow up items:
- praxis for version and dependency bumping
- windows 💀
- full integration of libintl and gettext (or a desicion not to)
- update help and API metadata files
- installation into a $PREFIX
- more tests and linters
91 lines
3.4 KiB
Zig
91 lines
3.4 KiB
Zig
const std = @import("std");
|
|
|
|
pub fn build(b: *std.Build) !void {
|
|
const target = b.standardTargetOptions(.{});
|
|
const optimize = b.standardOptimizeOption(.{});
|
|
|
|
const upstream = b.dependency("libiconv", .{});
|
|
const lib = b.addStaticLibrary(.{
|
|
.name = "iconv",
|
|
.target = target,
|
|
.optimize = optimize,
|
|
});
|
|
|
|
lib.addIncludePath(b.path("include/"));
|
|
lib.addIncludePath(upstream.path(""));
|
|
lib.addIncludePath(upstream.path("citrus/"));
|
|
lib.addIncludePath(upstream.path("libcharset/"));
|
|
lib.addIncludePath(upstream.path("libiconv_modules/UTF8/"));
|
|
// zig any-macos-any headers already includes iconv, it just cannot link without a SDK
|
|
// lib.installHeader(upstream.path("iconv.h"), "iconv.h");
|
|
|
|
lib.linkLibC();
|
|
|
|
lib.addCSourceFiles(.{ .root = upstream.path(""), .files = &.{
|
|
"citrus/bsd_iconv.c",
|
|
"citrus/citrus_bcs.c",
|
|
"citrus/citrus_bcs_strtol.c",
|
|
"citrus/citrus_bcs_strtoul.c",
|
|
"citrus/citrus_csmapper.c",
|
|
"citrus/citrus_db.c",
|
|
"citrus/citrus_db_factory.c",
|
|
"citrus/citrus_db_hash.c",
|
|
"citrus/citrus_esdb.c",
|
|
"citrus/citrus_hash.c",
|
|
"citrus/citrus_iconv.c",
|
|
"citrus/citrus_lookup.c",
|
|
"citrus/citrus_lookup_factory.c",
|
|
"citrus/citrus_mapper.c",
|
|
"citrus/citrus_memstream.c",
|
|
"citrus/citrus_mmap.c",
|
|
"citrus/citrus_module.c",
|
|
"citrus/citrus_none.c",
|
|
"citrus/citrus_pivot_factory.c",
|
|
"citrus/citrus_prop.c",
|
|
"citrus/citrus_stdenc.c",
|
|
"citrus/__iconv.c",
|
|
"citrus/iconv.c",
|
|
"citrus/iconv_canonicalize.c",
|
|
"citrus/iconv_close.c",
|
|
"citrus/iconv_compat.c",
|
|
"citrus/iconvctl.c",
|
|
"citrus/__iconv_free_list.c",
|
|
"citrus/__iconv_get_list.c",
|
|
"citrus/iconvlist.c",
|
|
"citrus/iconv_open.c",
|
|
"citrus/iconv_open_into.c",
|
|
"citrus/iconv_set_relocation_prefix.c",
|
|
"libcharset/libcharset.c",
|
|
"libiconv_modules/BIG5/citrus_big5.c",
|
|
"libiconv_modules/DECHanyu/citrus_dechanyu.c",
|
|
"libiconv_modules/DECKanji/citrus_deckanji.c",
|
|
"libiconv_modules/EUC/citrus_euc.c",
|
|
"libiconv_modules/EUCTW/citrus_euctw.c",
|
|
"libiconv_modules/GBK2K/citrus_gbk2k.c",
|
|
"libiconv_modules/HZ/citrus_hz.c",
|
|
"libiconv_modules/iconv_none/citrus_iconv_none.c",
|
|
"libiconv_modules/iconv_std/citrus_iconv_std.c",
|
|
"libiconv_modules/ISO2022/citrus_iso2022.c",
|
|
"libiconv_modules/JOHAB/citrus_johab.c",
|
|
"libiconv_modules/mapper_646/citrus_mapper_646.c",
|
|
"libiconv_modules/mapper_none/citrus_mapper_none.c",
|
|
"libiconv_modules/mapper_serial/citrus_mapper_serial.c",
|
|
"libiconv_modules/mapper_std/citrus_mapper_std.c",
|
|
"libiconv_modules/mapper_zone/citrus_mapper_zone.c",
|
|
"libiconv_modules/MSKanji/citrus_mskanji.c",
|
|
"libiconv_modules/UES/citrus_ues.c",
|
|
"libiconv_modules/UTF1632/citrus_utf1632.c",
|
|
"libiconv_modules/UTF7/citrus_utf7.c",
|
|
"libiconv_modules/UTF8/citrus_utf8.c",
|
|
"libiconv_modules/UTF8MAC/citrus_utf8mac.c",
|
|
"libiconv_modules/VIQR/citrus_viqr.c",
|
|
"libiconv_modules/ZW/citrus_zw.c",
|
|
}, .flags = &.{
|
|
"-D_PATH_I18NMODULE=\"/usr/lib/i18n\"",
|
|
"-D_PATH_ESDB=\"/usr/share/i18n/esdb\"",
|
|
"-D_PATH_CSMAPPER=\"/usr/share/i18n/csmapper\"",
|
|
} });
|
|
|
|
b.installArtifact(lib);
|
|
}
|