#
# Makefile for Zaptel driver modules and utilities
#
# Copyright (C) 2001-2006 Digium, Inc.
#
#

.EXPORT_ALL_VARIABLES:

.PHONY: menuselect distclean dist-clean clean version.h all _all install b410p devices programs modules linux24 linux26 xpp tests devel data stackcheck install-udev config update install-programs install-modules install-linux24 install-linux26 firmware install-include install-libs

HOSTCC=gcc
CC=gcc
PWD=$(shell pwd)

ifeq ($(DEB_HOST_GNU_TYPE),)
UNAME_M:=$(shell uname -m)
else
UNAME_M:=$(DEB_HOST_GNU_TYPE)
endif
# If you want to build for a kernel other than the current kernel, set KVERS
ifndef KVERS
KVERS:=$(shell uname -r)
endif
ifndef KSRC
  ifneq (,$(wildcard /lib/modules/$(KVERS)/build))
    KSRC:=/lib/modules/$(KVERS)/build
  else
    KSRC_SEARCH_PATH:=/usr/src/linux-2.4 /usr/src/linux
    KSRC:=$(shell for dir in $(KSRC_SEARCH_PATH); do if [ -d $$dir ]; then echo $$dir; break; fi; done)
  endif
endif
KVERS_MAJ:=$(shell echo $(KVERS) | cut -d. -f1-2)
KINCLUDES:=$(KSRC)/include

CFLAGS+=-I. $(RPM_OPT_FLAGS) -DBUILDING_TONEZONE #-DTONEZONE_DRIVER
ifneq (,$(findstring ppc,$(UNAME_M)))
CFLAGS_PPC:=-fsigned-char
endif
ifneq (,$(findstring x86_64,$(UNAME_M)))
CFLAGS_x86_64:=-m64
endif
CFLAGS+=$(CFLAGS_PPC) $(CFLAGS_x86_64)
LCFLAGS=-fPIC $(CFLAGS) -DBUILDING_TONEZONE
KFLAGS=-I$(KINCLUDES) -O6
KFLAGS+=-DMODULE -D__KERNEL__ -DEXPORT_SYMTAB -I$(KSRC)/drivers/net \
	-Wall -I. -Wstrict-prototypes -fomit-frame-pointer -I$(KSRC)/drivers/net/wan -I$(KINCLUDES)/net
ifneq (,$(wildcard $(KINCLUDES)/linux/modversions.h))
  KFLAGS+=-DMODVERSIONS -include $(KINCLUDES)/linux/modversions.h
endif
ifneq (,$(findstring ppc,$(UNAME_M)))
KFLAGS_PPC:=-msoft-float -fsigned-char
endif
KFLAGS+=$(KFLAGS_PPC)
ifeq ($(KVERS_MAJ),2.4)
  ifneq (,$(findstring x86_64,$(UNAME_M)))
    KFLAGS+=-mcmodel=kernel
  endif
endif

# If the file .zaptel.makeopts is present in your home directory, you can
# include all of your favorite menuselect options so that every time you download
# a new version of Asterisk, you don't have to run menuselect to set them.
# The file /etc/zaptel.makeopts will also be included but can be overridden
# by the file in your home directory.

GLOBAL_MAKEOPTS=$(wildcard /etc/zaptel.makeopts)
USER_MAKEOPTS=$(wildcard ~/.zaptel.makeopts)

ifeq ($(strip $(foreach var,clean distclean dist-clean update,$(findstring $(var),$(MAKECMDGOALS)))),)
 ifneq ($(wildcard menuselect.makeopts),)
  include menuselect.makeopts
 endif
endif

ifeq ($(strip $(foreach var,clean distclean dist-clean update,$(findstring $(var),$(MAKECMDGOALS)))),)
 ifneq ($(wildcard makeopts),)
  include makeopts
 endif
endif

#
# Features are now configured in zconfig.h
#

KFLAGS+=-DSTANDALONE_ZAPATA
CFLAGS+=-DSTANDALONE_ZAPATA
KMAKE  = $(MAKE) -C $(KSRC) SUBDIRS=$(PWD)
KMAKE_INST = $(KMAKE) \
  INSTALL_MOD_PATH=$(INSTALL_PREFIX) INSTALL_MOD_DIR=misc modules_install

ROOT_PREFIX=
INSTALL_PREFIX=$(DESTDIR)

