Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
/**
|
|
|
|
* ***** BEGIN LICENSE BLOCK *****
|
|
|
|
*
|
|
|
|
* Copyright 2017-2023 Yzena, LLC
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
*
|
|
|
|
* Licensed under the Yzena Viral User License, Version 0.1 (the "Yzena Viral
|
|
|
|
* User License" or "YVUL"), the GNU Affero General Public License (the "GNU
|
|
|
|
* AGPL"), Version 3.0, and the Server Side Public License (the "SSPL"),
|
|
|
|
* Version 1. You may not use this file except in compliance with all of those
|
|
|
|
* licenses.
|
|
|
|
*
|
|
|
|
* You may obtain a copy of the Yzena Viral User License at
|
|
|
|
*
|
|
|
|
* https://yzena.com/yzena-viral-user-license/
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the Yzena Viral User License is distributed under the
|
|
|
|
* following disclaimer:
|
|
|
|
*
|
|
|
|
* As far as the law allows, this software comes as is, without any
|
|
|
|
* warranty or condition, and no contributor will be liable to anyone for
|
|
|
|
* any damages related to this software or this license, under any kind of
|
|
|
|
* legal claim.
|
|
|
|
*
|
|
|
|
* You may obtain a copy of the GNU Affero General Public License at
|
|
|
|
*
|
|
|
|
* https://www.gnu.org/licenses/agpl-3.0.html
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the GNU Affero General Public License is distributed under
|
|
|
|
* the following disclaimer:
|
|
|
|
*
|
|
|
|
* This software is distributed in the hope that it will be useful, but
|
|
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
|
|
|
|
* General Public License for more details.
|
|
|
|
*
|
|
|
|
* You may obtain a copy of the Server Side Public License at
|
|
|
|
*
|
|
|
|
* https://www.mongodb.com/licensing/server-side-public-license
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the Server Side Public License is distributed under the
|
|
|
|
* following disclaimer:
|
|
|
|
*
|
|
|
|
* This software is distributed in the hope that it will be useful, but
|
|
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Server
|
|
|
|
* Side Public License for more details.
|
|
|
|
*
|
|
|
|
* ****** END LICENSE BLOCK ******
|
|
|
|
*
|
|
|
|
* *****************************************************************
|
|
|
|
*
|
|
|
|
* ******* BEGIN FILE DESCRIPTION *******
|
|
|
|
*
|
|
|
|
* Package build script file.
|
|
|
|
*
|
|
|
|
* ******** END FILE DESCRIPTION ********
|
|
|
|
*/
|
|
|
|
|
|
|
|
fn exe_name(exe: str) -> str
|
|
|
|
{
|
|
|
|
return if platform.os == "Windows" { exe +~ ".exe"; } else { exe; };
|
|
|
|
}
|
|
|
|
|
|
|
|
fn add_exe(exe: str, dep_list: []str) -> str
|
|
|
|
{
|
|
|
|
ret: str = exe_name(exe);
|
|
|
|
|
|
|
|
target ret: dep_list
|
|
|
|
{
|
|
|
|
$ @(config["exe_cmd_line"]) @tgt %deps;
|
|
|
|
}
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
fn add_exe_by_name(exe: str, dep_list: []str) -> str
|
|
|
|
{
|
|
|
|
ret: str = exe_name(exe);
|
|
|
|
file: str = exe +~ ".c";
|
|
|
|
|
|
|
|
target ret: file, dep_list
|
|
|
|
{
|
|
|
|
$ @(config["exe_cmd_line"]) @tgt %deps;
|
|
|
|
}
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
fn add_link_exe(exe: str, dep: str) -> str
|
|
|
|
{
|
|
|
|
ret: str = exe_name(exe);
|
|
|
|
|
|
|
|
target ret: dep
|
|
|
|
{
|
|
|
|
if platform.os != "Windows"
|
|
|
|
{
|
|
|
|
$ ln -sf @("./" +~ deps[0]) @tgt;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
// I don't want to deal with symlinks on Windows.
|
|
|
|
$ copy @("./" +~ deps[0]) @tgt;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
fn add_lib(lib: str, dep_list: []str) -> str
|
|
|
|
{
|
|
|
|
libtgt: str =
|
|
|
|
if platform.os == "Windows"
|
|
|
|
{
|
|
|
|
"lib" +~ lib +~ ".lib";
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
"lib" +~ lib +~ ".a";
|
|
|
|
};
|
|
|
|
|
|
|
|
target libtgt: dep_list
|
|
|
|
{
|
|
|
|
if platform.os == "Windows"
|
|
|
|
{
|
|
|
|
$ @(config["cmd_line"]) @tgt %deps;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
$ ar -r -cu @tgt %deps;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return libtgt;
|
|
|
|
}
|
|
|
|
|
|
|
|
fn add_config_file(out: str, file: str) -> str
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
{
|
|
|
|
return configure_file out, file;
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
}
|
|
|
|
|
|
|
|
fn option(defopt: str, name: str, opt: str) -> []str
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
{
|
|
|
|
opt: str = defopt +~ name +~ (if config[opt] { "=1"; } else { "=0"; });
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
return #[ opt ];
|
|
|
|
}
|
|
|
|
|
|
|
|
fn add_c_file(f: str) -> str
|
|
|
|
{
|
|
|
|
ext: str = if platform.os == "Windows" { "obj" } else { "o" };
|
|
|
|
obj: str = replace_ext f, "c", ext;
|
|
|
|
|
|
|
|
// TODO: Check for includes and add them as dynamic dependencies.
|
|
|
|
target obj: f
|
|
|
|
{
|
|
|
|
$ @(config["cmd_line"]) @tgt %deps;
|
|
|
|
}
|
|
|
|
|
|
|
|
return obj;
|
|
|
|
}
|
|
|
|
|
|
|
|
fn walk_src_dir() -> []str
|
|
|
|
{
|
|
|
|
files: ![]str = #[ ];
|
|
|
|
|
|
|
|
src_files: []str = find "*.c", "src";
|
|
|
|
|
|
|
|
foreach f: src_files
|
|
|
|
{
|
|
|
|
// Skip these two files for now.
|
|
|
|
if f contains "main.c" || f contains "stdio.c"
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
files! +~= f;
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
}
|
|
|
|
|
|
|
|
dirs: []str = find_dirs "src";
|
|
|
|
|
|
|
|
foreach d: dirs
|
|
|
|
{
|
|
|
|
d_files: []str = find "*.c", d;
|
|
|
|
|
|
|
|
foreach f: d_files
|
|
|
|
{
|
|
|
|
files! +~= f;
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
}
|
|
|
|
|
|
|
|
dos: str = d +~ "/os";
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
|
|
|
|
if exists dos
|
|
|
|
{
|
|
|
|
if platform.os == "Windows"
|
|
|
|
{
|
|
|
|
win_files: []str = find "*.c", dos +~ "/windows";
|
|
|
|
|
|
|
|
foreach f: win_files
|
|
|
|
{
|
|
|
|
files! +~= f;
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
}
|
|
|
|
}
|
|
|
|
else if platform.os == "Mac OSX" && exists (dos +~ "/darwin")
|
|
|
|
{
|
|
|
|
darwin_files: []str = find "*.c", dos +~ "/darwin";
|
|
|
|
|
|
|
|
foreach f: darwin_files
|
|
|
|
{
|
|
|
|
files! +~= f;
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
posix_files: []str = find "*.c", dos +~ "/posix";
|
|
|
|
|
|
|
|
foreach f: posix_files
|
|
|
|
{
|
|
|
|
if f contains "semaphore"
|
|
|
|
{
|
|
|
|
if (platform.os == "Mac OSX" &&
|
|
|
|
!(f contains "semaphore_darwin")) ||
|
|
|
|
(platform.os != "Mac OSX" &&
|
|
|
|
f contains "semaphore_darwin")
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
files! +~= f;
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
obj_files: []str =
|
|
|
|
foreach f: files
|
|
|
|
{
|
|
|
|
add_c_file(f);
|
|
|
|
};
|
|
|
|
|
|
|
|
return obj_files;
|
|
|
|
}
|
|
|
|
|
|
|
|
fn add_standalone_c_test(name: str, dep_list: []str) -> void
|
|
|
|
{
|
|
|
|
tst: str = add_exe(name, #[ name +~ ".c" ] +~ dep_list);
|
|
|
|
|
|
|
|
test tst, #[ tst ];
|
|
|
|
}
|
|
|
|
|
|
|
|
fn add_test_lib(name: str, dep_list: []str) -> str
|
|
|
|
{
|
|
|
|
obj: str = add_c_file(name +~ ".c");
|
|
|
|
return add_lib(name, dep_list +~ obj);
|
|
|
|
}
|
|
|
|
|
|
|
|
fn walk_test_dir(lib: str) -> []str
|
|
|
|
{
|
|
|
|
exes: ![]str = #[ ];
|
|
|
|
|
|
|
|
// TODO: Make this more efficient by creating lists that are common, like
|
|
|
|
// lib by itself or lib and libcommon together.
|
|
|
|
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
if config["extra_long_tests"]
|
|
|
|
{
|
|
|
|
add_standalone_c_test("tests/yc_memcpy", #[ lib ]);
|
|
|
|
}
|
|
|
|
|
|
|
|
// This keyword creates a target with the given name that copies a file from
|
|
|
|
// the source directory to the build directory. It returns the name of the
|
|
|
|
// target to use later.
|
|
|
|
//
|
|
|
|
// I did it this way so that targets that have the same name as both a
|
|
|
|
// source and a target won't clash.
|
|
|
|
//
|
|
|
|
// `configure_file` does something similar, but it configures a file as
|
|
|
|
// well. There will also be a `copy_dir` keyword.
|
|
|
|
words: str = copy_file "tests/words.txt";
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
|
|
|
|
strgen: str = add_exe("tests/strgen.c", #[ lib ]);
|
|
|
|
|
|
|
|
libiterator: str = add_test_lib("tests/iterator_tests", #[ lib ]);
|
|
|
|
libcommon: str = add_test_lib("tests/common", #[ lib ]);
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
|
|
|
|
dirs: []str = find_dirs "tests";
|
|
|
|
|
|
|
|
foreach d: dirs
|
|
|
|
{
|
|
|
|
if d contains "container"
|
|
|
|
{
|
|
|
|
if config["long_tests"]
|
|
|
|
{
|
|
|
|
kjvbiblec: str = "kjvbible.c";
|
|
|
|
|
|
|
|
target kjvbiblec: strgen, "kjvbible.txt"
|
|
|
|
{
|
|
|
|
$ @(deps[0]) @(deps[1]) @tgt "kjvbible_array" 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
kjvbible: str = add_lib(d +~ "/" +~ "kjvbible", #[ ]);
|
|
|
|
|
|
|
|
add_standalone_c_test(d +~ "/map_countwords",
|
|
|
|
#[ kjvbible, lib, libcommon ]);
|
|
|
|
add_standalone_c_test(d +~ "/map_stress", #[ lib, libcommon ]);
|
|
|
|
add_standalone_c_test(d +~ "/nvec_stress", #[ lib, libcommon ]);
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
}
|
|
|
|
|
|
|
|
plain_tests: []str = #[
|
|
|
|
"map_all",
|
|
|
|
"array_all",
|
|
|
|
"vec_push",
|
|
|
|
"vec_npush",
|
|
|
|
"vec_pop",
|
|
|
|
"vec_npop",
|
|
|
|
"vec_add",
|
|
|
|
"vec_nadd",
|
|
|
|
"vec_remove",
|
|
|
|
"vec_nremove",
|
|
|
|
"vec_setcap",
|
|
|
|
"vec_setlen",
|
|
|
|
"vec_stress",
|
|
|
|
"vec_copy",
|
|
|
|
"svec_push",
|
|
|
|
"svec_npush",
|
|
|
|
"svec_pop",
|
|
|
|
"svec_npop",
|
|
|
|
"stack_all",
|
|
|
|
"treevec_all",
|
|
|
|
];
|
|
|
|
|
|
|
|
foreach t: plain_tests
|
|
|
|
{
|
|
|
|
if t == "vec_stress" || t == "map_all"
|
|
|
|
{
|
|
|
|
add_standalone_c_test(d +~ "/" +~ t,
|
|
|
|
#[ lib, libcommon, words ]);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
add_standalone_c_test(d +~ "/" +~ t, #[ lib, libcommon ]);
|
|
|
|
}
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
}
|
|
|
|
|
|
|
|
nvec_tests: []str = #[
|
|
|
|
"nvec_push",
|
|
|
|
"nvec_npush",
|
|
|
|
"nvec_pop",
|
|
|
|
"nvec_npop",
|
|
|
|
"nvec_add",
|
|
|
|
"nvec_nadd",
|
|
|
|
"nvec_remove",
|
|
|
|
"nvec_nremove",
|
|
|
|
"nvec_setcap",
|
|
|
|
"nvec_setlen",
|
|
|
|
"nvec_copy",
|
|
|
|
];
|
|
|
|
|
|
|
|
libnvec: str = add_test_lib(d +~ "/nvec_tests",
|
|
|
|
#[ lib, libcommon ]);
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
|
|
|
|
foreach t: nvec_tests
|
|
|
|
{
|
|
|
|
add_standalone_c_test(d +~ "/" +~ t,
|
|
|
|
#[ lib, libcommon, libnvec ]);
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
}
|
|
|
|
|
|
|
|
tree_tests: []str = #[
|
|
|
|
"tree_add",
|
|
|
|
"tree_remove",
|
|
|
|
"tree_removeAll",
|
|
|
|
"tree_copy",
|
|
|
|
"tree_empty",
|
|
|
|
"tree_iterator",
|
|
|
|
];
|
|
|
|
|
|
|
|
libtree: str = add_test_lib(d +~ "/tree_tests", #[ lib ]);
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
|
|
|
|
foreach t: tree_tests
|
|
|
|
{
|
|
|
|
if t == "tree_iterator"
|
|
|
|
{
|
|
|
|
add_standalone_c_test(d +~ "/" +~ t, #[ lib, libcommon,
|
|
|
|
libtree,
|
|
|
|
libiterator ]);
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
add_standalone_c_test(d +~ "/" +~ t,
|
|
|
|
#[ lib, libcommon, libtree ]);
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
ntree_tests: [] str = #[
|
|
|
|
"ntree_add",
|
|
|
|
"ntree_remove",
|
|
|
|
"ntree_copy",
|
|
|
|
"ntree_empty",
|
|
|
|
"ntree_iterator",
|
|
|
|
];
|
|
|
|
|
|
|
|
libntree: str = add_test_lib(d +~ "/ntree_tests", #[ lib ]);
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
|
|
|
|
foreach t: ntree_tests
|
|
|
|
{
|
|
|
|
if t == "ntree_iterator"
|
|
|
|
{
|
|
|
|
add_standalone_c_test(d +~ "/" +~ t, #[ lib, libcommon,
|
|
|
|
libntree,
|
|
|
|
libiterator ]);
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
add_standalone_c_test(d +~ "/" +~ t,
|
|
|
|
#[ lib, libcommon, libntree ]);
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if d contains "arith"
|
|
|
|
{
|
|
|
|
if config["long_tests"]
|
|
|
|
{
|
|
|
|
add_standalone_c_test(d +~ "/arith_sn", #[ lib, libcommon ]);
|
|
|
|
add_standalone_c_test(d +~ "/arith_slt", #[ lib, libcommon ]);
|
|
|
|
add_standalone_c_test(d +~ "/arith_sle", #[ lib, libcommon ]);
|
|
|
|
add_standalone_c_test(d +~ "/arith_sgt", #[ lib, libcommon ]);
|
|
|
|
add_standalone_c_test(d +~ "/arith_sge", #[ lib, libcommon ]);
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
}
|
|
|
|
|
|
|
|
add_standalone_c_test(d +~ "/arith_sshr", #[ lib, libcommon ]);
|
|
|
|
add_standalone_c_test(d +~ "/arith_ushr", #[ lib, libcommon ]);
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
}
|
|
|
|
else if d contains "str"
|
|
|
|
{
|
|
|
|
add_standalone_c_test(d +~ "/string_all", #[ lib, libcommon ]);
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
}
|
|
|
|
else if d contains "io"
|
|
|
|
{
|
|
|
|
add_standalone_c_test(d +~ "/fs_open", #[ lib, libcommon ]);
|
|
|
|
add_standalone_c_test(d +~ "/fs_read", #[ lib, libcommon, words ]);
|
|
|
|
add_standalone_c_test(d +~ "/fs_unicode", #[ lib, libcommon ]);
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
}
|
|
|
|
else if d contains "gaml"
|
|
|
|
{
|
|
|
|
exes! +~= add_exe_by_name(d +~ "/gaml_fuzz_parse",
|
|
|
|
#[ lib, libcommon ]);
|
|
|
|
exes! +~= add_exe_by_name(d +~ "/gaml_fuzz_edit",
|
|
|
|
#[ lib, libcommon ]);
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
}
|
|
|
|
else if d contains "alloc"
|
|
|
|
{
|
|
|
|
add_standalone_c_test(d +~ "/mappool_all", #[ lib, libcommon ]);
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
}
|
|
|
|
else if d contains "util"
|
|
|
|
{
|
|
|
|
libhashobj: str = add_c_file(d +~ "/hash_tests.c");
|
|
|
|
libhash: str = add_lib(d +~ "/hash_tests", #[ libhashobj, lib]);
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
|
|
|
|
add_standalone_c_test(d +~ "/hash_results",
|
|
|
|
#[ lib, libcommon, libhash ]);
|
|
|
|
add_standalone_c_test(d +~ "/hash_alignment",
|
|
|
|
#[ lib, libcommon, libhash ]);
|
|
|
|
add_standalone_c_test(d +~ "/hash_pieces",
|
|
|
|
#[ lib, libcommon, libhash ]);
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
|
|
|
|
if config["extra_long_tests"]
|
|
|
|
{
|
|
|
|
add_standalone_c_test(d +~ "/hash_deltas",
|
|
|
|
#[ lib, libcommon, libhash ]);
|
Rewrite Yc's build system in Rig
This does not get rid of the CMake build system yet. It only brings the
Rig build up to par with the CMake one, or it would if Rig and Yao had
all of the features required.
They don't, of course, but I did this commit before because these build
files are now going to be used to implement the missing features
one-by-one.
It will be slow going, but at the end of it, I can get rid of the CMake
build system. However, before I do that, I need to make sure Rig builds
itself on Linux, Mac OSX, FreeBSD, OpenBSD, NetBSD, and Windows.
Signed-off-by: Gavin Howard <gavin@yzena.com>
7 months ago
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
error "Unhandled test directory: " +~ d;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return exes;
|
|
|
|
}
|