changeset 3160:4f573c0f5955

[MSVC] better integration between clgcc/clg++ and cmake
author Michael Goffioul <michael.goffioul@gmail.com>
date Sun, 21 Jul 2013 18:28:39 -0400
parents 75eaca7603d8
children bfca72734220
files dist-files.mk src/build-msvctools.mk src/build-msvctools/Makefile src/build-msvctools/Windows-clg++.cmake src/build-msvctools/Windows-clgcc.cmake.in
diffstat 5 files changed, 26 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/dist-files.mk	Sun Jul 21 18:28:36 2013 -0400
+++ b/dist-files.mk	Sun Jul 21 18:28:39 2013 -0400
@@ -538,7 +538,9 @@
   Makefile \
   ranlib-msvc \
   stdbool.h \
-  unistd.h
+  unistd.h \
+  Windows-clg++.cmake \
+  Windows-clgcc.cmake.in
 
 SRC_MSVCTOOLS_FILES := $(addprefix src/build-msvctools/, $(SRC_MSVCTOOLS_FILES_1))
 
--- a/src/build-msvctools.mk	Sun Jul 21 18:28:36 2013 -0400
+++ b/src/build-msvctools.mk	Sun Jul 21 18:28:39 2013 -0400
@@ -13,9 +13,12 @@
     echo 1
 endef
 
+$(PKG)_CMAKE_DESTDIR := $(BUILD_TOOLS_PREFIX)/share/cmake-$(call SHORT_PKG_VERSION,build-cmake)
+
 define $(PKG)_BUILD
     make -C '$(1)' -j '$(JOBS)' \
 	DESTDIR='$(HOST_PREFIX)' \
+	CMAKE_DESTDIR='$($(PKG)_CMAKE_DESTDIR)' \
 	GCCVERSION='$(build-gcc_VERSION)' \
 	INSTALL='$(INSTALL)' \
 	LIBRARY_PREFIX='$(LIBRARY_PREFIX)' \
--- a/src/build-msvctools/Makefile	Sun Jul 21 18:28:36 2013 -0400
+++ b/src/build-msvctools/Makefile	Sun Jul 21 18:28:39 2013 -0400
@@ -17,7 +17,8 @@
 	math/msvcmath.lib \
 	gfortran-msvc.exe \
 	gfortran-msvc.lib \
-	gfortran-msvc-static.lib
+	gfortran-msvc-static.lib \
+	Windows-clgcc.cmake
 
 MSVCSTDINT := $(shell echo '\#include <stdint.h>' > t.c; cl -nologo -showIncludes -c t.c | $(SED) -n -e 's/^Note: including file: \(.*stdint\.h\)$$/\1/p'; rm -f t.c t.obj)
 ifeq ($(MSVCSTDINT),)
@@ -157,6 +158,10 @@
 gfortran-msvc-static.lib: gfortran-msvc-build/.libs/libgfortran.a gfortran.lst libgfortran-msvcinit.o
 	lib -out:$@ libgfortran-msvcinit.o @gfortran.lst
 
+Windows-clgcc.cmake: Windows-clgcc.cmake.in
+	$(SED) -e 's/@@LIBRARY_PREFIX@@/$(LIBRARY_PREFIX)/g' \
+	       -e 's/@@LIBRARY_SUFFIX@@/$(LIBRARY_SUFFIX)/g' $< > $@
+
 .PHONY: install
 install: all
 	$(INSTALL) -d $(DESTDIR)/bin
@@ -184,3 +189,6 @@
 	$(INSTALL) math/msvcmath.lib $(DESTDIR)/lib
 	$(INSTALL) gfortran-msvc.lib $(DESTDIR)/lib
 	$(INSTALL) gfortran-msvc-static.lib $(DESTDIR)/lib
+	$(INSTALL) -d $(CMAKE_DESTDIR)/Modules/Platform
+	$(INSTALL) Windows-clg++.cmake $(CMAKE_DESTDIR)/Modules/Platform
+	$(INSTALL) Windows-clgcc.cmake $(CMAKE_DESTDIR)/Modules/Platform
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/build-msvctools/Windows-clg++.cmake	Sun Jul 21 18:28:39 2013 -0400
@@ -0,0 +1,1 @@
+INCLUDE(Platform/Windows-clgcc)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/build-msvctools/Windows-clgcc.cmake.in	Sun Jul 21 18:28:39 2013 -0400
@@ -0,0 +1,10 @@
+SET(MSVC 1)
+SET(CMAKE_LINK_LIBRARY_FLAG "-l")
+SET(CMAKE_LINK_LIBRARY_SUFFIX "")
+SET(CMAKE_SHARED_LIBRARY_PREFIX "@@LIBRARY_PREFIX@@")
+SET(CMAKE_SHARED_LIBRARY_SUFFIX "@@LIBRARY_SUFFIX@@.dll")
+
+SET(CMAKE_C_CREATE_SHARED_LIBRARY
+    "<CMAKE_C_COMPILER> <CMAKE_SHARED_LIBRARY_C_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS> -o <TARGET> -Wl,--out-implib,<TARGET_IMPLIB> <OBJECTS> <LINK_LIBRARIES>")
+SET(CMAKE_CXX_CREATE_SHARED_LIBRARY
+    "<CMAKE_CXX_COMPILER> <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> -o <TARGET> -Wl,--out-implib,<TARGET_IMPLIB> <OBJECTS> <LINK_LIBRARIES>")