CONFIG_FILE=$(INSTALL_PREFIX)/etc/zaptel.conf
CFLAGS+=-DZAPTEL_CONFIG=\"$(CONFIG_FILE)\"

ifeq ($(KVERS_MAJ),2.4)
  BUILDVER:=linux24
else
  BUILDVER:=linux26
endif

# This is not related to the version that we build. Rather, to the 
# version that we runs. If we build for 2.4 using 2.4 headers on a 2.6
# system with udev mounted on /dev , no point in installing files to /dev
# because they'll be wiped at next reboot.
DYNFS:=$(shell ps ax | grep -v grep | grep -qw 'devfsd\|udevd' && echo "yes")

# Check for udev rules directories
ifneq (,$(wildcard $(ROOT_PREFIX)/etc/udev/rules.d))
  UDEVRULES=yes
endif

CHKCONFIG:=$(shell sh -c 'type -p chkconfig' 2> /dev/null)
ifndef CHKCONFIG
CHKCONFIG:=:
endif

ifneq ($(wildcard .version),)
  ZAPTELVERSION:=$(shell cat .version)
endif

ifneq ($(wildcard .svn),)
  ZAPTELVERSION=SVN-$(shell build_tools/make_svn_branch_name)
endif

LTZ_A:=libtonezone.a
LTZ_A_OBJS:=zonedata.o tonezone.o
LTZ_SO:=libtonezone.so
LTZ_SO_OBJS:=zonedata.lo tonezone.lo
LTZ_SO_MAJOR_VER:=1
LTZ_SO_MINOR_VER:=0

ifeq ($(findstring xpp_usb,$(MENUSELECT_MODULES)),)
  BUILD_XPP:=yes
endif
MODULES:=pciradio tor2 torisa wcfxo wct1xxp wctdm wctdm24xxp wcte11xp wcusb zaptel ztd-eth ztd-loc ztdummy ztdynamic zttranscode
MODULES:=$(filter-out $(MENUSELECT_MODULES),$(MODULES))

MODULESO:=$(MODULES:%=%.o)
MODULESKO:=$(MODULES:%=%.ko)
ifeq ($(BUILDVER),linux26)
MODULES_BUILD:=$(MODULESKO)
HOTPLUG_FIRMWARE:=$(shell if grep CONFIG_FW_LOADER $(KINCLUDES)/linux/autoconf.h | grep -q undef; then echo "no"; else echo "yes"; fi)
else
MODULES_BUILD:=$(MODULESO)
endif

BIN_DIR:=$(INSTALL_PREFIX)/sbin
LIB_DIR:=$(INSTALL_PREFIX)/usr/lib
INC_DIR:=$(INSTALL_PREFIX)/usr/include
MOD_DIR:=$(INSTALL_PREFIX)/lib/modules/$(KVERS)/misc

MOD_DESTDIR:=zaptel

obj-m:=$(MODULESO)
ifeq ($(findstring wct4xxp,$(MENUSELECT_MODULES)),)
obj-m+=wct4xxp/
endif

# Set this to override hotplug firmware loading and revert to classic header
#HOTPLUG_FIRMWARE=no
ifeq ($(HOTPLUG_FIRMWARE),yes)
CFLAGS+=-DHOTPLUG_FIRMWARE
endif	

# Also build xpp in the subdirectory xpp/ . But only for >=2.6.10 and only 
# for i386 or x86_64. On other archs the module will probably build but panic.
# These lines are only meaningful when this Makefile is used as kconfig for 
# 2.6 build

ifneq (,$(shell [ 0$(SUBLEVEL) -ge 10 ] && [ "$(ARCH)" = 'i386' ] && [ "x$(BUILD_XPP)" = "xyes" ] && echo 1))
obj-m+=xpp/
endif

ifneq (,$(shell [ 0$(SUBLEVEL) -ge 10 ] && [ "$(ARCH)" = 'x86_64' ] && [ "x$(BUILD_XPP)" = "xyes" ] && echo 1))
obj-m+=xpp/
endif

BINS:=fxotune fxstest sethdlc-new ztcfg ztdiag ztmonitor ztspeed zttest zttool
UTILS:=$(filter-out zttool fxstest ztcfg,$(BINS))
UTILSO:=$(UTILS:%=%.o)
BINS:=$(filter-out $(MENUSELECT_UTILS),$(BINS))

