diff --git a/Makefile b/Makefile
index 0145a78bab9e55db8d4a4a28d24a8e9cf6076c7e..4efa98e12ec5f6a86552d69fe2a2180d2bf72418 100644
--- a/Makefile
+++ b/Makefile
@@ -312,10 +312,10 @@ $(SUBDIRS): include/asterisk/version.h include/asterisk/build.h include/asterisk
 main: $(filter-out main,$(MOD_SUBDIRS))
 
 $(MOD_SUBDIRS):
-	@ASTCFLAGS="$(MOD_SUBDIR_CFLAGS) $(ASTCFLAGS)" ASTLDFLAGS="$(ASTLDFLAGS)" AST_LIBS="$(AST_LIBS)" $(MAKE) --no-print-directory -C $@ SUBDIR=$@ all
+	@ASTCFLAGS="$(MOD_SUBDIR_CFLAGS) $(ASTCFLAGS)" ASTLDFLAGS="$(ASTLDFLAGS)" AST_LIBS="$(AST_LIBS)" $(MAKE) --no-print-directory --no-builtin-rules -C $@ SUBDIR=$@ all
 
 $(OTHER_SUBDIRS):
-	@ASTCFLAGS="$(OTHER_SUBDIR_CFLAGS) $(ASTCFLAGS)" ASTLDFLAGS="$(ASTLDFLAGS)" AUDIO_LIBS="$(AUDIO_LIBS)" $(MAKE) --no-print-directory -C $@ SUBDIR=$@ all
+	@ASTCFLAGS="$(OTHER_SUBDIR_CFLAGS) $(ASTCFLAGS)" ASTLDFLAGS="$(ASTLDFLAGS)" AUDIO_LIBS="$(AUDIO_LIBS)" $(MAKE) --no-print-directory --no-builtin-rules -C $@ SUBDIR=$@ all
 
 defaults.h: makeopts
 	@build_tools/make_defaults_h > $@.tmp
diff --git a/Makefile.rules b/Makefile.rules
index 591322ef2fcab35e71da8c74df03474afc910d52..b7560a87cd2d44d4a7f4f9233130552182d3a830 100644
--- a/Makefile.rules
+++ b/Makefile.rules
@@ -44,6 +44,14 @@ else
 	$(CMD_PREFIX) $(CC) -o $@ -c $< $(ASTCFLAGS)
 endif
 
+%.o: %.s
+	$(ECHO_PREFIX) echo "   [AS] $< -> $@"
+ifeq ($(AST_DEVMODE),yes)
+	$(CMD_PREFIX) $(CC) -o $@ -c $< $(ASTCFLAGS) -MMD -MT $@ -MF .$(subst /,_,$@).d -MP
+else
+	$(CMD_PREFIX) $(CC) -o $@ -c $< $(ASTCFLAGS)
+endif
+
 %.oo: %.cc
 	$(ECHO_PREFIX) echo "   [CXX] $< -> $@"
 ifeq ($(AST_DEVMODE),yes)
@@ -64,7 +72,7 @@ endif
 	$(ECHO_PREFIX) echo "   [LD] $^ -> $@"
 	$(CMD_PREFIX) $(CC) $(STATIC_BUILD) -o $@ $(ASTLDFLAGS) $(SOLINK) $^ $(LIBS)
 
-%.soo: %.oo
+%.so: %.oo
 	$(ECHO_PREFIX) echo "   [LDXX] $^ -> $@"
 	$(CMD_PREFIX) $(CXX) $(STATIC_BUILD) -o $@ $(ASTLDFLAGS) $(SOLINK) $^ $(LIBS)