rafael преди 9 години
родител
ревизия
0f438b2a6f
променени са 2 файла, в които са добавени 172 реда и са изтрити 1 реда
  1. 121 0
      BUILD
  2. 51 1
      BUILD.conf

+ 121 - 0
BUILD

@@ -278,6 +278,110 @@ build_klibs()
 	fi
 }
 
+#ARGS:
+#   $1 -> LIB name
+do_link_lib()
+{
+	AUX=`echo $1 | grep ^lib`
+	_LIB_NAME=
+	if [ -n "$AUX" ]
+	then
+		#Name format is libName
+		_LIB_NAME=`echo $AUX | cut -c 4-`
+		_LIB_NAME="-l$_LIB_NAME"
+	else
+		#Name format is Name
+		_LIB_NAME="-l$1"
+	fi
+	echo $_LIB_NAME
+}
+
+#ARGS:
+#	$1 -> libs list
+process_libs_to_link()
+{
+	_RETURN=
+	for i in $1
+	do
+		_RETURN=${_RETURN}" "`do_link_lib $i`
+	done
+	echo $_RETURN
+}
+
+#ARGS:
+#  $1 -> cmd name
+build_a_cmd()
+{
+	cd ${CMD_DIR}/$1
+	DO_NOTHING=0
+	LDFLAGS_EXTRA=
+	CFLAGS_EXTRA=
+	cmd_${1} 1
+	if [ $DO_NOTHING -eq 0 ]
+	then
+		echo "$CC $CFLAGS_CMD $CFLAGS_EXTRA $BUILD_DEBUG -c $BUILD_IN"
+		$CC $CFLAGS_CMD $CFLAGS_EXTRA $BUILD_DEBUG -c $BUILD_IN 
+		if [ $? -ne 0 ]
+		then
+			echo "ERROR compiling $1"
+			cd - > /dev/null
+			exit 1
+		fi
+		LD_LIBS=`process_libs_to_link "$LIBS_TO_LINK"`
+		echo $LD $LDFLAGS $LDFLAGS_EXTRA $LD_LIBS -o $BUILD_OUT *.o
+		$LD $LDFLAGS_EXTRA $LDFLAGS -o $BUILD_OUT *.o $LD_LIBS
+		if [ $? -ne 0 ]
+		then
+			echo "ERROR linking $1"
+			cd - > /dev/null
+			exit 1
+		fi
+	fi
+	cd - > /dev/null
+}
+
+#ARGS:
+#   $1 -> cmd name
+clean_a_cmd()
+{
+	cd ${CMD_DIR}/$1
+	DO_NOTHING=0
+	cmd_${1} 2
+	if [ $DO_NOTHING -eq 0 ]
+	then
+		printf "Cleaning $1 "
+		$CLEAN_COM
+		if [ $? -eq 0 ]
+		then
+			printf "OK\n"
+		else
+			printf "ERROR\n"
+		fi 
+	fi
+}
+
+#ARGS:
+#$1 -> ACTION:
+#      1) Build
+#      2) Clean
+build_cmds()
+{
+	for i in $BUILD_CMD
+	do
+		if [ $1 -eq 1 ]
+		then
+			build_a_cmd $i
+		else
+			clean_a_cmd $i
+		fi
+	done
+	
+	if [ $1 -eq 1 ]
+	then
+		echo "ALL CMDS COMPILED OK"
+	fi
+}
+
 show_help()
 {
 	printf "\n\nBUILD script for Harvey\n\n"
@@ -291,6 +395,9 @@ show_help()
 	printf "  klibs <libname>\tBuild the Klibrary <libname>\n"
 	printf "  cleanklibs\tClean the Klibraries\n"
 	printf "  utils     \tBuild go utils\n"
+	printf "  cmd       \tBuild all cmds \n"
+	printf "  cmd <cmdname>\tBuild cmd named <cmdname>\n"
+	printf "  cleancmd   tClean the cmds\n"
 	printf "\nFLAGS:\n"
 	printf "  -g        \tCompile with debugs flags"
 	printf "\n"
@@ -313,11 +420,13 @@ else
 			"all")
 					build_libs 1
 					build_klibs 1
