~notfinxx/slate

a build system written in c99

918cfa0 Add batch configuration script

~notfinxx pushed to ~notfinxx/slate git

7 months ago

19757d4 Fix missing newline on error

~notfinxx pushed to ~notfinxx/slate git

10 months ago
Slate is a simple configuration-based build-system.

$ slate [build|run|debug]

The tool looks for a file called "project.prj" when ran. It generates and runs
a command to compile the source based on the file.

project.prj has a key-value syntax similar to NSIS Install Scripts. Single line
comments are prefixed with a #.

Example project.prj:
```
Name program
Lang c

SrcDir src
ObjDir obj
Bin program
```

To bootstrap Slate, run ./configure. It will generate a build.sh file to build
the source code.

Slate currently supports C and C++ with the MSVC and GCC compilers, C# with
the Mono compiler, and Java with javac.

C and C++ options:
Bin [file] - specifies the binary executable file
Warnings [Error, Max] - enables Werror and Wall respectively
Debug - generate debug symbols
Standard [std] - specify C standard
Define [macro] - define a macro
Optimize [Speed, Size] - enables optimizing for Speed and Size respectively
Vcpkg - enables using vcpkg for libraries
Library [file] - specifies a library dependency
SrcDir [dir] - specifies a directory of .c files to compile
IncludeDir [dir] - specifies a directory to add to the include path
LibraryDir [dir] - specifies a directory to look for libraries
ObjDir [dir] - specifies the directory to dump object files in (MSVC only)
IgnoreUnsafeStr - Disable CRT warnings when using string functions (MSVC only)

C# options:
Bin [file] - specifies the binary executable file
Warnings [Error] - enables Werror
Debug - generate debug symbols
Optimize - optimize code generation
Library [file] - specifies an assembly reference
LibraryDir [dir] - specifies a directory to look for libraries
SrcDir [dir] - specifies a directory of .cs files to compile

Java options:
Bin [file] - specifies the final jar file
Warnings [Error] - enables Werror
Debug - generate debug symbols
Library [file] - specifies a library dependency (JAR)
SrcDir [dir] - specifies a directory of .java files to compile
ObjDir [dir] - specifies where to place classes
Main [class] - specifies the main class

Universal options:
Run - run an executable file
RunQuiet - run an executable file and discard stdout and stderr
Flag - add a compiler flag