2020-05-02 17:43:26 +01:00
const std = @import ( " std " ) ;
2020-04-24 23:19:03 +01:00
const builtin = @import ( " builtin " ) ;
2020-05-07 16:29:40 +01:00
// const build_options = @import("build_options");
2020-04-24 23:19:03 +01:00
2020-05-07 16:29:40 +01:00
pub fn build ( b : * std . build . Builder ) ! void {
2020-04-24 23:19:03 +01:00
// Standard target options allows the person running `zig build` to choose
// what target to build for. Here we do not override the defaults, which
// means any target is allowed, and the default is native. Other options
// for restricting supported target set are available.
const target = b . standardTargetOptions ( . { } ) ;
// Standard release options allow the person running `zig build` to select
// between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall.
const mode = b . standardReleaseOptions ( ) ;
const exe = b . addExecutable ( " zls " , " src/main.zig " ) ;
2020-05-07 16:29:40 +01:00
const data_version = try std . mem . concat ( b . allocator , u8 , & [ 3 ] [ ] const u8 { " \" " , b . option ( [ ] const u8 , " data_version " , " The data version - either 0.6.0 or master. " ) orelse " 0.6.0 " , " \" " } ) ;
defer b . allocator . free ( data_version ) ;
exe . addBuildOption (
[ ] const u8 ,
" data_version " ,
data_version ,
) ;
2020-05-02 17:43:26 +01:00
2020-05-07 18:16:04 +01:00
exe . addBuildOption (
bool ,
" no_snippets " ,
b . option ( bool , " no_snippets " , " Use regular completion without snippets. Useful for compatibility. " ) orelse false ,
) ;
2020-05-07 10:50:25 +01:00
exe . addBuildOption (
bool ,
" leak_detection " ,
b . option ( bool , " leak_detection " , " Use testing.LeakCountAllocator to track leaks. " ) orelse false ,
) ;
2020-04-24 23:19:03 +01:00
exe . setTarget ( target ) ;
exe . setBuildMode ( mode ) ;
exe . install ( ) ;
const run_cmd = exe . run ( ) ;
run_cmd . step . dependOn ( b . getInstallStep ( ) ) ;
const run_step = b . step ( " run " , " Run the app " ) ;
run_step . dependOn ( & run_cmd . step ) ;
}