# Centralized autotools file
# Create the Visual Studio 2012 from the
# Visual Studio 2010 project files

# Author: Fan, Chun-wei
# November 05, 2012

# MSVC_SLN: name of root project

VCXPROJ_FILES =

$(MSVC_SLN).sln: $(top_srcdir)/build/win32/vs10/$(MSVC_SLN).sln create_vcxproj copy_filters
	cat $(top_srcdir)/build/win32/vs10/$(MSVC_SLN).sln | sed 's/11\.00/12\.00/g' | sed 's/2010/2012/g' > $(top_builddir)/build/win32/vs11/$(MSVC_SLN).sln

$(MSVC_SLN).props: $(top_builddir)/build/win32/vs10/$(MSVC_SLN).props
	cat $(top_builddir)/build/win32/vs10/$(MSVC_SLN).props | sed 's/10/11/g' > $(top_builddir)/build/win32/vs11/$(MSVC_SLN).props

README.txt: $(top_srcdir)/build/win32/vs10/README.txt
	cat $(top_srcdir)/build/win32/vs10/README.txt | sed 's/vs10/vs11/g' | sed 's/VS10/VS11/g' > $(top_builddir)/build/win32/vs11/README.txt

create_vcxproj:
	for F in `(cd $(top_builddir)/build/win32/vs10 && ls *.vcxproj)`; do \
		case $$F in \
			*)	cat $(top_builddir)/build/win32/vs10/$$F | sed 's/v100/v110/g' > $(top_builddir)/build/win32/vs11/$$F \
			;; \
		esac; \
	done

copy_filters:
	cp  $(top_srcdir)/build/win32/vs10/*.vcxproj.filters $(top_builddir)/build/win32/vs11/


