--- /dev/null
+#------------------------------------------------------------------------------
+# Build Configuration
+#------------------------------------------------------------------------------
+# Update these variables according to your requirements.
+
+# tools
+CC = c99
+LD = ${CC}
+AR = ar
+
+# flags
+INCS = -Isource/ -Itests/
+CPPFLAGS = -D_XOPEN_SOURCE=700
+CFLAGS += ${INCS} ${CPPFLAGS}
+LDFLAGS += ${LIBS}
+ARFLAGS = rcs
+
+#------------------------------------------------------------------------------
+# Build Targets and Rules
+#------------------------------------------------------------------------------
+SRCS = source/atf.c
+OBJS = ${SRCS:.c=.o}
+TEST_SRCS = tests/main.c tests/test_signals.c
+TEST_OBJS = ${TEST_SRCS:.c=.o}
+
+all: options libatf.a testatf
+
+options:
+ @echo "Toolchain Configuration:"
+ @echo " CC = ${CC}"
+ @echo " CFLAGS = ${CFLAGS}"
+ @echo " LD = ${LD}"
+ @echo " LDFLAGS = ${LDFLAGS}"
+ @echo " AR = ${AR}"
+ @echo " ARFLAGS = ${ARFLAGS}"
+
+libatf.a: ${OBJS}
+ @echo AR $@
+ @${AR} ${ARFLAGS} $@ ${OBJS}
+
+testatf: ${TEST_OBJS} libatf.a
+ @echo LD $@
+ @${LD} -o $@ ${TEST_OBJS} libatf.a ${LDFLAGS}
+ -./$@
+ @echo "Note: It is expected that exactly 2 of the tests will fail."
+
+.c.o:
+ @echo CC $<
+ @${CC} ${CFLAGS} -c -o $@ $<
+
+clean:
+ @rm -f libatf.a testatf ${OBJS} ${TEST_OBJS}
+
+.PHONY: all options
+
+++ /dev/null
-#------------------------------------------------------------------------------
-# Bundler Setup
-#------------------------------------------------------------------------------
-require "bundler"
-begin
- Bundler.setup(:default, :development)
-rescue Bundler::BundlerError => e
- raise LoadError.new("Unable to Bundler.setup(): You probably need to run `bundle install`: #{e.message}")
-end
-require 'rscons'
-
-#------------------------------------------------------------------------------
-# Envrionment Definitions
-#------------------------------------------------------------------------------
-# Define the compiler environment
-Env = Rscons::Environment.new do |env|
- env.build_dir('source/','build/obj/source')
- env["CFLAGS"] += ['-Wall', '-Wextra', '-Werror', '-pedantic', '--std=c89']
- env['CPPPATH'] += Dir['source/**/']
-end
-
-# Define the test environment
-TestEnv = Env.clone do |env|
- env.build_dir('source','build/obj/test_source')
- env.build_dir('tests','build/obj/tests/source')
- env['CPPPATH'] += Dir['tests/']
-end
-
-# Make sure the environment is processed before we quit
-at_exit { Env.process; TestEnv.process}
-
-#------------------------------------------------------------------------------
-# Main Build Targets
-#------------------------------------------------------------------------------
-task :default => [:test, :build]
-
-desc "Build the C Data Structures static library"
-task :build do
- Env.Library('build/libatf.a', Dir['source/**/*.c'])
- Env.process
-end
-
-#------------------------------------------------------------------------------
-# Unit Testing Targets
-#------------------------------------------------------------------------------
-desc "Run all unit tests"
-task :test do
- TestEnv.Program('build/test_libatf', Dir['source/**/*.c', 'tests/**/*.c'])
- TestEnv.process
- sh "build/test_libatf"
-end
-
-#------------------------------------------------------------------------------
-# Cleanup Target
-#------------------------------------------------------------------------------
-desc "Clean all generated files and directories"
-task(:clean) { Rscons.clean }
-