# Makefile for msrtool
#
# This file is part of msrtool.
#
# Copyright (c) 2008 Peter Stuge <peter@stuge.se>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
#

PROGRAM = msrtool

CC      = @CC@
INSTALL = @INSTALL@
PREFIX  = @PREFIX@
CFLAGS  = @CFLAGS@ -fno-pic
LDFLAGS = @LDFLAGS@

TARGETS = geodegx2.o geodelx.o cs5536.o k8.o intel_pentium3_early.o intel_pentium3.o intel_pentium4_early.o intel_pentium4_later.o intel_core1.o intel_core2_early.o intel_core2_later.o intel_nehalem.o
SYSTEMS = linux.o darwin.o freebsd.o
OBJS    = $(PROGRAM).o msrutils.o sys.o $(SYSTEMS) $(TARGETS)

all: $(PROGRAM)

$(PROGRAM): $(OBJS) Makefile.deps
	$(CC) -o $@ $(OBJS) $(LDFLAGS)

$(PROGRAM).o: $(PROGRAM).c
	$(CC) $(CFLAGS) -DVERSION='"@VERSION@"' -c $< -o $@

install: $(PROGRAM)
	mkdir -p $(DESTDIR)$(PREFIX)/sbin
	$(INSTALL) $(PROGRAM) $(DESTDIR)$(PREFIX)/sbin

distprep: distclean Makefile.deps

clean:
	rm -f $(PROGRAM) $(OBJS)

distclean: clean
	rm -f Makefile

mrproper: distclean
	rm -f Makefile.deps

dep:
	rm -f Makefile.deps
	$(MAKE) Makefile.deps

Makefile.deps: $(patsubst %.o,%.c,$(OBJS))
	$(CC) -MM $^ > $@

.PHONY: all distprep clean distclean mrproper dep

-include Makefile.deps
