Skip to main content
Loading...

More Shell Posts

#!/bin/bash

#makefileMaker.sh by Leif Messinger

#Needs getDependencies.sh

CC="gcc"

#I have no idea why it's called CXX when it's a c++ compiler

#I know that cpp is c pre processor, but still, why X?
CXX="g++"

CXXFLAGS="-std=c++17 -O2"

#CFLAGS="-std=c17"
LIBRARIES="$@"

#Vulkan Flags for me

#LIBRARIES="-lglfw -lvulkan -ldl -lpthread -lX11 -lXxf86vm -lXrandr -lXi"

function compileAllFiles(){

	#output: bruh.o yeet.o

	#	CXX $CXXFLAGS bruh.o yeet.o -o output $LIBRARIES
	echo -n "output:"
	if compgen -G "*.cpp" &> /dev/null; then
		for f in *.cpp; do
			echo -n " ${f%.cpp}.o"
		done
	fi
	if compgen -G "*.c" &> /dev/null; then
		for f in *.c; do
			echo -n " ${f%.c}.o"
		done
	fi
	echo ""

	if compgen -G "*.cpp" &> /dev/null; then
		echo -e -n "\t$CXX $CXXFLAGS "
	else
		echo -e -n "\t$CC $CFLAGS "
	fi
	if compgen -G "*.cpp" &> /dev/null; then
		for f in *.cpp; do
			echo -n " ${f%.cpp}.o"
		done
	fi
	if compgen -G "*.c" &> /dev/null; then
		for f in *.c; do
			echo -n " ${f%.c}.o"
		done
	fi
	echo " -o output $LIBRARIES"
	echo ""
}

function compileAllObjectFiles(){

	#bruh.o: bruh.cpp yeet.h

	#	CXX $CXXFLAGS -c bruh.cpp $LIBRARIES
	if compgen -G "*.cpp" &> /dev/null; then
		for f in *.cpp; do
			echo -n "${f%.cpp}.o: $f"
			getDependencies.sh < $f
			echo ""

			echo -e "\t$CXX $CXXFLAGS -c $f"
			echo ""
		done
	fi

	#yeet.o: yeet.c

	#	CC $CFLAGS -c yeet.c $LIBRARIES
	if compgen -G "*.c" &> /dev/null; then
		for f in *.c; do
			echo -n "${f%.c}.o: $f"
			getDependencies.sh < $f
			echo ""

			echo -e "\t$CC $CFLAGS -c $f"
			echo ""
		done
	fi
}

compileAllFiles

compileAllObjectFiles


#does not work on windows
echo "clean:"
echo -e "\trm -f -v *.o output"
echo ""

echo "run:"
echo -e "\t./output"
echo ""

echo "debug:"
if compgen -G "*.cpp" &> /dev/null; then
	echo -e -n "\t$CXX $CXXFLAGS -g "
else
	echo -e -n "\t$CC $CFLAGS -g "
fi
if compgen -G "*.cpp" &> /dev/null; then
	for f in *.cpp; do
		echo -n " ${f}"
	done
fi
if compgen -G "*.c" &> /dev/null; then
	for f in *.c; do
		echo -n " ${f}"
	done
fi
echo " $LIBRARIES -o output"
echo ""