diff --git a/extdep/CMakeLists.txt b/extdep/CMakeLists.txt index 53f3751ed..53c1ea3fe 100644 --- a/extdep/CMakeLists.txt +++ b/extdep/CMakeLists.txt @@ -7,14 +7,18 @@ string(TOLOWER ${CMAKE_SYSTEM_NAME} _system_name) set(ETH_DEPENDENCY_INSTALL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/install/${_system_name}") file(MAKE_DIRECTORY ${ETH_DEPENDENCY_INSTALL_DIR}/lib) file(MAKE_DIRECTORY ${ETH_DEPENDENCY_INSTALL_DIR}/include) +file(MAKE_DIRECTORY ${ETH_DEPENDENCY_INSTALL_DIR}/bin) -include(curl.cmake) -include(jsoncpp.cmake) -include(argtable2.cmake) -include(json-rpc-cpp.cmake) -include(cryptopp.cmake) -include(snappy.cmake) -include(leveldb.cmake) +include(icu.cmake) +include(jom.cmake) +include(qt.cmake) +#include(curl.cmake) +#include(jsoncpp.cmake) +#include(argtable2.cmake) +#include(json-rpc-cpp.cmake) +#include(cryptopp.cmake) +#include(snappy.cmake) +#include(leveldb.cmake) # will be re-eanbled later # include(miniupnpc.cmake) diff --git a/extdep/configure.bat b/extdep/configure.bat new file mode 100644 index 000000000..bd810938a --- /dev/null +++ b/extdep/configure.bat @@ -0,0 +1,111 @@ +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: +:: Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +:: Contact: http://www.qt-project.org/legal +:: +:: This file is part of the tools applications of the Qt Toolkit. +:: +:: $QT_BEGIN_LICENSE:LGPL$ +:: Commercial License Usage +:: Licensees holding valid commercial Qt licenses may use this file in +:: accordance with the commercial license agreement provided with the +:: Software or, alternatively, in accordance with the terms contained in +:: a written agreement between you and Digia. For licensing terms and +:: conditions see http://qt.digia.com/licensing. For further information +:: use the contact form at http://qt.digia.com/contact-us. +:: +:: GNU Lesser General Public License Usage +:: Alternatively, this file may be used under the terms of the GNU Lesser +:: General Public License version 2.1 as published by the Free Software +:: Foundation and appearing in the file LICENSE.LGPL included in the +:: packaging of this file. Please review the following information to +:: ensure the GNU Lesser General Public License version 2.1 requirements +:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +:: +:: In addition, as a special exception, Digia gives you certain additional +:: rights. These rights are described in the Digia Qt LGPL Exception +:: version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +:: +:: GNU General Public License Usage +:: Alternatively, this file may be used under the terms of the GNU +:: General Public License version 3.0 as published by the Free Software +:: Foundation and appearing in the file LICENSE.GPL included in the +:: packaging of this file. Please review the following information to +:: ensure the GNU General Public License version 3.0 requirements will be +:: met: http://www.gnu.org/copyleft/gpl.html. +:: +:: +:: $QT_END_LICENSE$ +:: +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +@echo off +set QTSRC=%~dp0 +set QTDIR=%CD% +::if not exist %QTSRC%\.gitignore goto sconf +echo Please wait while bootstrapping configure ... + +for %%C in (cl.exe icl.exe g++.exe perl.exe) do set %%C=%%~$PATH:C + +if "%perl.exe%" == "" ( + echo Perl not found in PATH. Aborting. >&2 + exit /b 1 +) +if not exist mkspecs ( + md mkspecs + if errorlevel 1 goto exit +) +perl %QTSRC%bin\syncqt.pl -minimal -module QtCore -outdir %QTDIR% %QTSRC% +if errorlevel 1 goto exit + +if not exist tools\configure ( + md tools\configure + if errorlevel 1 goto exit +) +cd tools\configure +if errorlevel 1 goto exit + +echo #### Generated by configure.bat - DO NOT EDIT! ####> Makefile +echo/>> Makefile +for /f "tokens=3 usebackq" %%V in (`findstr QT_VERSION_STR %QTSRC%\src\corelib\global\qglobal.h`) do @echo QTVERSION = %%~V>> Makefile +if not "%cl.exe%" == "" ( + echo CXX = cl>>Makefile + echo EXTRA_CXXFLAGS =>>Makefile + rem This must have a trailing space. + echo QTSRC = %QTSRC% >> Makefile + set tmpl=win32 + set make=nmake +) else if not "%icl.exe%" == "" ( + echo CXX = icl>>Makefile + echo EXTRA_CXXFLAGS = /Zc:forScope>>Makefile + rem This must have a trailing space. + echo QTSRC = %QTSRC% >> Makefile + set tmpl=win32 + set make=nmake +) else if not "%g++.exe%" == "" ( + echo CXX = g++>>Makefile + echo EXTRA_CXXFLAGS =>>Makefile + rem This must NOT have a trailing space. + echo QTSRC = %QTSRC:\=/%>> Makefile + set tmpl=mingw + set make=mingw32-make +) else ( + echo No suitable compiler found in PATH. Aborting. >&2 + cd ..\.. + exit /b 1 +) +echo/>> Makefile +type %QTSRC%tools\configure\Makefile.%tmpl% >> Makefile + +%make% +if errorlevel 1 (cd ..\.. & exit /b 1) + +cd ..\.. + +:conf +configure.exe -srcdir %QTSRC% %* +goto exit + +:sconf +%QTSRC%\configure.exe %* +:exit diff --git a/extdep/icu.cmake b/extdep/icu.cmake new file mode 100644 index 000000000..c05862b91 --- /dev/null +++ b/extdep/icu.cmake @@ -0,0 +1,18 @@ +if(APPLE) + +# patch for VS2013 and Windows Qt build +elseif(WIN32) +ExternalProject_Add(icu + GIT_REPOSITORY https://github.com/debris/icu-win32.git + GIT_TAG master + BINARY_DIR icu-prefix/src/icu + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND cmd /c cp lib/*.lib ${ETH_DEPENDENCY_INSTALL_DIR}/lib && cp -R include/unicode ${ETH_DEPENDENCY_INSTALL_DIR}/include + ) + +else() + +endif() + + diff --git a/extdep/jom.cmake b/extdep/jom.cmake new file mode 100644 index 000000000..0370eed8e --- /dev/null +++ b/extdep/jom.cmake @@ -0,0 +1,18 @@ +if(APPLE) + + +elseif(WIN32) +# nmake is not working for qt on windows, do not know why +ExternalProject_Add(jom + URL http://download.qt-project.org/official_releases/jom/jom.zip + BINARY_DIR jom-prefix/src/jom + CONFIGURE_COMMAND "" + BUILD_COMMAND echo %cd% + INSTALL_COMMAND cp jom.exe ${ETH_DEPENDENCY_INSTALL_DIR}/bin + ) + +else() + +endif() + + diff --git a/extdep/qt.cmake b/extdep/qt.cmake new file mode 100644 index 000000000..2f9216f74 --- /dev/null +++ b/extdep/qt.cmake @@ -0,0 +1,31 @@ +if(APPLE) + +elseif(WIN32) +ExternalProject_Add(qt + DEPENDS icu jom + URL http://download.qt-project.org/official_releases/qt/5.2/5.2.1/single/qt-everywhere-opensource-src-5.2.1.tar.gz + BINARY_DIR qt-prefix/src/qt + PATCH_COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/configure.bat qtbase + CONFIGURE_COMMAND configure -prefix ${ETH_DEPENDENCY_INSTALL_DIR} -opensource -confirm-license -release -opengl desktop -platform win32-msvc2013 -icu -I ${ETH_DEPENDENCY_INSTALL_DIR}/include -L ${ETH_DEPENDENCY_INSTALL_DIR}/lib -nomake tests -nomake examples + + BUILD_COMMAND cmd /c ${CMAKE_CURRENT_SOURCE_DIR}/tools.bat && jom + INSTALL_COMMAND cmd /c ${CMAKE_CURRENT_SOURCE_DIR}/tools.bat && jom install + ) + +ExternalProject_Add_Step(qt configure_paths + COMMAND set PATH=${ETH_DEPENDENCY_INSTALL_DIR}/bin;%cd%/gnuwin32/bin;%cd%/qtbase/bin;%PATH% + DEPENDEES patch + DEPENDERS configure + ) + +#ExternalProject_Add_Step(qt configure_visual +# COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/tools.bat +# DEPENDEES patch +# DEPENDERS configure +# ) + +else() + +endif() + + diff --git a/extdep/tools.bat b/extdep/tools.bat new file mode 100644 index 000000000..bd588c480 --- /dev/null +++ b/extdep/tools.bat @@ -0,0 +1,2 @@ +rem : import VC environment vars +call "%VS120COMNTOOLS%\..\..\VC\vcvarsall.bat" x86 \ No newline at end of file