diff --git a/Makefile b/Makefile
index 287d8f4592f706f974bbf6a5b6a591ef9581af9e..bc1b9db9651509efd8f1ee03fbe413b2b9cb3a9c 100644
--- a/Makefile
+++ b/Makefile
@@ -44,7 +44,9 @@ POTDIR ?= po/tpl
 PODIR ?= po/lang
 MODIR ?= po/bin
 
-SOURCES := $(wildcard ${SRCDIR}/*.cpp) $(wildcard ${SRCDIR}/*.c) $(wildcard ${SRCDIR}/**/*.cpp) $(wildcard ${SRCDIR}/**/*.c)
+rwildcard = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+
+SOURCES := $(call rwildcard,${SRCDIR},*.cpp *.c)
 
 SRCOBJS := $(patsubst ${SRCDIR}/%.c,${OBJDIR}/%.o,$(patsubst ${SRCDIR}/%.cpp,${OBJDIR}/%.o,${SOURCES}))
 
@@ -53,7 +55,7 @@ OBJECTS := $(filter-out $(patsubst ${SRCDIR}/%,${OBJDIR}/%,${APPDIR})/%,${SRCOBJ
 
 TARGETS := $(patsubst $(patsubst ${SRCDIR}/%,${OBJDIR}/%,${APPDIR})/%.o,${BINDIR}/%,${APPOBJS})
 
-POTSRCS := ${SOURCES} $(wildcard ${SRCDIR}/*.hpp) $(wildcard ${SRCDIR}/*.h) $(wildcard ${SRCDIR}/**/*.hpp) $(wildcard ${SRCDIR}/**/*.h)
+POTSRCS := ${SOURCES} $(call rwildcard,${SRCDIR},*.hpp *.h)
 POTOBJS := ${POTDIR}/${PODOMAIN}.pot
 POOBJS := $(foreach POLANG,${POLANGS},$(patsubst ${POTDIR}/%.pot,${PODIR}/${POLANG}/%.po,${POTOBJS}))
 MOOBJS := $(patsubst ${PODIR}/%.po,${MODIR}/%.mo,${POOBJS})