diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2024-10-18 22:35:27 +0300 | 
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2024-10-23 18:25:23 +0300 | 
| commit | 7c5f098511b8f612a17f4ccdd8a4924c325d37e1 (patch) | |
| tree | 4a97d802557bbffcadfcfd776c8e4afdb31d96aa /scripts | |
| parent | 18262dcbecd97591dd15ee9274a81abb8c2ba1c4 (diff) | |
| download | lyn-7c5f098511b8f612a17f4ccdd8a4924c325d37e1.tar.gz lyn-7c5f098511b8f612a17f4ccdd8a4924c325d37e1.zip | |
initial parser+lexer
+ AST might still change, also not a *huge* fan of having to reverse
  all arrays but I guess it's unlikely to be a significant bottleneck
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/gen-deps | 37 | ||||
| -rwxr-xr-x | scripts/license | 16 | ||||
| -rw-r--r-- | scripts/makefile | 74 | ||||
| -rwxr-xr-x | scripts/warn-undocumented | 7 | 
4 files changed, 134 insertions, 0 deletions
| diff --git a/scripts/gen-deps b/scripts/gen-deps new file mode 100755 index 0000000..f45707c --- /dev/null +++ b/scripts/gen-deps @@ -0,0 +1,37 @@ +#!/bin/sh + +PREFIX= +COMPILE=COMPILE +LINT=LINT +BUILD=build/ + +while getopts "p:c:b:l:" opt; do +	case "$opt" in +		p) PREFIX="$OPTARG"_;; +		c) COMPILE="$OPTARG";; +		l) LINT="$OPTARG";; +		b) BUILD=build/"$OPTARG";; +		*) echo "unrecognised option -$OPTARG" >&2; exit 1;; +	esac +done + +shift $((OPTIND - 1)) + +# create all subdirectories +mkdir -p $(echo "${@}" | tr ' ' '\n' | sed "s|[^/]*$||;s|^|${BUILD}/|" | uniq) + +for s in ${@} +do +	obj="${BUILD}/${s%.*}.o" +	lint="${obj}.l" +	dep="${obj}.d" + +	echo "${PREFIX}OBJS += ${obj}"			>> deps.mk +	echo "${PREFIX}LINTS += ${lint}"		>> deps.mk +	echo "${dep}:"					>> deps.mk +	echo "-include ${dep}"				>> deps.mk +	echo "${obj}: ${s}"				>> deps.mk +	echo "	\$(${COMPILE}) -c ${s} -o ${obj}"	>> deps.mk +	echo "${lint}: ${s}"				>> deps.mk +	echo "	\$(${LINT}) -c ${s} -o /dev/null"	>> deps.mk +done diff --git a/scripts/license b/scripts/license new file mode 100755 index 0000000..53bd5da --- /dev/null +++ b/scripts/license @@ -0,0 +1,16 @@ +#!/bin/sh + +SPDX="/* SPDX-License-Identifier: copyleft-next-0.3.1 */" + +for f in "$@" +do +	if [ "$(head -1 "$f")" != "${SPDX}" ] +	then +		sed -i "1i${SPDX}\n" "$f" +	fi + +	if ! grep 'Copyright' "$f" > /dev/null +	then +		echo "Missing copyright info in $f" +	fi +done diff --git a/scripts/makefile b/scripts/makefile new file mode 100644 index 0000000..dd0f7fd --- /dev/null +++ b/scripts/makefile @@ -0,0 +1,74 @@ +# this could be done better +RELEASE		?= 0 +OPTFLAGS	!= [ "$(RELEASE)" != "0" ] \ +			&& echo "-O2 -flto=auto" \ +			|| echo "-O0" + +DEBUG		?= 1 +DEBUGFLAGS	!= [ "$(DEBUG)" != "0" ] \ +			&& echo "-DDEBUG=1" \ +			|| echo "-DNDEBUG=1" + +ASSERT		?= 1 +ASSERTFLAGS	!= [ "$(ASSERT)" != "0" ] \ +			&& echo "-DASSERT=1" \ +			|| echo + +DEPFLAGS	= -MT $@ -MMD -MP -MF $@.d +LINTFLAGS	:= -fsyntax-only +PREPROCESS	:= -E + +LLVM		?= 0 +BUILD		:= build + +all: lyn + +include gen/source.mk + +# default values, overwrite if/when needed +CROSS_COMPILE	:= + +OBJCOPY		!= [ "$(LLVM)" != "0" ] \ +			&& echo llvm-objcopy \ +			|| echo $(CROSS_COMPILE)objcopy + +COMPILER	!= [ -n "$(CROSS_COMPILE)" ]						\ +			&& {								\ +				[ "$(LLVM)" != "0" ]					\ +					&& echo clang --target="$(CROSS_COMPILE)"	\ +					|| echo $(CROSS_COMPILE)gcc			\ +					;						\ +			}								\ +			|| echo $(CC) + + +OBFLAGS		:= -g +WARNFLAGS	:= -Wall -Wextra + +COMPILE_FLAGS	:= $(CFLAGS) $(WARNFLAGS) $(OPTFLAGS) $(OBFLAGS) $(ASSERTFLAGS) \ +		   $(DEBUGFLAGS) + +INCLUDE_FLAGS	:= -I include + +COMPILE		= $(COMPILER) \ +		  $(COMPILE_FLAGS) $(DEPFLAGS) $(INCLUDE_FLAGS) + +LINT		= $(COMPILER) \ +		  $(COMPILE_FLAGS) $(LINTFLAGS) $(INCLUDE_FLAGS) + +UBSAN		?= 0 +TRISCV_FLAGS	!= [ "$(UBSAN)" != "0" ] \ +			&& echo -fsanitize=undefined \ +			|| echo + +COMPILE_LYN	= $(COMPILE) $(LYN_FLAGS) + +-include deps.mk + +lyn: $(LYN_OBJS) build/gen/parser.o +	$(COMPILE_LYN) $(LYN_OBJS) build/gen/parser.o -o $@ + + +# might lint some common things twice +.PHONY: +lint: $(LYN_LINTS) diff --git a/scripts/warn-undocumented b/scripts/warn-undocumented new file mode 100755 index 0000000..db22249 --- /dev/null +++ b/scripts/warn-undocumented @@ -0,0 +1,7 @@ +#!/bin/sh +# look through all files for either @file or \file +for file in $@ +do +	grep -c '[@\]file' "$file" |\ +	awk -F':' "\$1 == 0 {print \"Undocumented file: $file\"}" +done | 
