# the GNU General Public License
#
-ifeq ($(NOISY_BUILD),)
-
-define ast_make_o_c
-$(1): $(2)
- @echo " [CC] $$< -> $$@"
- @$$(CC) -o $$@ -c $$< $$(CFLAGS)
-endef
-
-define ast_make_oo_cc
-$(1): $(2)
- @echo " [CXX] $$< -> $$@"
- @$$(CXX) -o $$@ -c $$< $$(CFLAGS)
-endef
-
-define ast_make_c_y
-$(1): $(2)
- @echo " [BISON] $$< -> $$@"
- @bison -o $$@ -d --name-prefix=ast_yy $$<
-endef
-
-define ast_make_c_fl
-$(1): $(2)
- @echo " [FLEX] $$< -> $$@"
- @flex -o $$@ --full $$<
-endef
-
-define ast_make_so_o
-$(1): $(2)
- @echo " [LD] $$^ -> $$@"
- @$$(CC) -o $$@ $$(LDFLAGS) $$(SOLINK) $$^ $$(LIBS)
-endef
+# Each command is preceded by a short comment on what to do.
+# Prefixing one or the other with @\# or @ or nothing makes the desired
+# behaviour. ECHO_PREFIX prefixes the comment, CMD_PREFIX prefixes the command.
-define ast_make_so_oo
-$(1): $(2)
- @echo " [LDXX] $$^ -> $$@"
- @$$(CXX) -o $$@ $$(LDFLAGS) $$(SOLINK) $$^ $$(LIBS)
-endef
-
-define ast_make_a_o
-$(1): $(2)
- @echo " [AR] $$^ -> $$@"
- @$$(AR) cr $$@ $$^
- @$$(RANLIB) $$@
-endef
-
-define ast_make_final
-$(1): $(2)
- @echo " [LD] $$^ -> $$@"
- @$$(CC) -o $$@ $$(LDFLAGS) $$^ $$(LIBS)
-endef
-
-define ast_make_final_host
-$(1): $(2)
- @echo " [LD] $$^ -> $$@"
- @$$(HOST_CC) -o $$@ $$(CFLAGS) $$(LDFLAGS) $$^ $$(LIBS)
-endef
+-include $(ASTTOPDIR)/makeopts
+ifeq ($(NOISY_BUILD),)
+ ECHO_PREFIX=@
+ CMD_PREFIX=@
else
+ ECHO_PREFIX=@\#
+ CMD_PREFIX=
+endif
-define ast_make_o_c
-$(1): $(2)
- $$(CC) -o $$@ -c $$< $$(CFLAGS)
-endef
-
-define ast_make_oo_cc
-$(1): $(2)
- $$(CXX) -o $$@ -c $$< $$(CFLAGS)
-endef
-
-define ast_make_c_y
-$(1): $(2)
- bison -o $$@ -d --name-prefix=ast_yy $$<
-endef
-
-define ast_make_c_fl
-$(1): $(2)
- flex -o $$@ --full $$<
-endef
-
-define ast_make_so_o
-$(1): $(2)
- $$(CC) -o $$@ $$(LDFAGS) $$(SOLINK) $$^ $$(LIBS)
-endef
-
-define ast_make_so_oo
-$(1): $(2)
- $$(CXX) -o $$@ $$(LDFLAGS) $$(SOLINK) $$^ $$(LIBS)
-endef
-
-define ast_make_a_o
-$(1): $(2)
- $$(AR) cr $$@ $$^
- $$(RANLIB) $$@
-endef
-
-define ast_make_final
-$(1): $(2)
- $$(CC) -o $$@ $$(LDFLAGS) $$^ $$(LIBS)
-endef
-
-define ast_make_final_host
-$(1): $(2)
- $$(HOST_CC) -o $$@ $$(CFLAGS) $$(LDFLAGS) $$^ $$(LIBS)
-endef
+ifeq ($(findstring DONT_OPTIMIZE,$(MENUSELECT_CFLAGS)),)
+# More GSM codec optimization
+# Uncomment to enable MMXTM optimizations for x86 architecture CPU's
+# which support MMX instructions. This should be newer pentiums,
+# ppro's, etc, as well as the AMD K6 and K7.
+#K6OPT=-DK6OPT
+OPTIMIZE?=-O6
+ASTCFLAGS+=$(OPTIMIZE)
endif
-$(eval $(call ast_make_o_c,%.o,%.c))
+%.o: %.c
+ $(ECHO_PREFIX) echo " [CC] $< -> $@"
+ifeq ($(AST_DEVMODE),yes)
+ $(CMD_PREFIX) $(CC) -o $@ -c $< $(ASTCFLAGS) -MMD -MT $@ -MF .$(subst /,_,$@).d -MP
+else
+ $(CMD_PREFIX) $(CC) -o $@ -c $< $(ASTCFLAGS)
+endif
-$(eval $(call ast_make_oo_cc,%.oo,%.cc))
+%.oo: %.cc
+ $(ECHO_PREFIX) echo " [CXX] $< -> $@"
+ifeq ($(AST_DEVMODE),yes)
+ $(CMD_PREFIX) $(CXX) -o $@ -c $< $(ASTCFLAGS) -MMD -MT $@ -MF .$(subst /,_,$@).d -MP
+else
+ $(CMD_PREFIX) $(CXX) -o $@ -c $< $(ASTCFLAGS)
+endif
-$(eval $(call ast_make_so_o,%.so,%.o))
+%.c: %.y
+ $(ECHO_PREFIX) echo " [BISON] $< -> $@"
+ $(CMD_PREFIX) bison -o $@ -d --name-prefix=ast_yy $<
-$(eval $(call ast_make_so_oo,%.so,%.oo))
+%.c: %.fl
+ $(ECHO_PREFIX) echo " [FLEX] $< -> $@"
+ $(CMD_PREFIX) flex -o $@ --full $<
-$(eval $(call ast_make_final,%,%.o))
+%.so: %.o
+ $(ECHO_PREFIX) echo " [LD] $^ -> $@"
+ $(CMD_PREFIX) $(CC) $(STATIC_BUILD) -o $@ $(ASTLDFLAGS) $(SOLINK) $^ $(LIBS)
-$(eval $(call ast_make_c_y,%.c,%.y))
+%.soo: %.oo
+ $(ECHO_PREFIX) echo " [LDXX] $^ -> $@"
+ $(CMD_PREFIX) $(CXX) $(STATIC_BUILD) -o $@ $(ASTLDFLAGS) $(SOLINK) $^ $(LIBS)
-$(eval $(call ast_make_c_fl,%.c,%.fl))
+%: %.o
+ $(ECHO_PREFIX) echo " [LD] $^ -> $@"
+ $(CMD_PREFIX) $(CXX) $(STATIC_BUILD) -o $@ $(ASTLDFLAGS) $^ $(LIBS)