all: menuselect.makeopts 
	@$(MAKE) _all

_all: $(if $(MODULES),modules) programs $(LTZ_SO) $(LTZ_A)

programs: $(BINS)

modules: $(BUILDVER)

linux24: prereq $(MODULESO) wct4xxp/wct4xxp.o

linux26: prereq
	@if [ -z "$(KSRC)" -o ! -d "$(KSRC)" ]; then echo "You do not appear to have the sources for the $(KVERS) kernel installed."; exit 1 ; fi
	$(MAKE) -C $(KSRC) SUBDIRS=$(PWD) modules

xpp: linux26

version.h:
	@ZAPTELVERSION="${ZAPTELVERSION}" build_tools/make_version_h > $@.tmp
	@if cmp -s $@.tmp $@ ; then :; else \
		mv $@.tmp $@ ; \
	fi
	@rm -f $@.tmp

wct4xxp/wct4xxp.o:
	$(MAKE) -C wct4xxp KFLAGS="$(KFLAGS) -I.." CFLAGS="$(CFLAGS) -I.."

devel: tor2ee 

tests: patgen pattest patlooptest hdlcstress hdlctest hdlcgen hdlcverify timertest

tor2.o: tor2-hw.h tor2fw.h

zaptel.o: digits.h arith.h sec.h mec.h sec-2.h mec2.h mec3.h zconfig.h

wcusb.o: wcusb.h

wcfxsusb.o: wcfxsusb.h

wctdm.o: wctdm.h

wctdm24xxp.o: wctdm.h

pciradio.o: radfw.h

ztdummy.o: ztdummy.h

$(MODULESO): %.o: %.c zaptel.h
	$(CC) $(KFLAGS) -o $@ -c $<

tor2ee.o: tor2-hw.h

tor2ee: LDLIBS+=-lpci

zonedata.lo: zonedata.c
	$(CC) $(CFLAGS) -c $(LCFLAGS) -o $@ $^

tonezone.lo: tonezone.c
	$(CC) $(CFLAGS) -c $(LCFLAGS) -o $@ $^

torisatool: torisatool.o
	$(CC) $(CFLAGS) -o $@ $^

tones.h: gendigits
	./gendigits > $@

tor2fw.h: tormenta2.rbt makefw 
	./makefw $< tor2fw > $@

radfw.h: pciradio.rbt makefw
	./makefw $< radfw > $@

makefw: CFLAGS=

gendigits: LDLIBS+=-lm
gendigits: CFLAGS=

zaptel.c: tones.h 

prereq:  tones.h tor2fw.h radfw.h version.h

zttool.o: zttool.c zaptel.h
	$(CC) -g -c $(NEWT_INCLUDE) $(CFLAGS) -o $@ $<

ztprovision.o: ztprovision.c zaptel.h

ztmonitor.o: ztmonitor.c zaptel.h

ztspeed: CFLAGS=
ztspeed.o: CFLAGS=
zttool: LDLIBS+=-lnewt
sethdlc-new.o: CFLAGS+=-I$(KINCLUDES)

$(LTZ_A): $(LTZ_A_OBJS)
	ar rcs $@ $^
	ranlib $@

$(LTZ_SO): $(LTZ_SO_OBJS)
	$(CC) $(CFLAGS) -shared -Wl,-soname,$(LTZ_SO).$(LTZ_SO_MAJOR_VER) \
		-lm -o $(LTZ_SO).$(LTZ_SO_MAJOR_VER).$(LTZ_SO_MINOR_VER) $^
	ln -snf $(LTZ_SO).$(LTZ_SO_MAJOR_VER).$(LTZ_SO_MINOR_VER) $(LTZ_SO).$(LTZ_SO_MAJOR_VER)
	ln -snf $(LTZ_SO).$(LTZ_SO_MAJOR_VER).$(LTZ_SO_MINOR_VER) $(LTZ_SO)

ztcfg.c: ztcfg.h

ztcfg-shared: ztcfg.o $(LTZ_SO)
	$(CC) $(CFLAGS) -o $@ $^ -lm

data:
	$(MAKE) -C datamods datamods

ztcfg: ztcfg.o $(LTZ_A)
	$(CC) $(CFLAGS) -o $@ $^ -lm

