#*******************************************************************************
# Default target
#*******************************************************************************
#zte_lib := libsoft_timer libnvram

include config_lib.mk

.PHONY: all $(zte_lib) romfs

ALL: all romfs

all:
	touch .sgbuilt_flag
	for lib in ${zte_lib} ; do                                              \
		${MAKE} -j1 -C $$lib all || exit $$?;                                          \
	done;

romfs:
	mkdir -p $(ROOTFS_DIR)/lib
	if [ -f .sgbuilt_flag ]; then                                           \
		for lib in ${zte_lib} ; do                                          \
			${MAKE} -j1 -C $$lib romfs || exit $$?;                                    \
		done;                                                               \
	fi;

clean:
	for lib in ${zte_lib} ; do                                          \
		${MAKE} -j1 -C $$lib clean;                                     \
	done;                                                               \
	rm -f .sgbuilt_flag

