diff --git a/makefile b/makefile index ee76535..13ec7ea 100644 --- a/makefile +++ b/makefile @@ -3,14 +3,13 @@ all: help help: - @echo "Please use: 'make init', 'make debug', 'make build', 'make release', or 'make clean'" + @echo "Please use: 'make init', 'make debug', 'make build', or 'make clean'" @echo "Note: parallel builds (via 'make -jN' where N is some number of how many jobs to generate)" @echo "This is supported via recursive build shell calls. Not actually passing -j to make so should work even on a pure POSIX system." init: @mkdir -p output source_code includes config - @touch config/version source_code/main.c - @echo "_00.000.00.0000" > config/version + @touch source_code/main.c @printf '%s\n' \ '# POSIX Virtual Environment for C Build System.' \ '# Usage: . config/activate' \ @@ -24,7 +23,8 @@ init: '_OLD_VIRTUAL_LIBS="$$LIBS"' \ '_OLD_VIRTUAL_CFLAGS="$$CFLAGS"' \ '_OLD_VIRTUAL_DEBUG_FLAGS="$$DEBUG_FLAGS"' \ - '_OLD_VIRTUAL_RELEASE_FLAGS="$$RELEASE_FLAGS"' \ + '_OLD_VIRTUAL_BUILD_FLAGS="$$BUILD_FLAGS"' \ + '_OLD_VIRTUAL_VERSION="$$VERSION"' \ '_OLD_VIRTUAL_PS1="$$PS1"' \ '' \ '# Base configuration variables (Updated by "env_set VARIABLE value")' \ @@ -32,7 +32,8 @@ init: 'export LIBS=""' \ 'export CFLAGS=""' \ 'export DEBUG_FLAGS=""' \ - 'export RELEASE_FLAGS=""' \ + 'export BUILD_FLAGS=""' \ + 'export VERSION=""' \ 'export C_VENV_ACTIVE="true"' \ '' \ '# Prepend (directory_name_env) to the shell prompt' \ @@ -43,7 +44,7 @@ init: '# Function to dynamically set variables in the terminal AND save them to this file.' \ 'env_set() {' \ ' if [ -z "$$1" ]; then' \ - ' echo "Usage: env_set [value]"' \ + ' echo "Usage: env_set [value]"' \ ' return 1' \ ' fi' \ ' ' \ @@ -87,10 +88,16 @@ init: ' unset DEBUG_FLAGS' \ ' fi' \ '' \ - ' if [ -n "$$_OLD_VIRTUAL_RELEASE_FLAGS" ]; then' \ - ' export RELEASE_FLAGS="$$_OLD_VIRTUAL_RELEASE_FLAGS"' \ + ' if [ -n "$$_OLD_VIRTUAL_BUILD_FLAGS" ]; then' \ + ' export BUILD_FLAGS="$$_OLD_VIRTUAL_BUILD_FLAGS"' \ ' else' \ - ' unset RELEASE_FLAGS' \ + ' unset BUILD_FLAGS' \ + ' fi' \ + '' \ + ' if [ -n "$$_OLD_VIRTUAL_VERSION" ]; then' \ + ' export VERSION="$$_OLD_VIRTUAL_VERSION"' \ + ' else' \ + ' unset VERSION' \ ' fi' \ '' \ ' if [ -n "$$_OLD_VIRTUAL_PS1" ]; then' \ @@ -101,7 +108,8 @@ init: ' unset _OLD_VIRTUAL_LIBS' \ ' unset _OLD_VIRTUAL_CFLAGS' \ ' unset _OLD_VIRTUAL_DEBUG_FLAGS' \ - ' unset _OLD_VIRTUAL_RELEASE_FLAGS' \ + ' unset _OLD_VIRTUAL_BUILD_FLAGS' \ + ' unset _OLD_VIRTUAL_VERSION' \ ' unset _OLD_VIRTUAL_PS1' \ ' unset C_VENV_ACTIVE' \ ' unset ENV_NAME' \ @@ -124,8 +132,7 @@ debug: fi @mkdir -p config output/obj_debug @PROJ_NAME=$$(basename "$$(pwd)"); \ - VERS=$$(cat config/version 2>/dev/null || echo "_00.000.00.0000"); \ - OUT="output/$${PROJ_NAME}$${VERS}"; \ + OUT="output/$${PROJ_NAME}$${VERSION}"; \ MK="config/debug.mk"; \ ACTIVE_CC=$${CC:-c99}; \ ACTIVE_LIBS=$${LIBS:-}; \ @@ -153,13 +160,12 @@ build: fi @mkdir -p config output/obj_release @PROJ_NAME=$$(basename "$$(pwd)"); \ - VERS=$$(cat config/version 2>/dev/null || echo "_00.000.00.0000"); \ - OUT="output/$${PROJ_NAME}$${VERS}"; \ + OUT="output/$${PROJ_NAME}$${VERSION}"; \ MK="config/build.mk"; \ ACTIVE_CC=$${CC:-c99}; \ ACTIVE_LIBS=$${LIBS:-}; \ ACTIVE_CFLAGS=$${CFLAGS:-}; \ - ACTIVE_RELEASE_FLAGS=$${RELEASE_FLAGS:-}; \ + ACTIVE_BUILD_FLAGS=$${BUILD_FLAGS:-}; \ echo ".POSIX:" > $$MK; \ OBJS=""; \ SRCS=$$(find source_code -type f -name '*.c' 2>/dev/null); \ @@ -168,40 +174,8 @@ build: OBJS="$$OBJS $$OBJ"; \ echo "$$OBJ: $$SRC" >> $$MK; \ echo " @mkdir -p $$(dirname $$OBJ)" >> $$MK; \ - echo " $$ACTIVE_CC $$ACTIVE_CFLAGS $$ACTIVE_RELEASE_FLAGS -I includes -c $$SRC -o $$OBJ $$ACTIVE_LIBS" >> $$MK; \ + echo " $$ACTIVE_CC $$ACTIVE_CFLAGS $$ACTIVE_BUILD_FLAGS -I includes -c $$SRC -o $$OBJ $$ACTIVE_LIBS" >> $$MK; \ done; \ echo "$$OUT: $$OBJS" >> $$MK; \ - echo " $$ACTIVE_CC $$ACTIVE_CFLAGS $$ACTIVE_RELEASE_FLAGS -o $$OUT $$OBJS $$ACTIVE_LIBS" >> $$MK; \ - $(MAKE) -f $$MK "$$OUT" - -release: - @if [ -z "$$C_VENV_ACTIVE" ]; then \ - echo "Error: Virtual environment not active."; \ - echo "Please run: '. config/activate' (or 'source config/activate') before building."; \ - exit 1; \ - fi - @mkdir -p config output/obj_release - @DATE_STR=$$(date +_%y.%j.%H.%M%S); \ - echo "$$DATE_STR" > config/version; \ - echo "Project version updated to: $$DATE_STR" - @PROJ_NAME=$$(basename "$$(pwd)"); \ - VERS=$$(cat config/version 2>/dev/null); \ - OUT="output/$${PROJ_NAME}$${VERS}"; \ - MK="config/release.mk"; \ - ACTIVE_CC=$${CC:-c99}; \ - ACTIVE_LIBS=$${LIBS:-}; \ - ACTIVE_CFLAGS=$${CFLAGS:-}; \ - ACTIVE_RELEASE_FLAGS=$${RELEASE_FLAGS:-}; \ - echo ".POSIX:" > $$MK; \ - OBJS=""; \ - SRCS=$$(find source_code -type f -name '*.c' 2>/dev/null); \ - for SRC in $$SRCS; do \ - OBJ="output/obj_release/$${SRC}.o"; \ - OBJS="$$OBJS $$OBJ"; \ - echo "$$OBJ: $$SRC" >> $$MK; \ - echo " @mkdir -p $$(dirname $$OBJ)" >> $$MK; \ - echo " $$ACTIVE_CC $$ACTIVE_CFLAGS $$ACTIVE_RELEASE_FLAGS -I includes -c $$SRC -o $$OBJ $$ACTIVE_LIBS" >> $$MK; \ - done; \ - echo "$$OUT: $$OBJS" >> $$MK; \ - echo " $$ACTIVE_CC $$ACTIVE_CFLAGS $$ACTIVE_RELEASE_FLAGS -o $$OUT $$OBJS $$ACTIVE_LIBS" >> $$MK; \ + echo " $$ACTIVE_CC $$ACTIVE_CFLAGS $$ACTIVE_BUILD_FLAGS -o $$OUT $$OBJS $$ACTIVE_LIBS" >> $$MK; \ $(MAKE) -f $$MK "$$OUT"