#    Copyright (c) 2010-2015 Nest, Inc.
#    All rights reserved.
#
#    This document is the property of Nest. It is considered
#    confidential and proprietary information.
#
#    This document may not be reproduced or transmitted in any form,
#    in whole or in part, without the express written permission of
#    Nest.
#
#    Description:
#      This file is a make file for the frequency analyzer.
#

include pre.mak

TpsDir                          = sw/tps
fftwResultsDir                  = $(TpsDir)/fftw
fftwIncludeDir                  = usr/include
fftwLibraryDir                  = usr/lib
fftwNames                       = fftw3
fftwIncludePath                 = $(call GenerateResultPaths,$(fftwResultsDir),$(fftwIncludeDir))
fftwLibraryPaths                = $(call GenerateResultPaths,$(fftwResultsDir),$(addprefix $(fftwLibraryDir)/,$(fftwNames)))
PROGRAMS			= freq_analyzer
freq_analyzer_SOURCES		= freq_analyzer.c
freq_analyzer_INCLUDES		= $(fftwIncludePath)
freq_analyzer_LDLIBS		= $(fftwLibraryPaths) m

include post.mak
