-OBJS += crc/crc7.o
-OBJS += crc/crc16.o
-OBJS += crc/crc32.o
-OBJS += crc/crc32c.o
-OBJS += crc/crc32c-intel.o
-OBJS += crc/crc64.o
-OBJS += crc/sha1.o
-OBJS += crc/sha256.o
-OBJS += crc/sha512.o
-OBJS += crc/md5.o
-
-OBJS += engines/cpu.o
-OBJS += engines/libaio.o
-OBJS += engines/mmap.o
-OBJS += engines/posixaio.o
-OBJS += engines/sg.o
-OBJS += engines/splice.o
-OBJS += engines/sync.o
-OBJS += engines/null.o
-OBJS += engines/net.o
-OBJS += engines/syslet-rw.o
-OBJS += engines/guasi.o
+ifeq ($(UNAME), Linux)
+ SOURCE += diskutil.c fifo.c blktrace.c helpers.c cgroup.c trim.c \
+ engines/libaio.c engines/posixaio.c engines/sg.c \
+ engines/splice.c engines/syslet-rw.c engines/guasi.c \
+ engines/binject.c profiles/tiobench.c
+ LIBS += -lpthread -ldl -lrt -laio
+ CFLAGS += -rdynamic
+endif
+ifeq ($(UNAME), SunOS)
+ SOURCE += fifo.c lib/strsep.c helpers.c engines/posixaio.c \
+ engines/solarisaio.c
+ LIBS += -lpthread -ldl -laio -lrt -lnsl -lsocket
+ CPPFLAGS += -D__EXTENSIONS__
+endif
+ifeq ($(UNAME), FreeBSD)
+ SOURCE += helpers.c engines/posixaio.c
+ LIBS += -lpthread -lrt
+ CFLAGS += -rdynamic
+endif
+ifeq ($(UNAME), NetBSD)
+ SOURCE += helpers.c engines/posixaio.c
+ LIBS += -lpthread -lrt
+ CFLAGS += -rdynamic
+endif
+ifeq ($(UNAME), AIX)
+ SOURCE += fifo.c helpers.c lib/getopt_long.c engines/posixaio.c
+ LIBS += -lpthread -ldl -lrt
+ CPPFLAGS += -D_LARGE_FILES -D__ppc__
+ LDFLAGS += -L/opt/freeware/lib -Wl,-blibpath:/opt/freeware/lib:/usr/lib:/lib -Wl,-bmaxdata:0x80000000
+endif
+ifeq ($(UNAME), HP-UX)
+ SOURCE += fifo.c helpers.c lib/getopt_long.c lib/strsep.c engines/posixaio.c
+ LIBS += -lpthread -ldl -lrt
+ CFLAGS += -D_LARGEFILE64_SOURCE
+endif
+ifeq ($(UNAME), Darwin)
+ SOURCE += helpers.c engines/posixaio.c
+ LIBS += -lpthread -ldl
+endif
+ifneq (,$(findstring CYGWIN,$(UNAME)))
+ SOURCE += engines/windowsaio.c
+ LIBS += -lpthread -lrt -lpsapi
+ CFLAGS += -DPSAPI_VERSION=1
+endif