.PHONY: all
all:
+.PHONY: tests
+tests:
+
+
DIRMK := dir.mk
VARSMK := vars.mk
FILESMK := files.mk
# include all of the dir.mk
include lib/${DIRMK}
+#include tests/${DIRMK}
+++ /dev/null
-
-LIBDIR := ../../
-SRCSDIR := src/
-DEPSDIR := deps/
-INCDIRS := ${SRCSDIR} ${LIBDIR}inc/
-
-OBJSDIR := objsd/
-
-WORKINGDIR := bind/
-
-
-LIBGL := -lGL -lGLU
-LIBSDL := `sdl-config --libs`
-LIBS := ${LIBSDL} ${LIBGL}
-
-SRCLIBSDIR := libs/
-DSTLIBSDIR := ${WORKINGDIR}
-
-LIBSCPY := # := start
-LIBSCPY += libbear.so.0
-LIBSCPY := $(addprefix ${DSTLIBSDIR},${LIBSCPY})
-
-TARGETNAME := test
-TARGETTMP := ${OBJSDIR}${TARGETNAME}
-TARGET := ${WORKINGDIR}${TARGETNAME}
-
-RPATH := ./
-
-OPTFLAGS := -O2
-DBGFLAGS := -ggdb
-PRFFLAGS := ${DBGFLAGS} -pg
-MYFLAGS := -Wall -pedantic -ansi
-INCFLAGS := $(addprefix -I, ${INCDIRS})
-LNKFLAGS := -Wl,-rpath,${RPATH}
-CXXFLAGS := ${MYFLAGS} ${DBGFLAGS}
-
-CXX := g++
-
-
-PRNTFMT := printf "%-8s: %s\n"
-
-VERBOSE := 0
-
-ifeq (${VERBOSE},0)
- # quiet the printf command
- Q1 := @
- # quiet the command that is `replaced' by an echo
- Q2 := @
-else
- # EAT the printf command as if it was not there
- Q1 := @true # NOTE: the space between @true and the # is VERY important!!
- # do not quiet the command output
- Q2 :=
-endif
-
-
-# cause the fancy $${@D} directory rules to work out
-.SECONDEXPANSION:
-
-# The first and therefor default rule
-.PHONY: all
-all: ${TARGET} ${LIBSCPY}
-
-
-# lists populated by dir.mk files in subdirectories
-SRCS := # := start
-DIRS := # := start
-OBJS := # := start
-DEPS := # := start
-
-DIRMK := dir.mk
-
-# include all of the dir.mk files in src
-include ${SRCSDIR}${DIRMK}
-
-
-DEPSBLDDIRS := ${DEPSDIR} $(addprefix ${DEPSDIR},${DIRS})
-OBJSBLDDIRS := ${OBJSDIR} $(addprefix ${OBJSDIR},${DIRS})
-
-BLDDIRS := # := start
-BLDDIRS += ${OBJSBLDDIRS}
-BLDDIRS += ${DEPSBLDDIRS}
-BLDDIRS += ${DSTLIBSDIR}
-BLDDIRS += ${WORKINGDIR}
-BLDDIRS := $(sort ${BLDDIRS}) # remove possible duplicates
-
-
-# how to link the main target
-${TARGETTMP}: ${OBJS} ${LIBSCPY} | $${@D}
- ${Q1}${PRNTFMT} "${CXX}" "$@"
- ${Q2}${CXX} ${CXXFLAGS} ${LNKFLAGS} -o $@ $^ ${LIBS}
-
-# rule to copy tmp target to working directory
-${TARGET}: ${TARGETTMP} | $${@D}
- ${Q1}${PRNTFMT} "cp" "$@"
- ${Q2}cp $< $@
-
-# rule to copy the library files into the working directory
-${DSTLIBSDIR}%: ${SRCLIBSDIR}% | $$(dir $$@)
- ${Q1}${PRNTFMT} "cp" "$@"
- ${Q2}cp $< $@
-
-# how to make a directory
-${BLDDIRS}:
- ${Q1}${PRNTFMT} "mkdir" "$@"
- ${Q2}mkdir -p $@
-
-# rule to make an object file from a .cpp
-${OBJSDIR}%.o: ${SRCSDIR}%.cpp | $${@D}
- ${Q1}${PRNTFMT} "${CXX}" "$@"
- ${Q2}${CXX} ${CXXFLAGS} -c -o $@ $< ${INCFLAGS}
-
-# rule to make a depend file from a .cpp
-# be clever and escape the / chars in file paths
-# DON'T simply use another sed delimiter or it can't appear in the file paths
-${DEPSDIR}%.d: ${SRCSDIR}%.cpp | $${@D}
- ${Q1}${PRNTFMT} "DEP" "$@"
- ${Q2}${CXX} -MM ${CXXFLAGS} $< ${INCFLAGS} | \
- sed 's/\(^.*\):/$(subst /,\/,${OBJSDIR}\1 $@):/' > $@
-
-CLEANCMDS := cleanbin cleanobjs cleandeps clean cleanall
-
-.PHONY: cleanbin
-cleanbin:
- ${Q1}${PRNTFMT} "rm" "${WORKINGDIR}"
- ${Q2}rm -rf ${WORKINGDIR}
-
-.PHONY: cleanobjs
-cleanobjs:
- ${Q1}${PRNTFMT} "rm" "${OBJSDIR}"
- ${Q2}rm -rf ${OBJSDIR}
-
-.PHONY: cleandeps
-cleandeps:
- ${Q1}${PRNTFMT} "rm" "${DEPSDIR}"
- ${Q2}rm -rf ${DEPSDIR}
-
-.PHONY: clean
-clean: cleanobjs
- ${Q1}${PRNTFMT} "rm" "${TARGET}"
- ${Q2}rm -f ${TARGET}
-
-.PHONY: cleanall
-cleanall: cleanbin cleanobjs cleandeps
-
-.PHONY: run
-run: all
- cd ${WORKINGDIR}; ./${TARGETNAME}
-
-# Do not include deps files when doing a _single_ clean operation
-ifeq ($(findstring ${MAKECMDGOALS},${CLEANCMDS}),)
- -include ${DEPS}
-endif
-
+++ /dev/null
-../../../bind/libbear.so.0.0
\ No newline at end of file
+++ /dev/null
-
-LIBDIR := ../../
-SRCSDIR := src/
-DEPSDIR := deps/
-INCDIRS := ${SRCSDIR} ${LIBDIR}inc/
-
-OBJSDIR := objsd/
-
-WORKINGDIR := bind/
-
-
-LIBGL := -lGL -lGLU
-LIBSDL := `sdl-config --libs`
-LIBS := ${LIBSDL} ${LIBGL}
-
-SRCLIBSDIR := libs/
-DSTLIBSDIR := ${WORKINGDIR}
-
-LIBSCPY := # := start
-LIBSCPY += libbear.so.0
-LIBSCPY := $(addprefix ${DSTLIBSDIR},${LIBSCPY})
-
-TARGETNAME := test
-TARGETTMP := ${OBJSDIR}${TARGETNAME}
-TARGET := ${WORKINGDIR}${TARGETNAME}
-
-RPATH := ./
-
-OPTFLAGS := -O2
-DBGFLAGS := -ggdb
-PRFFLAGS := ${DBGFLAGS} -pg
-MYFLAGS := -Wall -pedantic -ansi
-INCFLAGS := $(addprefix -I, ${INCDIRS})
-LNKFLAGS := -Wl,-rpath,${RPATH} -rdynamic
-CXXFLAGS := ${MYFLAGS} ${DBGFLAGS}
-
-CXX := g++
-
-
-PRNTFMT := printf "%-8s: %s\n"
-
-VERBOSE := 0
-
-ifeq (${VERBOSE},0)
- # quiet the printf command
- Q1 := @
- # quiet the command that is `replaced' by an echo
- Q2 := @
-else
- # EAT the printf command as if it was not there
- Q1 := @true # NOTE: the space between @true and the # is VERY important!!
- # do not quiet the command output
- Q2 :=
-endif
-
-
-# cause the fancy $${@D} directory rules to work out
-.SECONDEXPANSION:
-
-# The first and therefor default rule
-.PHONY: all
-all: ${TARGET} ${LIBSCPY}
-
-
-# lists populated by dir.mk files in subdirectories
-SRCS := # := start
-DIRS := # := start
-OBJS := # := start
-DEPS := # := start
-
-DIRMK := dir.mk
-
-# include all of the dir.mk files in src
-include ${SRCSDIR}${DIRMK}
-
-
-DEPSBLDDIRS := ${DEPSDIR} $(addprefix ${DEPSDIR},${DIRS})
-OBJSBLDDIRS := ${OBJSDIR} $(addprefix ${OBJSDIR},${DIRS})
-
-BLDDIRS := # := start
-BLDDIRS += ${OBJSBLDDIRS}
-BLDDIRS += ${DEPSBLDDIRS}
-BLDDIRS += ${DSTLIBSDIR}
-BLDDIRS += ${WORKINGDIR}
-BLDDIRS := $(sort ${BLDDIRS}) # remove possible duplicates
-
-
-# how to link the main target
-${TARGETTMP}: ${OBJS} ${LIBSCPY} | $${@D}
- ${Q1}${PRNTFMT} "${CXX}" "$@"
- ${Q2}${CXX} ${CXXFLAGS} ${LNKFLAGS} -o $@ $^ ${LIBS}
-
-# rule to copy tmp target to working directory
-${TARGET}: ${TARGETTMP} | $${@D}
- ${Q1}${PRNTFMT} "cp" "$@"
- ${Q2}cp $< $@
-
-# rule to copy the library files into the working directory
-${DSTLIBSDIR}%: ${SRCLIBSDIR}% | $$(dir $$@)
- ${Q1}${PRNTFMT} "cp" "$@"
- ${Q2}cp $< $@
-
-# how to make a directory
-${BLDDIRS}:
- ${Q1}${PRNTFMT} "mkdir" "$@"
- ${Q2}mkdir -p $@
-
-# rule to make an object file from a .cpp
-${OBJSDIR}%.o: ${SRCSDIR}%.cpp | $${@D}
- ${Q1}${PRNTFMT} "${CXX}" "$@"
- ${Q2}${CXX} ${CXXFLAGS} -c -o $@ $< ${INCFLAGS}
-
-# rule to make a depend file from a .cpp
-# be clever and escape the / chars in file paths
-# DON'T simply use another sed delimiter or it can't appear in the file paths
-${DEPSDIR}%.d: ${SRCSDIR}%.cpp | $${@D}
- ${Q1}${PRNTFMT} "DEP" "$@"
- ${Q2}${CXX} -MM ${CXXFLAGS} $< ${INCFLAGS} | \
- sed 's/\(^.*\):/$(subst /,\/,${OBJSDIR}\1 $@):/' > $@
-
-CLEANCMDS := cleanbin cleanobjs cleandeps clean cleanall
-
-.PHONY: cleanbin
-cleanbin:
- ${Q1}${PRNTFMT} "rm" "${WORKINGDIR}"
- ${Q2}rm -rf ${WORKINGDIR}
-
-.PHONY: cleanobjs
-cleanobjs:
- ${Q1}${PRNTFMT} "rm" "${OBJSDIR}"
- ${Q2}rm -rf ${OBJSDIR}
-
-.PHONY: cleandeps
-cleandeps:
- ${Q1}${PRNTFMT} "rm" "${DEPSDIR}"
- ${Q2}rm -rf ${DEPSDIR}
-
-.PHONY: clean
-clean: cleanobjs
- ${Q1}${PRNTFMT} "rm" "${TARGET}"
- ${Q2}rm -f ${TARGET}
-
-.PHONY: cleanall
-cleanall: cleanbin cleanobjs cleandeps
-
-.PHONY: run
-run: all
- cd ${WORKINGDIR}; ./${TARGETNAME}
-
-# Do not include deps files when doing a _single_ clean operation
-ifeq ($(findstring ${MAKECMDGOALS},${CLEANCMDS}),)
- -include ${DEPS}
-endif
-
--- /dev/null
+
+CURDIR := tests/
+#SRCPATH := # Not used at this level
+
+include ${CURDIR}${VARSMK}
+
+# steps on variables
+include ${SRCSDIR}${DIRMK}
+
+# Restore variables
+CURDIR := tests/
+#SRCPATH := # Not used at this level
+
+include ${CURDIR}${RULESMK}
+
+# Do not include deps files when doing a clean operation
+ifeq ($(filter ${CLEANCMDS},${MAKECMDGOALS}),)
+ -include ${DEPS}
+endif
+++ /dev/null
-../Makefile
\ No newline at end of file
+++ /dev/null
-../../../bind/libbear.so.0.0
\ No newline at end of file
--- /dev/null
+
+# how to make a directory
+${BLDDIRS}:
+ ${Q1}${PRNTFMT} "mkdir" "$@"
+ ${Q2}mkdir -p $@
+
+# rule to make an object file from a .cpp
+${OBJSDIR}%.o: ${SRCSDIR}%.cpp | $${@D}
+ ${Q1}${PRNTFMT} "${CXX}" "$@"
+ ${Q2}${CXX} ${CXXFLAGS} -c -o $@ $< ${INCFLAGS}
+
+# rule to make a depend file from a .cpp
+# be clever and escape the / chars in file paths
+# DON'T simply use another sed delimiter or it can't appear in the file paths
+${DEPSDIR}%.d: ${SRCSDIR}%.cpp | $${@D}
+ ${Q1}${PRNTFMT} "DEP" "$@"
+ ${Q2}${CXX} -MM ${CXXFLAGS} $< ${INCFLAGS} | \
+ sed 's/\(^.*\):/$(subst /,\/,${OBJSDIR}\1 $@):/' > $@
+
--- /dev/null
+
+CURDIR := tests/src/1/
+SRCPATH := 1/
+
+include ${CURDIR}${VARSMK}
+include ${CURDIR}${FILESMK}
+include $(addprefix ${SRCSDIR},$(addsuffix ${DIRMK},${NEWDIRS}))
+
+# restore
+CURDIR := tests/src/1/
+SRCPATH := 1/
+
+include ${CURDIR}${RULESMK}
NEWDIRS := # := start; empty
-# Post dir setup
+################################################################################
-CURDIR :=
-
-NEWSRCS := $(addprefix ${CURDIR},${NEWSRCS})
-NEWDIRS := $(addprefix ${CURDIR},${NEWDIRS})
+NEWSRCS := $(addprefix ${SRCPATH},${NEWSRCS})
+NEWDIRS := $(addprefix ${SRCPATH},${NEWDIRS})
NEWOBJS := ${NEWSRCS:.cpp=.o}
NEWDEPS := ${NEWSRCS:.cpp=.d}
# Append to lists
SRCS += ${NEWSRCS}
-DIRS += ${CURDIR}
OBJS += $(addprefix ${OBJSDIR},${NEWOBJS})
DEPS += $(addprefix ${DEPSDIR},${NEWDEPS})
+BLDDIRS += $(addprefix ${OBJSDIR},${NEWDIRS})
+BLDDIRS += $(addprefix ${DEPSDIR},${NEWDIRS})
-include $(addprefix ${SRCSDIR},$(addsuffix ${DIRMK},${NEWDIRS}))
--- /dev/null
+
+# how to link the main target
+${TARGETTMP}: ${OBJS} | $${@D}
+ ${Q1}${PRNTFMT} "${CXX}" "$@"
+ ${Q2}${CXX} ${CXXFLAGS} ${LNKFLAGS} -o $@ $^ ${LIBS}
+
+# TARGET will be built by default
+tests: ${TARGET}
+
+# rule to copy tmp target to working directory
+${TARGET}: ${TARGETTMP} | $${@D}
+ ${Q1}${PRNTFMT} "cp" "$@"
+ ${Q2}cp $< $@
+
--- /dev/null
+
+ifeq (${BUILD},WIN32)
+ LIBGL := -lopengl32 -lglu32
+ LIBSDL := `/usr/mingw32/bin/sdl-config --libs`
+else
+ LIBGL := -lGL -lGLU
+ LIBSDL := `sdl-config --libs`
+endif
+LIBS := ${LIBSDL} ${LIBGL}
+
+TARGETNAME := test-1
+TARGETTMP := ${OBJSDIR}${TARGETNAME}
+TARGET := ${WORKINGDIR}${TARGETNAME}
+
+# HACK needed for deps
+INCFLAGS += $(addprefix -I, ${INCDIRS})
+
+# add flags specific to the library target and all prerequisites
+${TARGET}: CXXFLAGS += -fPIC
+${TARGET}: INCFLAGS += $(addprefix -I, ${INCDIRS})
+${TARGET}: LNKFLAGS += -Wl,-rpath,${RPATH} -rdynamic
+
--- /dev/null
+
+CURDIR := tests/src/
+SRCPATH :=
+
+include ${CURDIR}${FILESMK}
+include $(addprefix ${SRCSDIR},$(addsuffix ${DIRMK},${NEWDIRS}))
--- /dev/null
+
+NEWSRCS := # := start; empty
+
+NEWDIRS := # := start; empty
+NEWDIRS += 1/
+#NEWDIRS += printTrace/
+
+
+################################################################################
+
+NEWSRCS := $(addprefix ${SRCPATH},${NEWSRCS})
+NEWDIRS := $(addprefix ${SRCPATH},${NEWDIRS})
+NEWOBJS := ${NEWSRCS:.cpp=.o}
+NEWDEPS := ${NEWSRCS:.cpp=.d}
+
+# Append to lists
+
+SRCS += ${NEWSRCS}
+OBJS += $(addprefix ${OBJSDIR},${NEWOBJS})
+DEPS += $(addprefix ${DEPSDIR},${NEWDEPS})
+
+BLDDIRS += $(addprefix ${OBJSDIR},${NEWDIRS})
+BLDDIRS += $(addprefix ${DEPSDIR},${NEWDIRS})
+
--- /dev/null
+
+CURDIR := test/src/printTrace/
+SRCPATH := printTrace/
+
+include ${CURDIR}${FILESMK}
+include $(addprefix ${SRCSDIR},$(addsuffix ${DIRMK},${NEWDIRS}))
NEWDIRS := # := start; empty
-# Post dir setup
+################################################################################
-CURDIR :=
-
-NEWSRCS := $(addprefix ${CURDIR},${NEWSRCS})
-NEWDIRS := $(addprefix ${CURDIR},${NEWDIRS})
+NEWSRCS := $(addprefix ${SRCPATH},${NEWSRCS})
+NEWDIRS := $(addprefix ${SRCPATH},${NEWDIRS})
NEWOBJS := ${NEWSRCS:.cpp=.o}
NEWDEPS := ${NEWSRCS:.cpp=.d}
# Append to lists
SRCS += ${NEWSRCS}
-DIRS += ${CURDIR}
OBJS += $(addprefix ${OBJSDIR},${NEWOBJS})
DEPS += $(addprefix ${DEPSDIR},${NEWDEPS})
+BLDDIRS += $(addprefix ${OBJSDIR},${NEWDIRS})
+BLDDIRS += $(addprefix ${DEPSDIR},${NEWDIRS})
-include $(addprefix ${SRCSDIR},$(addsuffix ${DIRMK},${NEWDIRS}))
--- /dev/null
+
+SRCSDIR := ${CURDIR}src/
+DEPSDIR := ${CURDIR}deps/
+INCDIRS := ${SRCSDIR} lib/inc/
+
+ifeq (${BUILD},WIN32)
+ OBJSDIR := ${CURDIR}objs-mingw32/
+else
+ifeq (${BUILD},FINAL)
+ OBJSDIR := ${CURDIR}objs/
+else
+ OBJSDIR := ${CURDIR}objsd/
+endif
+endif
+
+ifeq (${BUILD},WIN32)
+ WORKINGDIR := ${CURDIR}bin-mingw32/
+else
+ifeq (${BUILD},FINAL)
+ WORKINGDIR := ${CURDIR}bin/
+else
+ WORKINGDIR := ${CURDIR}bind/
+endif
+endif
+
+SRCLIBSDIR := ${CURDIR}libs/
+DSTLIBSDIR := ${WORKINGDIR}
+
+LIBSCPY := # := start
+LIBSCPY += libbear.so.0
+LIBSCPY := $(addprefix ${DSTLIBSDIR},${LIBSCPY})
+
+
+RPATH := ./
+
+
+# lists populated by dir.mk files in subdirectories
+SRCS := # := start
+OBJS := # := start
+DEPS := # := start
+
+BLDDIRS := # := start
+
+BLDDIRS += ${OBJSDIR}
+BLDDIRS += ${DEPSDIR}
+BLDDIRS += ${WORKINGDIR}
+