CC = gcc
CFLAGS = -O2 -Wall -Wextra -Winit-self
LDFLAGS = -lSDL2 -lSDL2_image
INCLUDEDIR = include
HEADERS = -Iheaders
BUILDDIR = build
VERSION = 0.2.0
OBJS = ${BUILDDIR}/obj/lexsdl.o ${BUILDDIR}/obj/internal.o ${BUILDDIR}/obj/window.o ${BUILDDIR}/obj/renderer.o ${BUILDDIR}/obj/texture.o ${BUILDDIR}/obj/sprite.o ${BUILDDIR}/obj/event.o ${BUILDDIR}/obj/mouse.o
LIB = ${BUILDDIR}/lib/liblexsdl.a
CLIB = ${BUILDDIR}/c/liblexsdl.a
RUSTLIB = target/release/liblexsdl.a
lib: rustlib
clib: ${OBJS}
@echo ""
@rm -rf ${BUILDDIR}/lib/
@mkdir -p ${BUILDDIR}/include/LEXSDL
@mkdir -p ${BUILDDIR}/lib
@mkdir -p ${BUILDDIR}/c
@echo -e "\033[0;32mCopying LEXSDL headers\033[0m"
@cp -r ${INCLUDEDIR}/* ${BUILDDIR}/include/LEXSDL/
@echo -e "\033[0;32mPacking liblexsdl.a\033[0m"
@ar rcs ${CLIB} ${OBJS}
@cp ${CLIB} ${BUILDDIR}/lib/
@echo ""
@echo -e "\033[0;92mC BUILD SUCCESFULL!\033[0m"
rustlib:
@echo ""
@rm -rf ${BUILDDIR}/lib/
@rm -rf ${BUILDDIR}/lib32/
@mkdir -p ${BUILDDIR}/lib
@mkdir -p ${BUILDDIR}/lib32
@mkdir -p ${BUILDDIR}/include/LEXSDL
@echo -e "\033[0;32mCopying LEXSDL headers\033[0m"
@cp -r ${INCLUDEDIR}/* ${BUILDDIR}/include/LEXSDL/
@cp src/linux.sh ${BUILDDIR}/
@echo -e "\033[0;32mCompiling Rust LEXSDL\033[0m"
@echo ""
@cargo build --release
@cargo build --release --target i686-unknown-linux-gnu
@echo ""
@cp ${RUSTLIB} ${BUILDDIR}/lib/
@cp target/i686-unknown-linux-gnu/release/liblexsdl.a ${BUILDDIR}/lib32/
@echo -e "\033[0;92mRUST BUILD SUCCESFULL!\033[0m"
rustlibwin:
@echo ""
@rm -rf ${BUILDDIR}/lib/
@rm -rf ${BUILDDIR}/lib32/
@mkdir -p ${BUILDDIR}/lib
@mkdir -p ${BUILDDIR}/lib32
@mkdir -p ${BUILDDIR}/include/LEXSDL
@echo -e "\033[0;32mCopying LEXSDL headers\033[0m"
@cp -r ${INCLUDEDIR}/* ${BUILDDIR}/include/LEXSDL/
@echo -e "\033[0;32mCompiling Rust LEXSDL WINDOWS\033[0m"
@echo ""
@cargo build --release --target x86_64-pc-windows-gnu
@cargo build --release --target i686-pc-windows-gnu
@echo ""
@cp target/x86_64-pc-windows-gnu/release/liblexsdl.a ${BUILDDIR}/lib/
@cp target/x86_64-pc-windows-gnu/release/lexsdl.dll ${BUILDDIR}/lib/
@cp target/i686-pc-windows-gnu/release/liblexsdl.a ${BUILDDIR}/lib32/
@cp target/i686-pc-windows-gnu/release/lexsdl.dll ${BUILDDIR}/lib32/
@echo -e "\033[0;92mRUST WINDOWS BUILD SUCCESFULL!\033[0m"
testing: clib
@echo -e "\033[0;32mBuilding Example Testing\033[0m"
${CC} ${CFLAGS} ${INCLUDEDIR} ${HEADERS} examples/testing.c ${LIB} -o ${BUILDDIR}/testing ${LDFLAGS}
${BUILDDIR}/testing
complete: clib
@echo -e "\033[0;32mBuilding Example Complete\033[0m"
${CC} ${CFLAGS} ${INCLUDEDIR} ${HEADERS} examples/complete.c ${LIB} -o ${BUILDDIR}/complete ${LDFLAGS}
${BUILDDIR}/complete
integrating: clib
@echo -e "\033[0;32mBuilding Example Integrating\033[0m"
${CC} ${CFLAGS} ${INCLUDEDIR} ${HEADERS} examples/integrating.c ${LIB} -o ${BUILDDIR}/integrating ${LDFLAGS}
${BUILDDIR}/integrating
${BUILDDIR}/obj/lexsdl.o: src/lexsdl.c ${INCLUDEDIR}/LEXSDL.h headers/LEXSDL_internal.h
@echo -e "\033[0;32mCompiling lexsdl.o\033[0m"
@mkdir -p ${BUILDDIR}/obj
@${CC} ${CFLAGS} -I${INCLUDEDIR} ${HEADERS} -c src/lexsdl.c -o ${BUILDDIR}/obj/lexsdl.o
${BUILDDIR}/obj/internal.o: src/internal.c headers/LEXSDL_internal.h
@echo -e "\033[0;32mCompiling internal.o\033[0m"
@mkdir -p ${BUILDDIR}/obj
@${CC} ${CFLAGS} -I${INCLUDEDIR} ${HEADERS} -c src/internal.c -o ${BUILDDIR}/obj/internal.o
${BUILDDIR}/obj/window.o: src/window.c ${INCLUDEDIR}/LEXSDL_window.h headers/LEXSDL_internal.h
@echo -e "\033[0;32mCompiling window.o\033[0m"
@mkdir -p ${BUILDDIR}/obj
@${CC} ${CFLAGS} -I${INCLUDEDIR} ${HEADERS} -c src/window.c -o ${BUILDDIR}/obj/window.o
${BUILDDIR}/obj/renderer.o: src/renderer.c ${INCLUDEDIR}/LEXSDL_renderer.h headers/LEXSDL_internal.h
@echo -e "\033[0;32mCompiling renderer.o\033[0m"
@mkdir -p ${BUILDDIR}/obj
@${CC} ${CFLAGS} -I${INCLUDEDIR} ${HEADERS} -c src/renderer.c -o ${BUILDDIR}/obj/renderer.o
${BUILDDIR}/obj/texture.o: src/texture.c ${INCLUDEDIR}/LEXSDL_texture.h headers/LEXSDL_internal.h
@echo -e "\033[0;32mCompiling texture.o\033[0m"
@mkdir -p ${BUILDDIR}/obj
@${CC} ${CFLAGS} -I${INCLUDEDIR} ${HEADERS} -c src/texture.c -o ${BUILDDIR}/obj/texture.o
${BUILDDIR}/obj/sprite.o: src/sprite.c ${INCLUDEDIR}/LEXSDL_sprite.h headers/LEXSDL_internal.h
@echo -e "\033[0;32mCompiling sprite.o\033[0m"
@mkdir -p ${BUILDDIR}/obj
@${CC} ${CFLAGS} -I${INCLUDEDIR} ${HEADERS} -c src/sprite.c -o ${BUILDDIR}/obj/sprite.o
${BUILDDIR}/obj/event.o: src/event.c ${INCLUDEDIR}/LEXSDL_event.h headers/LEXSDL_internal.h
@echo -e "\033[0;32mCompiling event.o\033[0m"
@mkdir -p ${BUILDDIR}/obj
@${CC} ${CFLAGS} -I${INCLUDEDIR} ${HEADERS} -c src/event.c -o ${BUILDDIR}/obj/event.o
${BUILDDIR}/obj/mouse.o: src/mouse.c ${INCLUDEDIR}/LEXSDL_mouse.h headers/LEXSDL_internal.h
@echo -e "\033[0;32mCompiling mouse.o\033[0m"
@mkdir -p ${BUILDDIR}/obj
@${CC} ${CFLAGS} -I${INCLUDEDIR} ${HEADERS} -c src/mouse.c -o ${BUILDDIR}/obj/mouse.o
pack: rustlib
@echo ""
@echo -e "\033[0;32mPACKING LEXSDL\033[0m"
@tar -czvf build/lexsdl-${VERSION}_linux.tar.gz -C build lib lib32 include linux.sh
@echo ""
@echo -e "\033[0;92mPACKED LEXSDL\033[0m"
packwin: rustlibwin
@echo ""
@echo -e "\033[0;32mZIPPING LEXSDL WINDOWS\033[0m"
@7z a -tzip build/lexsdl-${VERSION}_windows.zip ./build/lib ./build/lib32 ./build/include
@echo ""
@echo -e "\033[0;92mZIPPED LEXSDL WINDOWS\033[0m"
packdoc:
@echo ""
@echo -e "\033[0;32mZIPPING LEXSDL DOCUMENTATION\033[0m"
@7z a -tzip ${BUILDDIR}/lexsdl-${VERSION}_documentation.zip documentation
@echo ""
@echo -e "\033[0;92mZIPPED LEXSDL DOCUMENTATION\033[0m"
packall:
@make pack
@make packwin
@make packdoc
clean:
@echo -e "\033[0;31mCleaning\033[0m"
@rm -rf ${BUILDDIR}
cleanall:
@echo -e "\033[0;31mCleaning All\033[0m"
@cargo clean