ztcfg-dude: ztcfg-dude.o mknotch.o complex.o $(LTZ_SO)
	$(CC) $(CFLAGS) -o $@ $^ -lm

mknotch.o: mknotch.cc
	$(CC) $(CFLAGS) -o $@ -c $^

complex.o: complex.cc
	$(CC) $(CFLAGS) -o $@ -c $^

usbfxstest: LDLIBS+=-lzap -lm
fxstest: $(LTZ_SO)
fxstest: LDLIBS+=-lm
fxotune: LDLIBS+=-lm
fxsdump: LDLIBS+=-lm

stackcheck: checkstack $(BUILDVER)
	./checkstack *.o

b410p:
	@wget -V >/dev/null || (echo "You need wget in order to install the drivers" ; false)
	[ -f misdn-b410p.tar.bz ] || wget ftp://ftp.digium.com/pub/zaptel/b410p/misdn-b410p.tar.gz
	tar -zxf misdn-b410p.tar.gz
	$(MAKE) -C misdn install
	[ -f mISDNuser.tar.gz ] || wget ftp://ftp.digium.com/pub/zaptel/b410p/mISDNuser.tar.gz
	tar -zxf mISDNuser.tar.gz
	$(MAKE) -C mISDNuser install

$(UTILS): %: %.o
	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS) $(LDLIBS)

$(UTILSO): %.o: %.c
	$(CC) $(CFLAGS) -o $@ -c $<

devices:
ifndef DYNFS
	mkdir -p $(INSTALL_PREFIX)/dev/zap
	rm -f $(INSTALL_PREFIX)/dev/zap/ctl
	rm -f $(INSTALL_PREFIX)/dev/zap/channel
	rm -f $(INSTALL_PREFIX)/dev/zap/pseudo
	rm -f $(INSTALL_PREFIX)/dev/zap/timer
	rm -f $(INSTALL_PREFIX)/dev/zap/transcode
	rm -f $(INSTALL_PREFIX)/dev/zap/253
	rm -f $(INSTALL_PREFIX)/dev/zap/252
	rm -f $(INSTALL_PREFIX)/dev/zap/251
	rm -f $(INSTALL_PREFIX)/dev/zap/250
	mknod $(INSTALL_PREFIX)/dev/zap/ctl c 196 0
	mknod $(INSTALL_PREFIX)/dev/zap/transcode c 196 250
	mknod $(INSTALL_PREFIX)/dev/zap/timer c 196 253
	mknod $(INSTALL_PREFIX)/dev/zap/channel c 196 254
	mknod $(INSTALL_PREFIX)/dev/zap/pseudo c 196 255
	N=1; \
	while [ $$N -lt 250 ]; do \
		rm -f $(INSTALL_PREFIX)/dev/zap/$$N; \
		mknod $(INSTALL_PREFIX)/dev/zap/$$N c 196 $$N; \
		N=$$[$$N+1]; \
	done
else # DYNFS
  ifdef UDEVRULES
	build_tools/genudevrules > $(INSTALL_PREFIX)/etc/udev/rules.d/zaptel.rules
  else # !UDEVRULES
	@echo "**** Dynamic filesystem detected -- not creating device nodes"
  endif
endif

install: all devices firmware install-libs install-include
	if [ -f ztcfg ]; then \
		$(INSTALL) -D -m 755 ztcfg $(INSTALL_PREFIX)/sbin/ztcfg; \
	fi
	if [ -f sethdlc-new ]; then \
		$(INSTALL) -D -m 755 sethdlc-new $(INSTALL_PREFIX)/sbin/sethdlc; \
	elif [ -f sethdlc ]; then \
		$(INSTALL) -D -m 755 sethdlc $(INSTALL_PREFIX)/sbin/sethdlc; \
	fi
	if [ -f zttool ]; then \
		$(INSTALL) -D -m 755 zttool $(INSTALL_PREFIX)/sbin/zttool; \
	fi
ifeq ($(BUILDVER),linux26)
	for x in $(MODULESKO); do \
		rm -f $(INSTALL_PREFIX)/lib/modules/$(KVERS)/extra/$$x ; \
	done; \
	$(KMAKE_INST); \
	if [ -f datamods/syncppp.ko ]; then \
		$(MAKE) -C datamods install; \
	else \
		rm -f $(INSTALL_PREFIX)/lib/modules/$(KVERS)/misc/{hdlc_*,syncppp}.ko; \
	fi
