diff options
| -rw-r--r-- | .gitignore | 10 | ||||
| -rw-r--r-- | Makefile | 183 | ||||
| -rw-r--r-- | SConstruct | 232 | ||||
| -rw-r--r-- | tests/runner.c | 4 |
4 files changed, 178 insertions, 251 deletions
| @@ -2,8 +2,11 @@ | |||
| 2 | *.o | 2 | *.o |
| 3 | *.a | 3 | *.a |
| 4 | 4 | ||
| 5 | |||
| 6 | |||
| 5 | # generated files | 7 | # generated files |
| 6 | tests/__test_catalog.inc | 8 | tests/test_catalog.inc |
| 9 | *.d | ||
| 7 | 10 | ||
| 8 | # executables | 11 | # executables |
| 9 | runtests | 12 | runtests |
| @@ -20,8 +23,5 @@ rtspin | |||
| 20 | cycles | 23 | cycles |
| 21 | measure_syscall | 24 | measure_syscall |
| 22 | 25 | ||
| 23 | # scons files | 26 | # build system files |
| 24 | .sconsign.dblite | ||
| 25 | .sconf_temp/* | ||
| 26 | config.log | ||
| 27 | .config | 27 | .config |
| @@ -1,17 +1,176 @@ | |||
| 1 | .PHONY: all-32 all-64 all-sparc clean purge | 1 | # figure out what kind of host we are running on |
| 2 | host-arch := $(shell uname -m | \ | ||
| 3 | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/) | ||
| 2 | 4 | ||
| 3 | all-32: | 5 | # ############################################################################## |
| 4 | echo "Legacy warning: Building is done with scons." | 6 | # User variables |
| 5 | ARCH=x86 scons | ||
| 6 | all-64: | ||
| 7 | ARCH=x86_64 scons | ||
| 8 | 7 | ||
| 9 | all-sparc: | 8 | # user variables can be specified in the environment or in a .config file |
| 10 | ARCH=sparc64 scons | 9 | -include .config |
| 10 | |||
| 11 | # ARCH -- what architecture are we compiling for? | ||
| 12 | ARCH ?= ${host-arch} | ||
| 13 | |||
| 14 | # LITMUS_KERNEL -- where to find the litmus kernel? | ||
| 15 | LITMUS_KERNEL ?= ../litmus2010 | ||
| 16 | |||
| 17 | |||
| 18 | # ############################################################################## | ||
| 19 | # Internal configuration. | ||
| 20 | |||
| 21 | # compiler flags | ||
| 22 | flags-debug = -Wall -g -Wdeclaration-after-statement | ||
| 23 | flags-api = -D_XOPEN_SOURCE=600 -D_GNU_SOURCE | ||
| 24 | flags-link-rt = -static | ||
| 25 | |||
| 26 | # architecture-specific flags | ||
| 27 | flags-i386 = -m32 | ||
| 28 | flags-x86_64 = -m64 | ||
| 29 | flags-sparc64 = -mcpu=v9 -m64 | ||
| 30 | # default: none | ||
| 31 | |||
| 32 | # name of the directory that has the arch headers in the Linux source | ||
| 33 | include-i386 = x86 | ||
| 34 | include-x86_64 = x86 | ||
| 35 | include-sparc64 = sparc | ||
| 36 | # default: the arch name | ||
| 37 | include-${ARCH} ?= ${ARCH} | ||
| 38 | |||
| 39 | # where to find header files | ||
| 40 | headers = -Iinclude \ | ||
| 41 | -I${LITMUS_KERNEL}/include/ \ | ||
| 42 | -I${LITMUS_KERNEL}/arch/${include-${ARCH}}/include | ||
| 43 | |||
| 44 | # combine options | ||
| 45 | CPPFLAGS = ${flags-api} ${flags-${ARCH}} ${headers} | ||
| 46 | CFLAGS = ${flags-debug} | ||
| 47 | LDFLAGS = ${flags-${ARCH}} | ||
| 48 | |||
| 49 | # how to link against liblitmus | ||
| 50 | liblitmus-flags = -L. -llitmus | ||
| 51 | |||
| 52 | # Force gcc instead of cc, but let the user specify a more specific version if | ||
| 53 | # desired. | ||
| 54 | ifeq (${CC},cc) | ||
| 55 | CC = gcc | ||
| 56 | endif | ||
| 57 | |||
| 58 | # incorporate cross-compiler (if any) | ||
| 59 | CC := ${CROSS_COMPILE}${CC} | ||
| 60 | LD := ${CROSS_COMPILE}${LD} | ||
| 61 | AR := ${CROSS_COMPILE}${AR} | ||
| 62 | |||
| 63 | # ############################################################################## | ||
| 64 | # Targets | ||
| 65 | |||
| 66 | all = lib ${rt-apps} | ||
| 67 | rt-apps = cycles base_task rt_launch rtspin release_ts measure_syscall \ | ||
| 68 | base_mt_task runtests | ||
| 69 | |||
| 70 | .PHONY: all lib clean dump-config | ||
| 71 | |||
| 72 | all: ${all} | ||
| 73 | |||
| 74 | dump-config: | ||
| 75 | @echo Build configuration: | ||
| 76 | @printf "%-15s= %-20s\n" \ | ||
| 77 | ARCH ${ARCH} \ | ||
| 78 | LITMUS_KERNEL "${LITMUS_KERNEL}" \ | ||
| 79 | CROSS_COMPILE "${CROSS_COMPILE}" \ | ||
| 80 | headers "${headers}" \ | ||
| 81 | CFLAGS "${CFLAGS}" \ | ||
| 82 | LDFLAGS "${LDFLAGS}" \ | ||
| 83 | CPPFLAGS "${CPPFLAGS}" \ | ||
| 84 | CC "${CC}" \ | ||
| 85 | CPP "${CPP}" \ | ||
| 86 | LD "${LD}" \ | ||
| 87 | AR "${AR}" \ | ||
| 88 | obj-all "${obj-all}" | ||
| 11 | 89 | ||
| 12 | clean: | 90 | clean: |
| 13 | echo "Legacy warning: Building is now done with scons." | 91 | rm -f ${rt-apps} |
| 14 | scons -c | 92 | rm -f *.o *.d *.a test_catalog.inc |
| 93 | |||
| 94 | |||
| 95 | # ############################################################################## | ||
| 96 | # liblitmus | ||
| 97 | |||
| 98 | lib: liblitmus.a | ||
| 99 | |||
| 100 | # all .c file in src/ are linked into liblitmus | ||
| 101 | vpath %.c src/ | ||
| 102 | obj-lib = $(patsubst src/%.c,%.o,$(wildcard src/*.c)) | ||
| 103 | |||
| 104 | liblitmus.a: ${obj-lib} | ||
| 105 | ${AR} rcs $@ $+ | ||
| 106 | |||
| 107 | # ############################################################################## | ||
| 108 | # Tests suite. | ||
| 109 | |||
| 110 | # tests are found in tests/ | ||
| 111 | vpath %.c tests/ | ||
| 112 | |||
| 113 | src-runtests = $(wildcard tests/*.c) | ||
| 114 | obj-runtests = $(patsubst tests/%.c,%.o,${src-runtests}) | ||
| 115 | |||
| 116 | # generate list of tests automatically | ||
| 117 | test_catalog.inc: $(filter-out tests/runner.c,${src-runtests}) | ||
| 118 | tests/make_catalog.py $+ > $@ | ||
| 119 | |||
| 120 | .SECONDARY: test_catalog.inc | ||
| 121 | |||
| 122 | tests/runner.c: test_catalog.inc | ||
| 123 | |||
| 124 | |||
| 125 | # ############################################################################## | ||
| 126 | # Tools that link with liblitmus | ||
| 127 | |||
| 128 | # these source files are found in bin/ | ||
| 129 | vpath %.c bin/ | ||
| 130 | |||
| 131 | obj-cycles = cycles.o | ||
| 132 | |||
| 133 | obj-base_task = base_task.o | ||
| 134 | |||
| 135 | obj-base_mt_task = base_mt_task.o | ||
| 136 | ldf-base_mt_task = -pthread | ||
| 137 | |||
| 138 | obj-rt_launch = rt_launch.o common.o | ||
| 139 | |||
| 140 | obj-rtspin = rtspin.o common.o | ||
| 141 | lib-rtspin = -lrt | ||
| 142 | |||
| 143 | obj-release_ts = release_ts.o | ||
| 144 | |||
| 145 | obj-measure_syscall = null_call.o | ||
| 146 | lib-measure_syscall = -lm | ||
| 147 | |||
| 148 | # ############################################################################## | ||
| 149 | # Build everything that depends on liblitmus. | ||
| 150 | |||
| 151 | .SECONDEXPANSION: | ||
| 152 | ${rt-apps}: $${obj-$$@} liblitmus.a | ||
| 153 | $(CC) -o $@ $(LDFLAGS) ${ldf-$@} $(filter-out liblitmus.a,$+) $(LOADLIBS) $(LDLIBS) ${lib-$@} ${liblitmus-flags} | ||
| 154 | |||
| 155 | # ############################################################################## | ||
| 156 | # Dependency resolution. | ||
| 157 | |||
| 158 | vpath %.c bin/ src/ tests/ | ||
| 159 | |||
| 160 | obj-all = ${sort ${foreach target,${all},${obj-${target}}}} | ||
| 161 | |||
| 162 | # rule to generate dependency files (straight from make manual) | ||
| 163 | %.d: %.c | ||
| 164 | @set -e; rm -f $@; \ | ||
| 165 | $(CC) -MM $(CPPFLAGS) $< > $@.$$$$; \ | ||
| 166 | sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ | ||
| 167 | rm -f $@.$$$$ | ||
| 168 | |||
| 169 | ifeq ($(MAKECMDGOALS),) | ||
| 170 | MAKECMDGOALS += all | ||
| 171 | endif | ||
| 172 | |||
| 173 | ifneq ($(filter-out dump-config clean,$(MAKECMDGOALS)),) | ||
| 174 | -include ${obj-all:.o=.d} | ||
| 175 | endif | ||
| 15 | 176 | ||
| 16 | purge: clean | ||
| 17 | rm -rf .sconf_temp .sconsign.dblite | ||
diff --git a/SConstruct b/SConstruct deleted file mode 100644 index c41e41e..0000000 --- a/SConstruct +++ /dev/null | |||
| @@ -1,232 +0,0 @@ | |||
| 1 | Help(""" | ||
| 2 | ============================================= | ||
| 3 | liblitmus --- The LITMUS^RT Userspace Library | ||
| 4 | |||
| 5 | There are a number of user-configurable build | ||
| 6 | variables. These can either be set on the | ||
| 7 | command line (e.g., scons ARCH=x86) or read | ||
| 8 | from a local configuration file (.config). | ||
| 9 | |||
| 10 | Run 'scons --dump-config' to see the final | ||
| 11 | build configuration. | ||
| 12 | |||
| 13 | """) | ||
| 14 | |||
| 15 | import os | ||
| 16 | (ostype, _, _, _, arch) = os.uname() | ||
