-# add -Wredundant-decls when libsysfs gets cleaned up
-WARNINGS := -Wall
-
-CFLAGS := -pipe -Dasmlinkage=
-
-# set up the proper tdb spinlock code if we can
-ifeq ($(strip $(ARCH)),i386)
- CFLAGS += -DUSE_SPINLOCKS -DINTEL_SPINLOCKS
-endif
+# check if compiler option is supported
+cc-supports = ${shell if $(CC) ${1} -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; fi;}
+
+WARNINGS := -Wall -fno-builtin -Wchar-subscripts -Wpointer-arith -Wstrict-prototypes -Wsign-compare
+WARNINGS += $(call cc-supports,-Wno-pointer-sign)
+WARNINGS += $(call cc-supports,-Wdeclaration-after-statement)
+
+CFLAGS := -pipe
+
+HEADERS = \
+ udev.h \
+ udev_utils.h \
+ udev_rules.h \
+ udev_version.h \
+ udev_db.h \
+ udev_sysfs.h \
+ logging.h \
+ udev_libc_wrapper.h \
+ udev_selinux.h \
+ list.h
+
+SYSFS_OBJS = \
+ libsysfs/sysfs_class.o \
+ libsysfs/sysfs_device.o \
+ libsysfs/sysfs_dir.o \
+ libsysfs/sysfs_driver.o \
+ libsysfs/sysfs_utils.o \
+ libsysfs/dlist.o
+
+UDEV_OBJS = \
+ udev_utils.o \
+ udev_config.o \
+ udev_add.o \
+ udev_remove.o \
+ udev_sysfs.o \
+ udev_db.o \
+ udev_multiplex.o \
+ udev_rules.o \
+ udev_rules_parse.o \
+ udev_libc_wrapper.o
+
+OBJS = \
+ udev.a \
+ libsysfs/sysfs.a
+
+SYSFS = $(PWD)/libsysfs/sysfs.a
+
+CFLAGS += -I$(PWD)/libsysfs/sysfs \
+ -I$(PWD)/libsysfs