else
	for x in $(MODULESO); do \
		$(INSTALL) -D -m 644 $$x $(INSTALL_PREFIX)/lib/modules/$(KVERS)/misc/$$x ; \
	done
endif
	if ! [ -f wcfxsusb.o ]; then \
		rm -f $(INSTALL_PREFIX)/lib/modules/$(KVERS)/misc/wcfxsusb.o; \
	fi; \
	rm -f $(INSTALL_PREFIX)/lib/modules/$(KVERS)/misc/wcfxs.o
	$(INSTALL) -m 644 doc/ztcfg.8 $(INSTALL_PREFIX)/usr/share/man/man8
	$(INSTALL) -m 644 doc/zttool.8 $(INSTALL_PREFIX)/usr/share/man/man8
	[ `id -u` = 0 ] && /sbin/depmod -a $(KVERS) || :
	[ -f $(CONFIG_FILE) ] || $(INSTALL) -D -m 644 zaptel.conf.sample $(CONFIG_FILE)
	build_tools/genmodconf $(BUILDVER) "$(ROOT_PREFIX)" "$(filter-out zaptel,$(MODULES))"
	@if [ -d /etc/modutils ]; then \
		/sbin/update-modules ; \
	fi

install-libs: $(LTZ_SO) $(LTZ_A)
	$(INSTALL) -D -m 755 $(LTZ_A) $(LIB_DIR)/$(LTZ_A)
	$(INSTALL) -D -m 755 $(LTZ_SO) $(LIB_DIR)/$(LTZ_SO).$(LTZ_SO_MAJOR_VER).$(LTZ_SO_MINOR_VER)
	if [ -z "$(INSTALL_PREFIX)" -a `id -u` = 0 ]; then \
		/sbin/ldconfig || : ;\
	fi
	rm -f $(LIB_DIR)$(LTZ_SO)
	$(LN) -sf $(LTZ_SO).$(LTZ_SO_MAJOR_VER).$(LTZ_SO_MINOR_VER) \
		$(LIB_DIR)/$(LTZ_SO).$(LTZ_SO_MAJOR_VER)
	$(LN) -sf $(LTZ_SO).$(LTZ_SO_MAJOR_VER).$(LTZ_SO_MINOR_VER) \
		$(LIB_DIR)/$(LTZ_SO)
	if [ -z "$(INSTALL_PREFIX)" && -x /usr/sbin/sestatus ] && (/usr/sbin/sestatus | grep "SELinux status:" | grep -q "enabled") ; then restorecon -v $(LIB_DIR)/$(LTZ_SO); fi

install-include:
	$(INSTALL) -D -m 644 zaptel.h $(INSTALL_PREFIX)/usr/include/zaptel/zaptel.h
	$(INSTALL) -D -m 644 tonezone.h $(INSTALL_PREFIX)/usr/include/zaptel/tonezone.h
	rm -f $(INSTALL_PREFIX)/usr/include/linux/zaptel.h
	rm -f $(INSTALL_PREFIX)/usr/include/linux/torisa.h
	rm -f $(INSTALL_PREFIX)/usr/include/zaptel.h
	rm -f $(INSTALL_PREFIX)/usr/include/torisa.h
	rm -f $(INSTALL_PREFIX)/usr/include/tonezone.h

install-udev: devices

