commit 0ddd6d6e238cc99933275cee591312ec3c158fe1 Author: Ian Moffett Date: Fri Feb 13 22:48:10 2026 -0500 initial commit Signed-off-by: Ian Moffett diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f728be1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.o +*.d +/rifle diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..cf7f679 --- /dev/null +++ b/LICENSE @@ -0,0 +1,28 @@ +BSD 3-Clause License + +Copyright (c) 2026, Ian Moffett + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..41556e6 --- /dev/null +++ b/Makefile @@ -0,0 +1,17 @@ +CFILES = $(shell find core/ -name "*.c") +OFILES = $(CFILES:.c=.o) +DFILES = $(CFILES:.c=.d) + +CC = gcc +CFLAGS = -Wall -pedantic -Iinc/ -MMD + +.PHONY: all +all: $(OFILES) + $(CC) $(OFILES) -o rifle + +%.o: %.c + $(CC) -c $< $(CFLAGS) -o $@ + +.PHONY: clean +clean: + rm -f $(OFILES) $(DFILES) diff --git a/core/rifle.c b/core/rifle.c new file mode 100644 index 0000000..7c94997 --- /dev/null +++ b/core/rifle.c @@ -0,0 +1,49 @@ +#include +#include +#include + +/* Compiler version */ +#define RIFLE_VERSION "0.0.1" + +static void +help(void) +{ + printf( + "The Rifle compiler - rack, bang bang\n" + "------------------------------------\n" + "[-h] Display this help menu\n" + "[-v] Display the version\n" + ); +} + +static void +version(void) +{ + printf( + "The Rifle compiler - rack, bang bang\n" + "------------------------------------\n" + "Copyright (c) 2026, Ian Moffett\n" + "Version v%s\n", + RIFLE_VERSION + ); +} + +int +main(int argc, char **argv) +{ + int opt; + + /* Begin parsing command line options */ + while ((opt = getopt(argc, argv, "hv")) != -1) { + switch (opt) { + case 'h': + help(); + return -1; + case 'v': + version(); + return -1; + } + } + + return 0; +}