diff Resources/ThirdParty/icu/CMakeLists.txt @ 3266:25df9eae8891

fixing Visual Studio 2015 64bit with ICU
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 20 Feb 2019 14:39:27 +0100
parents 768c219e7b11
children 905ee53c8274
line wrap: on
line diff
--- a/Resources/ThirdParty/icu/CMakeLists.txt	Wed Feb 20 14:17:52 2019 +0100
+++ b/Resources/ThirdParty/icu/CMakeLists.txt	Wed Feb 20 14:39:27 2019 +0100
@@ -58,12 +58,6 @@
   DEPENDS  IcuCodeGeneration
   )
 
-add_custom_command(
-  OUTPUT   ${CMAKE_BINARY_DIR}/${LIBICU_DATA_VERSION}_dat.S
-  COMMAND  IcuCodeGeneration ${CMAKE_BINARY_DIR}/${LIBICU_DATA_VERSION}.dat --assembly masm
-  DEPENDS  IcuCodeGeneration
-  )
-
 # "--no-name" is necessary for 7-zip on Windows to behave similarly to gunzip
 add_custom_command(
   OUTPUT   ${CMAKE_BINARY_DIR}/${LIBICU_DATA}.gz
@@ -71,21 +65,51 @@
   DEPENDS  ${LIBICU_DATA}
   )
 
-add_custom_command(
-  OUTPUT   ${CMAKE_BINARY_DIR}/${LIBICU_MASM}.gz
-  COMMAND  gzip ${CMAKE_BINARY_DIR}/${LIBICU_DATA_VERSION}_dat.S --no-name -c > ${CMAKE_BINARY_DIR}/${LIBICU_MASM}.gz
-  DEPENDS  ${CMAKE_BINARY_DIR}/${LIBICU_DATA_VERSION}_dat.S
-  )
+
+if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+  # Generate a precompiled version for Visual Studio 64bit
+  set(TMP_ASSEMBLER      ${CMAKE_BINARY_DIR}/${LIBICU_DATA_VERSION}_dat.S)
+  set(TMP_OBJECT         ${CMAKE_BINARY_DIR}/${LIBICU_DATA_VERSION}_dat-x86_64-mingw32.o)
+  set(TMP_LIBRARY        ${CMAKE_BINARY_DIR}/${LIBICU_DATA_VERSION}_dat-x86_64-mingw32.a)
+  set(PRECOMPILED_WIN64  ${CMAKE_BINARY_DIR}/${LIBICU_DATA_VERSION}_dat-x86_64-mingw32.a.gz)
+  
+  add_custom_command(
+    OUTPUT   ${TMP_ASSEMBLER}
+    COMMAND  IcuCodeGeneration ${CMAKE_BINARY_DIR}/${LIBICU_DATA_VERSION}.dat --assembly gcc-mingw64
+    DEPENDS  IcuCodeGeneration
+    )
+
+  add_custom_command(
+    OUTPUT   ${TMP_OBJECT}
+    COMMAND  x86_64-w64-mingw32-gcc -c ${TMP_ASSEMBLER} -o ${TMP_OBJECT}
+    DEPENDS  ${TMP_ASSEMBLER}
+    )
+
+  add_custom_command(
+    OUTPUT   ${TMP_LIBRARY}
+    COMMAND  x86_64-w64-mingw32-ar qc ${TMP_LIBRARY} ${TMP_OBJECT}
+    COMMAND  x86_64-w64-mingw32-ranlib ${TMP_LIBRARY}
+    DEPENDS  ${TMP_OBJECT}
+    )
+
+  # "--no-name" is necessary for 7-zip on Windows to behave similarly to gunzip
+  add_custom_command(
+    OUTPUT   ${PRECOMPILED_WIN64}
+    COMMAND  gzip ${TMP_LIBRARY} --no-name -c > ${PRECOMPILED_WIN64}
+    DEPENDS  ${TMP_LIBRARY}
+    )
+endif()
+
 
 add_custom_target(Final ALL DEPENDS
   ${CMAKE_BINARY_DIR}/${LIBICU_DATA}.gz
-  ${CMAKE_BINARY_DIR}/${LIBICU_MASM}.gz
+  ${PRECOMPILED_WIN64}
   )
 
 install(
   FILES
   ${CMAKE_BINARY_DIR}/${LIBICU_DATA}.gz
-  ${CMAKE_BINARY_DIR}/${LIBICU_MASM}.gz
+  ${PRECOMPILED_WIN64}
   DESTINATION ${CMAKE_SOURCE_DIR}/../../../ThirdPartyDownloads
   )