summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile66
1 files changed, 66 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..73097e1
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,66 @@
+# Copyright (c) 2025 Quinn Stephens and the OSMORA team.
+# All rights reserved.
+#
+# 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 Hyra 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 OWNER 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.
+
+ENABLE_DEBUG = 1
+CC = clang
+LD = ld.ldd
+
+OFILES = $(addprefix src/,log.o hash.o hashmap.o lexer/char_info.o lexer/keywords.o lexer/lexer.o main.o)
+CFLAGS = -Wall -Wextra -Werror -Iinclude -O3
+LDFLAGS =
+
+ifeq ($(OS),Windows_NT)
+HOST_OS = Windows
+else
+HOST_OS = $(shell uname)
+endif
+
+ifeq ($(HOST_OS),Windows)
+EXENAME = occ.exe
+else
+EXENAME = occ
+endif
+
+ifeq ($(ENABLE_DEBUG),1)
+CFLAGS += -DENABLE_DEBUG
+endif
+
+.PHONY: All
+all: $(EXENAME)
+
+$(EXENAME): $(OFILES)
+ @echo Linking $@...
+ @$(CC) $^ $(LDFLAGS) -o $@
+
+%.o: %.c
+ @echo Compiling $<...
+ @$(CC) -c $< $(CFLAGS) -o $@
+
+.PHONY: clean
+clean:
+ @echo Cleaning...
+ @rm -f $(OFILES)