+					build_cmds 1
 					printf "\n\nALL COMPONENTS COMPILED\n\n"
 					;;
 			"cleanall")
 					build_libs 2
 					build_klibs 2
+					build_cmds 2
 					printf "\n\nALL COMPONENTS CLEANED\n\n"
 					;;
 			"libs")
@@ -347,6 +456,18 @@ else
 			"utils")
 					build_go_utils
 					;;
+			"cmd")
+					if [ -z "$2" ]
+					then
+						build_cmds 1
+					else
+						build_a_cmd "$2"
+						shift
+					fi
+					;;
+			"cleancmd")
+					build_cmds 2
+					;;
 			*)
 				echo "Invalid option <$1>"
 				exit 1

+ 51 - 1
BUILD.conf

@@ -4,21 +4,25 @@
 ARCH=amd64
 
 ### DIRS ###
-BASEDIR=/
+BASEDIR=
 INC_DIR=${BASEDIR}/sys/include
 INC_ARCH=${BASEDIR}/${ARCH}/include
 LIB_DIR=${BASEDIR}/${ARCH}/lib
 SRC_DIR=${BASEDIR}/sys/src
 UTIL_DIR=${_BUILD_DIR}/util
+CMD_DIR=${SRC_DIR}/cmd
 
 ### COMPILER ###
 CC=gcc
 CFLAGS_DEBUG="-g"
 CFLAGS_LIB="-O0 -static -fplan9-extensions -ffreestanding -fno-builtin -Wall -Wno-missing-braces -Wno-parentheses -Wno-unknown-pragmas -Wuninitialized -Wmaybe-uninitialized -I${INC_ARCH} -I${INC_DIR}"
 CFLAGS_KLIB="-mcmodel=kernel -O0 -fplan9-extensions -ffreestanding -fno-builtin -Wall -Wno-missing-braces -Wno-parentheses -Wno-unknown-pragmas -Wuninitialized -Wmaybe-uninitialized -I${INC_ARCH} -I${INC_DIR}"
+CFLAGS_CMD="-mcmodel=small -O0 -fplan9-extensions -ffreestanding -fno-builtin -Wall -Wno-missing-braces -Wno-parentheses -Wno-unknown-pragmas -Wuninitialized -Wmaybe-uninitialized -I${INC_ARCH} -I${INC_DIR}"
 LDFLAGS=-L$LIB_DIR
 AR=ar
 RANLIB=ranlib
+LD=ld
+PARSER_GEN=yacc
 
 ### Libraries ###
 BUILD_LIBS="lib9p libString libauth libauthsrv libavl libbin libbio libcomplete libcontrol libdisk libdraw libflate libframe libgeometry libhtml libhttpd\
@@ -26,6 +30,52 @@ BUILD_LIBS="lib9p libString libauth libauthsrv libavl libbin libbio libcomplete
 
 BUILD_KLIBS="libc libip"
 
+### CMD ###
+BUILD_CMD="rc"
+
+cmd_rc()
+{
+	BUILD_IN="	code.c \
+				exec.c \
+				getflags.c \
+				glob.c \
+				havefork.c \
+				here.c \
+				io.c \
+				lex.c \
+				pcmd.c \
+				pfnc.c \
+				plan9.c \
+				simple.c \
+				subr.c \
+				trap.c \
+				tree.c \
+				var.c \
+				y.tab.c \
+				"
+	BUILD_OUT="rc.elf.out"
+	CLEAN_COM="rm -f *.o *.tab.*"
+	LIBS_TO_LINK="String libc"
+	LDFLAGS_EXTRA="-static -emain -Ttext=0x200000"
+	
+	#Extra tasks if we're compiling
+	if [ $1 -eq 1 ]
+	then
+		echo "$PARSER_GEN -d syn.y"
+		$PARSER_GEN -d syn.y
+		if [ $? -ne 0 ]
+		then
+			echo "ERROR executing $PARSER_GEN"
+			exit 1
+		fi
+		echo "cp y.tab.h x.tab.h"
+		cp y.tab.h x.tab.h
+		if [ $? -ne 0 ]
+		then
+			echo "ERROR copying y.tab.h to x.tab.h"
+		fi
+	fi
+}
 
 lib9p()
 {