-gxx := /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++
-cycc = $(gxx) -arch armv6 -o $@ -mcpu=arm1176jzf-s -miphoneos-version-min=$(ios) -isysroot $(sdk) -idirafter /usr/include -F/Library/Frameworks
+gxx := /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++-$(gcc)
+cycc = $(gxx) -mthumb -arch armv6 -o $@ -mcpu=arm1176jzf-s -miphoneos-version-min=2.0 -isysroot $(sdk) -idirafter /usr/include -F{sysroot,}/Library/Frameworks
+
+dirs := Menes CyteKit Cydia SDURLCache
+
+code := $(foreach dir,$(dirs),$(wildcard $(foreach ext,h hpp c cpp m mm,$(dir)/*.$(ext))))
+code := $(filter-out SDURLCache/SDURLCacheTests.m,$(code))
+code += MobileCydia.mm iPhonePrivate.h Cytore.hpp lookup3.c
+
+source := $(filter %.m,$(code)) $(filter %.mm,$(code))
+source += $(filter %.c,$(code)) $(filter %.cpp,$(code))
+header := $(filter %.h,$(code)) $(filter %.hpp,$(code))