firmware:
ifeq ($(HOTPLUG_FIRMWARE),yes)
	if [ -d $(INSTALL_PREFIX)/usr/lib/hotplug/firmware ]; then \
		$(INSTALL) -m 644 wct4xxp/*.ima $(INSTALL_PREFIX)/usr/lib/hotplug/firmware; \
	fi
	if [ -d $(INSTALL_PREFIX)/lib/firmware ]; then \
		$(INSTALL) -m 644 wct4xxp/*.ima $(INSTALL_PREFIX)/lib/firmware; \
	fi
	@echo "Installed firmware"
else
	@echo "Not installing firmware because we are not using hotplug firmware"
endif

config:
	if [ -d $(INSTALL_PREFIX)/etc/rc.d/init.d ]; then \
		$(INSTALL) -D -m 755 zaptel.init $(INSTALL_PREFIX)/etc/rc.d/init.d/zaptel; \
		if [ -z "$(INSTALL_PREFIX)" ]; then \
			$(CHKCONFIG) --add zaptel; \
		fi; \
	elif [ -d $(INSTALL_PREFIX)/etc/init.d ]; then \
		$(INSTALL) -D -m 755 zaptel.init $(INSTALL_PREFIX)/etc/init.d/zaptel; \
		if [ -z "$(INSTALL_PREFIX)" ]; then \
			$(CHKCONFIG) --add zaptel; \
		fi; \
	fi 
	if [ -d $(INSTALL_PREFIX)/etc/default ] && [ ! -f $(INSTALL_PREFIX)/etc/default/zaptel ]; then \
			$(INSTALL) -D -m 644 zaptel.sysconfig $(INSTALL_PREFIX)/etc/default/zaptel; \
	fi
	if [ -d $(INSTALL_PREFIX)/etc/sysconfig ] && [ ! -f $(INSTALL_PREFIX)/etc/sysconfig/zaptel ]; then \
		$(INSTALL) -D -m 644 zaptel.sysconfig $(INSTALL_PREFIX)/etc/sysconfig/zaptel; \
	fi
	if [ -d $(INSTALL_PREFIX)/etc/sysconfig/network-scripts ]; then \
		$(INSTALL) -D -m 755 ifup-hdlc $(INSTALL_PREFIX)/etc/sysconfig/network-scripts/ifup-hdlc; \
	fi

update:
	@if [ -d .svn ]; then \
		echo "Updating from Subversion..." ; \
		svn update | tee update.out; \
		rm -f .version; \
		if [ `grep -c ^C update.out` -gt 0 ]; then \
			echo ; echo "The following files have conflicts:" ; \
			grep ^C update.out | cut -b4- ; \
		fi ; \
		rm -f update.out; \
	else \
		echo "Not under version control";  \
	fi

# make should *fail* and not silently succeed if a program did not build
install-programs: $(BINS) install-libs install-include
	$(INSTALL) -d $(BIN_DIR)
	$(INSTALL) $(BINS) $(BIN_DIR)

install-modules: install-$(BUILDVER)
install-linux24: $(MODULES_BUILD)
	$(INSTALL) -d $(MOD_DIR)
	$(INSTALL) -m 644 $(MODULES_BUILD) $(MOD_DIR)

install-linux26: $(MODULESKO)
	$(KMAKE_INST)

clean:
	-@$(MAKE) -C menuselect clean
	rm -f torisatool makefw tor2fw.h radfw.h
	rm -f $(BINS)
	rm -f *.o ztcfg tzdriver sethdlc sethdlc-new
	rm -f $(LTZ_SO) $(LTZ_A) *.lo
ifeq ($(BUILDVER),linux26)
	$(MAKE) -C $(KSRC) SUBDIRS=$(PWD) clean
else
	$(MAKE) -C wct4xxp clean
	$(MAKE) -C datamods clean
endif
	rm -f xpp/*.ko xpp/*.mod.c xpp/.*o.cmd
	rm -f xpp/*.o xpp/*.mod.o
	rm -rf .tmp_versions
	rm -f gendigits tones.h
	rm -f libtonezone*
	rm -f tor2ee
	rm -f fxotune
	rm -f core
	rm -f ztcfg-shared fxstest
	rm -rf misdn*
	rm -rf mISDNuser*

distclean: dist-clean

dist-clean: clean
	@$(MAKE) -C menuselect dist-clean
	rm -f makeopts menuselect.makeopts
	rm -f config.log config.status

config.status: configure
	@CFLAGS="" ./configure
	@echo "****"
	@echo "**** The configure script was just executed, so 'make' needs to be"
	@echo "**** restarted."
	@echo "****"
	@exit 1

menuselect.makeopts: menuselect/menuselect menuselect-tree
	@menuselect/menuselect --check-deps ${GLOBAL_MAKEOPTS} ${USER_MAKEOPTS} $@

menuselect: menuselect/menuselect menuselect-tree
	-@menuselect/menuselect $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) menuselect.makeopts && echo "menuselect changes saved!" || echo "menuselect changes NOT saved!"

menuselect/menuselect: menuselect/menuselect.c menuselect/menuselect_curses.c menuselect/menuselect_stub.c menuselect/menuselect.h menuselect/linkedlists.h config.status
	@CFLAGS="" $(MAKE) -C menuselect
