mirror of
https://github.com/wownero/cyberwow.git
synced 2026-10-23 02:08:48 +02:00
use latest cmake, ndk and lolnero
This commit is contained in:
@@ -92,7 +92,6 @@ sodium: toolchain
|
||||
|
||||
toolchain-lol:
|
||||
$(script)/toolchain-lol/import.sh
|
||||
$(script)/toolchain-lol/patch.sh
|
||||
|
||||
lolnero: openssl boost sodium toolchain-lol
|
||||
$(script)/lolnero/fetch.sh
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
{ lib, stdenv, fetchurl, fetchpatch, curl, expat, zlib, bzip2
|
||||
, useNcurses ? false, ncurses, useQt4 ? false, qt4, ps
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
assert stdenv ? cc;
|
||||
assert stdenv.cc ? libc;
|
||||
|
||||
let
|
||||
os = lib.optionalString;
|
||||
majorVersion = "2.8";
|
||||
minorVersion = "12.2";
|
||||
version = "${majorVersion}.${minorVersion}";
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "cmake-${os useNcurses "cursesUI-"}${os useQt4 "qt4UI-"}${version}";
|
||||
|
||||
inherit majorVersion;
|
||||
|
||||
src = fetchurl {
|
||||
url = "${meta.homepage}files/v${majorVersion}/cmake-${version}.tar.gz";
|
||||
sha256 = "0phf295a9cby0v7zqdswr238v5aiy3rb2fs6dz39zjxbmzlp8rcc";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
patches =
|
||||
[(fetchpatch { # see https://www.cmake.org/Bug/view.php?id=13959
|
||||
name = "FindFreetype-2.5.patch";
|
||||
url = "https://public.kitware.com/Bug/file/4660/0001-Support-finding-freetype2-using-pkg-config.patch";
|
||||
sha256 = "136z63ff83hnwd247cq4m8m8164pklzyl5i2csf5h6wd8p01pdkj";
|
||||
})] ++
|
||||
# Don't search in non-Nix locations such as /usr, but do search in our libc.
|
||||
[ ./search-path-2.8.patch ] ++
|
||||
optional (stdenv.hostPlatform != stdenv.buildPlatform) (fetchurl {
|
||||
name = "fix-darwin-cross-compile.patch";
|
||||
url = "https://public.kitware.com/Bug/file_download.php?"
|
||||
+ "file_id=4981&type=bug";
|
||||
sha256 = "16acmdr27adma7gs9rs0dxdiqppm15vl3vv3agy7y8s94wyh4ybv";
|
||||
});
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace Utilities/cmlibarchive/CMakeLists.txt \
|
||||
--replace '"-framework CoreServices"' '""'
|
||||
'';
|
||||
|
||||
buildInputs = [ setupHook curl expat zlib bzip2 ]
|
||||
++ optional useNcurses ncurses
|
||||
++ optional useQt4 qt4;
|
||||
|
||||
propagatedBuildInputs = [ ps ];
|
||||
|
||||
CMAKE_PREFIX_PATH = concatStringsSep ":"
|
||||
(concatMap (p: [ (p.dev or p) (p.out or p) ]) buildInputs);
|
||||
|
||||
configureFlags = [
|
||||
"--docdir=/share/doc/${name}"
|
||||
"--mandir=/share/man"
|
||||
"--system-libs"
|
||||
"--no-system-libarchive"
|
||||
] ++ lib.optional useQt4 "--qt-gui";
|
||||
|
||||
setupHook = ./setup-hook.sh;
|
||||
|
||||
dontUseCmakeConfigure = true;
|
||||
|
||||
preConfigure = with stdenv; ''
|
||||
fixCmakeFiles .
|
||||
substituteInPlace Modules/Platform/UnixPaths.cmake \
|
||||
--subst-var-by libc_bin ${getBin cc.libc} \
|
||||
--subst-var-by libc_dev ${getDev cc.libc} \
|
||||
--subst-var-by libc_lib ${getLib cc.libc}
|
||||
configureFlags="--parallel=''${NIX_BUILD_CORES:-1} $configureFlags"
|
||||
'';
|
||||
|
||||
hardeningDisable = [ "format" ];
|
||||
|
||||
meta = {
|
||||
homepage = "https://cmake.org";
|
||||
description = "Cross-Platform Makefile Generator";
|
||||
platforms = if useQt4 then qt4.meta.platforms else lib.platforms.unix;
|
||||
maintainers = with lib.maintainers; [ xfix ];
|
||||
license = lib.licenses.bsd3;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,274 @@
|
||||
--- cmake-3.2.2/Source/cmFileCommand.cxx 2015-04-13 19:09:00.000000000 +0200
|
||||
+++ cmake-3.2.2/Source/ccmFileCommand.cxx 2015-06-10 11:02:27.345598700 +0200
|
||||
@@ -1179,7 +1179,7 @@
|
||||
MatchProperties CollectMatchProperties(const char* file)
|
||||
{
|
||||
// Match rules are case-insensitive on some platforms.
|
||||
-#if defined(_WIN32) || defined(__APPLE__) || defined(__CYGWIN__)
|
||||
+#if defined(_WIN32) || defined(__APPLE__)
|
||||
std::string lower = cmSystemTools::LowerCase(file);
|
||||
const char* file_to_match = lower.c_str();
|
||||
#else
|
||||
--- cmake-3.2.2/Source/cmInstallCommand.cxx 2015-04-13 19:09:00.000000000 +0200
|
||||
+++ cmake-3.2.2/Source/cmInstallCommand.cxx 2015-06-10 11:04:19.257935200 +0200
|
||||
@@ -1138,7 +1138,7 @@
|
||||
{
|
||||
literal_args += " REGEX \"";
|
||||
// Match rules are case-insensitive on some platforms.
|
||||
-#if defined(_WIN32) || defined(__APPLE__) || defined(__CYGWIN__)
|
||||
+#if defined(_WIN32) || defined(__APPLE__)
|
||||
std::string regex = cmSystemTools::LowerCase(args[i]);
|
||||
#else
|
||||
std::string regex = args[i];
|
||||
--- cmake-3.2.2/Source/kwsys/Glob.cxx 2015-04-13 19:09:00.000000000 +0200
|
||||
+++ cmake-3.2.2/Source/kwsys/Glob.cxx 2015-06-10 11:05:51.602674000 +0200
|
||||
@@ -37,7 +37,7 @@
|
||||
#include <string.h>
|
||||
namespace KWSYS_NAMESPACE
|
||||
{
|
||||
-#if defined(_WIN32) || defined(__APPLE__) || defined(__CYGWIN__)
|
||||
+#if defined(_WIN32) || defined(__APPLE__)
|
||||
// On Windows and apple, no difference between lower and upper case
|
||||
# define KWSYS_GLOB_CASE_INDEPENDENT
|
||||
#endif
|
||||
--- cmake-3.2.2/Source/kwsys/SystemInformation.cxx 2015-04-13 19:09:00.000000000 +0200
|
||||
+++ cmake-3.2.2/Source/kwsys/SystemInformation.cxx 2015-06-10 11:13:00.308303500 +0200
|
||||
@@ -911,7 +911,7 @@
|
||||
// Hide implementation details in an anonymous namespace.
|
||||
namespace {
|
||||
// *****************************************************************************
|
||||
-#if defined(__linux) || defined(__APPLE__)
|
||||
+#if defined(__linux) || defined(__APPLE__) || defined(__CYGWIN__)
|
||||
int LoadLines(
|
||||
FILE *file,
|
||||
kwsys_stl::vector<kwsys_stl::string> &lines)
|
||||
@@ -947,7 +947,7 @@
|
||||
return nRead;
|
||||
}
|
||||
|
||||
-# if defined(__linux)
|
||||
+# if defined(__linux) || defined(__CYGWIN__)
|
||||
// *****************************************************************************
|
||||
int LoadLines(
|
||||
const char *fileName,
|
||||
@@ -986,7 +986,7 @@
|
||||
}
|
||||
#endif
|
||||
|
||||
-#if defined(__linux)
|
||||
+#if defined(__linux) || defined(__CYGWIN__)
|
||||
// ****************************************************************************
|
||||
template<typename T>
|
||||
int GetFieldsFromFile(
|
||||
@@ -3132,7 +3132,6 @@
|
||||
pos = buffer.find("processor\t",pos+1);
|
||||
}
|
||||
|
||||
-#ifdef __linux
|
||||
// Find the largest physical id.
|
||||
int maxId = -1;
|
||||
kwsys_stl::string idc =
|
||||
@@ -3165,14 +3164,6 @@
|
||||
atoi(this->ExtractValueFromCpuInfoFile(buffer,"ncpus active").c_str());
|
||||
}
|
||||
|
||||
-#else // __CYGWIN__
|
||||
- // does not have "physical id" entries, neither "cpu cores"
|
||||
- // this has to be fixed for hyper-threading.
|
||||
- kwsys_stl::string cpucount =
|
||||
- this->ExtractValueFromCpuInfoFile(buffer,"cpu count");
|
||||
- this->NumberOfPhysicalCPU=
|
||||
- this->NumberOfLogicalCPU = atoi(cpucount.c_str());
|
||||
-#endif
|
||||
// gotta have one, and if this is 0 then we get a / by 0n
|
||||
// better to have a bad answer than a crash
|
||||
if(this->NumberOfPhysicalCPU <= 0)
|
||||
@@ -3370,7 +3361,7 @@
|
||||
GlobalMemoryStatusEx(&statex);
|
||||
return statex.ullTotalPhys/1024;
|
||||
# endif
|
||||
-#elif defined(__linux)
|
||||
+#elif defined(__linux) || defined(__CYGWIN__)
|
||||
SystemInformation::LongLong memTotal=0;
|
||||
int ierr=GetFieldFromFile("/proc/meminfo","MemTotal:",memTotal);
|
||||
if (ierr)
|
||||
@@ -3501,7 +3492,7 @@
|
||||
GlobalMemoryStatusEx(&statex);
|
||||
return (statex.ullTotalPhys - statex.ullAvailPhys)/1024;
|
||||
# endif
|
||||
-#elif defined(__linux)
|
||||
+#elif defined(__linux) || defined(__CYGWIN__)
|
||||
const char *names[3]={"MemTotal:","MemFree:",NULL};
|
||||
SystemInformation::LongLong values[2]={SystemInformation::LongLong(0)};
|
||||
int ierr=GetFieldsFromFile("/proc/meminfo",names,values);
|
||||
@@ -3560,7 +3551,7 @@
|
||||
return -2;
|
||||
}
|
||||
return pmc.WorkingSetSize/1024;
|
||||
-#elif defined(__linux)
|
||||
+#elif defined(__linux) || defined(__CYGWIN__)
|
||||
SystemInformation::LongLong memUsed=0;
|
||||
int ierr=GetFieldFromFile("/proc/self/status","VmRSS:",memUsed);
|
||||
if (ierr)
|
||||
@@ -3612,7 +3603,7 @@
|
||||
{
|
||||
#if defined(_WIN32)
|
||||
return GetCurrentProcessId();
|
||||
-#elif defined(__linux) || defined(__APPLE__)
|
||||
+#elif defined(__linux) || defined(__APPLE__) || defined(__CYGWIN__)
|
||||
return getpid();
|
||||
#else
|
||||
return -1;
|
||||
--- cmake-3.2.2/Source/kwsys/SystemTools.cxx 2015-04-13 19:09:00.000000000 +0200
|
||||
+++ cmake-3.2.2/Source/kwsys/SystemTools.cxx 2015-06-10 11:21:58.980443200 +0200
|
||||
@@ -93,19 +93,12 @@
|
||||
# if defined(_MSC_VER) && _MSC_VER >= 1800
|
||||
# define KWSYS_WINDOWS_DEPRECATED_GetVersionEx
|
||||
# endif
|
||||
-#elif defined (__CYGWIN__)
|
||||
-# include <windows.h>
|
||||
-# undef _WIN32
|
||||
#endif
|
||||
|
||||
#if !KWSYS_CXX_HAS_ENVIRON_IN_STDLIB_H
|
||||
extern char **environ;
|
||||
#endif
|
||||
|
||||
-#ifdef __CYGWIN__
|
||||
-# include <sys/cygwin.h>
|
||||
-#endif
|
||||
-
|
||||
// getpwnam doesn't exist on Windows and Cray Xt3/Catamount
|
||||
// same for TIOCGWINSZ
|
||||
#if defined(_WIN32) || defined (__LIBCATAMOUNT__)
|
||||
@@ -1148,15 +1141,7 @@
|
||||
{
|
||||
return false;
|
||||
}
|
||||
-#if defined(__CYGWIN__)
|
||||
- // Convert filename to native windows path if possible.
|
||||
- char winpath[MAX_PATH];
|
||||
- if(SystemTools::PathCygwinToWin32(filename.c_str(), winpath))
|
||||
- {
|
||||
- return (GetFileAttributesA(winpath) != INVALID_FILE_ATTRIBUTES);
|
||||
- }
|
||||
- return access(filename.c_str(), R_OK) == 0;
|
||||
-#elif defined(_WIN32)
|
||||
+#if defined(_WIN32)
|
||||
return (GetFileAttributesW(
|
||||
SystemTools::ConvertToWindowsExtendedPath(filename).c_str())
|
||||
!= INVALID_FILE_ATTRIBUTES);
|
||||
@@ -1190,28 +1175,6 @@
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
-#ifdef __CYGWIN__
|
||||
-bool SystemTools::PathCygwinToWin32(const char *path, char *win32_path)
|
||||
-{
|
||||
- SystemToolsTranslationMap::iterator i =
|
||||
- SystemTools::Cyg2Win32Map->find(path);
|
||||
-
|
||||
- if (i != SystemTools::Cyg2Win32Map->end())
|
||||
- {
|
||||
- strncpy(win32_path, i->second.c_str(), MAX_PATH);
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- if(cygwin_conv_path(CCP_POSIX_TO_WIN_A, path, win32_path, MAX_PATH) != 0)
|
||||
- {
|
||||
- win32_path[0] = 0;
|
||||
- }
|
||||
- SystemToolsTranslationMap::value_type entry(path, win32_path);
|
||||
- SystemTools::Cyg2Win32Map->insert(entry);
|
||||
- }
|
||||
- return win32_path[0] != 0;
|
||||
-}
|
||||
-#endif
|
||||
|
||||
bool SystemTools::Touch(const kwsys_stl::string& filename, bool create)
|
||||
{
|
||||
@@ -4307,7 +4270,7 @@
|
||||
|
||||
bool SystemTools::FileIsFullPath(const char* in_name, size_t len)
|
||||
{
|
||||
-#if defined(_WIN32) || defined(__CYGWIN__)
|
||||
+#if defined(_WIN32)
|
||||
// On Windows, the name must be at least two characters long.
|
||||
if(len < 2)
|
||||
{
|
||||
@@ -5078,9 +5041,6 @@
|
||||
static unsigned int SystemToolsManagerCount;
|
||||
SystemToolsTranslationMap *SystemTools::TranslationMap;
|
||||
SystemToolsTranslationMap *SystemTools::LongPathMap;
|
||||
-#ifdef __CYGWIN__
|
||||
-SystemToolsTranslationMap *SystemTools::Cyg2Win32Map;
|
||||
-#endif
|
||||
|
||||
// SystemToolsManager manages the SystemTools singleton.
|
||||
// SystemToolsManager should be included in any translation unit
|
||||
@@ -5126,9 +5086,6 @@
|
||||
// Allocate the translation map first.
|
||||
SystemTools::TranslationMap = new SystemToolsTranslationMap;
|
||||
SystemTools::LongPathMap = new SystemToolsTranslationMap;
|
||||
-#ifdef __CYGWIN__
|
||||
- SystemTools::Cyg2Win32Map = new SystemToolsTranslationMap;
|
||||
-#endif
|
||||
|
||||
// Add some special translation paths for unix. These are not added
|
||||
// for windows because drive letters need to be maintained. Also,
|
||||
@@ -5183,9 +5140,6 @@
|
||||
{
|
||||
delete SystemTools::TranslationMap;
|
||||
delete SystemTools::LongPathMap;
|
||||
-#ifdef __CYGWIN__
|
||||
- delete SystemTools::Cyg2Win32Map;
|
||||
-#endif
|
||||
}
|
||||
|
||||
|
||||
--- cmake-3.2.2/Source/kwsys/SystemTools.hxx.in 2015-04-13 19:09:00.000000000 +0200
|
||||
+++ cmake-3.2.2/Source/kwsys/SystemTools.hxx.in 2015-06-10 11:24:24.271286600 +0200
|
||||
@@ -298,15 +298,6 @@
|
||||
static bool FileExists(const kwsys_stl::string& filename);
|
||||
|
||||
/**
|
||||
- * Converts Cygwin path to Win32 path. Uses dictionary container for
|
||||
- * caching and calls to cygwin_conv_to_win32_path from Cygwin dll
|
||||
- * for actual translation. Returns true on success, else false.
|
||||
- */
|
||||
-#ifdef __CYGWIN__
|
||||
- static bool PathCygwinToWin32(const char *path, char *win32_path);
|
||||
-#endif
|
||||
-
|
||||
- /**
|
||||
* Return file length
|
||||
*/
|
||||
static unsigned long FileLength(const kwsys_stl::string& filename);
|
||||
@@ -942,9 +933,6 @@
|
||||
*/
|
||||
static SystemToolsTranslationMap *TranslationMap;
|
||||
static SystemToolsTranslationMap *LongPathMap;
|
||||
-#ifdef __CYGWIN__
|
||||
- static SystemToolsTranslationMap *Cyg2Win32Map;
|
||||
-#endif
|
||||
friend class SystemToolsManager;
|
||||
};
|
||||
|
||||
--- cmake-3.2.2/Modules/FindCurses.cmake 2015-04-13 19:09:00.000000000 +0200
|
||||
+++ cmake-3.2.2/Modules/FindCurses.cmake 2015-06-10 12:10:19.682030300 +0200
|
||||
@@ -60,15 +60,6 @@
|
||||
if(CURSES_NCURSES_LIBRARY AND ((NOT CURSES_CURSES_LIBRARY) OR CURSES_NEED_NCURSES))
|
||||
set(CURSES_USE_NCURSES TRUE)
|
||||
endif()
|
||||
-# http://cygwin.com/ml/cygwin-announce/2010-01/msg00002.html
|
||||
-# cygwin ncurses stopped providing curses.h symlinks see above
|
||||
-# message. Cygwin is an ncurses package, so force ncurses on
|
||||
-# cygwin if the curses.h is missing
|
||||
-if(CYGWIN)
|
||||
- if(NOT EXISTS /usr/include/curses.h)
|
||||
- set(CURSES_USE_NCURSES TRUE)
|
||||
- endif()
|
||||
-endif()
|
||||
|
||||
|
||||
# Not sure the logic is correct here.
|
||||
@@ -0,0 +1,45 @@
|
||||
diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt
|
||||
index 1b6bb00d4c..487114daa8 100644
|
||||
--- a/Source/CMakeLists.txt
|
||||
+++ b/Source/CMakeLists.txt
|
||||
@@ -893,7 +893,6 @@ endif()
|
||||
# On Apple we need CoreFoundation and CoreServices
|
||||
if(APPLE)
|
||||
target_link_libraries(CMakeLib "-framework CoreFoundation")
|
||||
- target_link_libraries(CMakeLib "-framework CoreServices")
|
||||
endif()
|
||||
|
||||
if(WIN32 AND NOT UNIX)
|
||||
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx
|
||||
index a5ce5d18f4..3d6838ce82 100644
|
||||
--- a/Source/cmGlobalXCodeGenerator.cxx
|
||||
+++ b/Source/cmGlobalXCodeGenerator.cxx
|
||||
@@ -43,11 +43,10 @@
|
||||
|
||||
struct cmLinkImplementation;
|
||||
|
||||
#if !defined(CMAKE_BOOTSTRAP) && defined(__APPLE__)
|
||||
-# define HAVE_APPLICATION_SERVICES
|
||||
-# include <ApplicationServices/ApplicationServices.h>
|
||||
+# include <CoreFoundation/CoreFoundation.h>
|
||||
#endif
|
||||
|
||||
#if !defined(CMAKE_BOOTSTRAP)
|
||||
# include "cmXMLParser.h"
|
||||
|
||||
diff --git a/Utilities/cmlibarchive/CMakeLists.txt b/Utilities/cmlibarchive/CMakeLists.txt
|
||||
index bfcaf30bb7..1da540aee5 100644
|
||||
--- a/Utilities/cmlibarchive/CMakeLists.txt
|
||||
+++ b/Utilities/cmlibarchive/CMakeLists.txt
|
||||
@@ -2007,11 +2007,6 @@ IF(ENABLE_TEST)
|
||||
ENDIF(ENABLE_TEST)
|
||||
ENDIF()
|
||||
|
||||
-# We need CoreServices on Mac OS.
|
||||
-IF(APPLE)
|
||||
- LIST(APPEND ADDITIONAL_LIBS "-framework CoreServices")
|
||||
-ENDIF(APPLE)
|
||||
-
|
||||
add_subdirectory(libarchive)
|
||||
IF(0) # CMake does not build libarchive's command-line tools.
|
||||
add_subdirectory(cat)
|
||||
@@ -0,0 +1,132 @@
|
||||
|
||||
{ stdenv, lib, fetchurl, pkg-config
|
||||
, bzip2, curl, expat, libarchive, xz, zlib, libuv, rhash
|
||||
, buildPackages
|
||||
# darwin attributes
|
||||
, ps
|
||||
, isBootstrap ? false
|
||||
, useSharedLibraries ? (!isBootstrap && !stdenv.isCygwin)
|
||||
, useOpenSSL ? !isBootstrap, openssl
|
||||
, useNcurses ? false, ncurses
|
||||
, useQt4 ? false, qt4
|
||||
, withQt5 ? false, qtbase
|
||||
, fetchFromGitHub
|
||||
}:
|
||||
|
||||
assert withQt5 -> useQt4 == false;
|
||||
assert useQt4 -> withQt5 == false;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "cmake"
|
||||
+ lib.optionalString isBootstrap "-boot"
|
||||
+ lib.optionalString useNcurses "-cursesUI"
|
||||
+ lib.optionalString withQt5 "-qt5UI"
|
||||
+ lib.optionalString useQt4 "-qt4UI";
|
||||
version = "3.20.0-rc3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
# https://github.com/Kitware/CMake/releases/download/v3.20.0-rc3/cmake-3.20.0-rc3.tar.gz
|
||||
owner = "Kitware";
|
||||
repo = "CMake";
|
||||
rev = "v${version}";
|
||||
sha256 = {
|
||||
"3.20.0-rc3" = "1za6kpi0bn5cfzs2s41snmms12mw3963mndwph17j3ka1cybhwd4";
|
||||
}.${version};
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Don't search in non-Nix locations such as /usr, but do search in our libc.
|
||||
./search-path.patch
|
||||
];
|
||||
|
||||
outputs = [ "out" ];
|
||||
setOutputFlags = false;
|
||||
|
||||
setupHook = ./setup-hook.sh;
|
||||
|
||||
depsBuildBuild = [ buildPackages.stdenv.cc ];
|
||||
|
||||
nativeBuildInputs = [ setupHook pkg-config ];
|
||||
|
||||
buildInputs = []
|
||||
++ lib.optionals useSharedLibraries [ bzip2 curl expat libarchive xz zlib libuv rhash ]
|
||||
++ lib.optional useOpenSSL openssl
|
||||
++ lib.optional useNcurses ncurses
|
||||
++ lib.optional useQt4 qt4
|
||||
++ lib.optional withQt5 qtbase;
|
||||
|
||||
propagatedBuildInputs = lib.optional stdenv.isDarwin ps;
|
||||
|
||||
preConfigure = ''
|
||||
fixCmakeFiles .
|
||||
substituteInPlace Modules/Platform/UnixPaths.cmake \
|
||||
--subst-var-by libc_bin ${lib.getBin stdenv.cc.libc} \
|
||||
--subst-var-by libc_dev ${lib.getDev stdenv.cc.libc} \
|
||||
--subst-var-by libc_lib ${lib.getLib stdenv.cc.libc}
|
||||
substituteInPlace Modules/FindCxxTest.cmake \
|
||||
--replace "$""{PYTHON_EXECUTABLE}" ${stdenv.shell}
|
||||
''
|
||||
# CC_FOR_BUILD and CXX_FOR_BUILD are used to bootstrap cmake
|
||||
+ ''
|
||||
configureFlags="--parallel=''${NIX_BUILD_CORES:-1} CC=$CC_FOR_BUILD CXX=$CXX_FOR_BUILD $configureFlags"
|
||||
'';
|
||||
|
||||
configureFlags = [
|
||||
"--docdir=share/doc/${pname}${version}"
|
||||
] ++ (if useSharedLibraries then [ "--no-system-jsoncpp" "--system-libs" ] else [ "--no-system-libs" ]) # FIXME: cleanup
|
||||
++ lib.optional (useQt4 || withQt5) "--qt-gui"
|
||||
# Workaround https://gitlab.kitware.com/cmake/cmake/-/issues/20568
|
||||
++ lib.optionals stdenv.hostPlatform.is32bit [
|
||||
"CFLAGS=-D_FILE_OFFSET_BITS=64"
|
||||
"CXXFLAGS=-D_FILE_OFFSET_BITS=64"
|
||||
]
|
||||
++ [
|
||||
"--"
|
||||
# We should set the proper `CMAKE_SYSTEM_NAME`.
|
||||
# http://www.cmake.org/Wiki/CMake_Cross_Compiling
|
||||
#
|
||||
# Unfortunately cmake seems to expect absolute paths for ar, ranlib, and
|
||||
# strip. Otherwise they are taken to be relative to the source root of the
|
||||
# package being built.
|
||||
"-DCMAKE_CXX_COMPILER=${stdenv.cc.targetPrefix}c++"
|
||||
"-DCMAKE_C_COMPILER=${stdenv.cc.targetPrefix}cc"
|
||||
"-DCMAKE_AR=${lib.getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}ar"
|
||||
"-DCMAKE_RANLIB=${lib.getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}ranlib"
|
||||
"-DCMAKE_STRIP=${lib.getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}strip"
|
||||
|
||||
"-DCMAKE_USE_OPENSSL=${if useOpenSSL then "ON" else "OFF"}"
|
||||
# Avoid depending on frameworks.
|
||||
"-DBUILD_CursesDialog=${if useNcurses then "ON" else "OFF"}"
|
||||
];
|
||||
|
||||
# make install attempts to use the just-built cmake
|
||||
preInstall = lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) ''
|
||||
sed -i 's|bin/cmake|${buildPackages.cmakeMinimal}/bin/cmake|g' Makefile
|
||||
'';
|
||||
|
||||
dontUseCmakeConfigure = true;
|
||||
enableParallelBuilding = true;
|
||||
|
||||
# This isn't an autoconf configure script; triples are passed via
|
||||
# CMAKE_SYSTEM_NAME, etc.
|
||||
configurePlatforms = [ ];
|
||||
|
||||
doCheck = false; # fails
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://cmake.org/";
|
||||
changelog = "https://cmake.org/cmake/help/v${lib.versions.majorMinor version}/"
|
||||
+ "release/${lib.versions.majorMinor version}.html";
|
||||
description = "Cross-Platform Makefile Generator";
|
||||
longDescription = ''
|
||||
CMake is an open-source, cross-platform family of tools designed to
|
||||
build, test and package software. CMake is used to control the software
|
||||
compilation process using simple platform and compiler independent
|
||||
configuration files, and generate native makefiles and workspaces that
|
||||
can be used in the compiler environment of your choice.
|
||||
'';
|
||||
platforms = if useQt4 then qt4.meta.platforms else platforms.all;
|
||||
maintainers = with maintainers; [ ttuegel lnl7 ];
|
||||
license = licenses.bsd3;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
diff --git a/Utilities/cmlibuv/CMakeLists.txt b/Utilities/cmlibuv/CMakeLists.txt
|
||||
index 7625cf65d9..167903e309 100644
|
||||
--- a/Utilities/cmlibuv/CMakeLists.txt
|
||||
+++ b/Utilities/cmlibuv/CMakeLists.txt
|
||||
@@ -193,6 +193,22 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||
src/unix/kqueue.c
|
||||
src/unix/proctitle.c
|
||||
)
|
||||
+
|
||||
+ include(CheckIncludeFile)
|
||||
+
|
||||
+ check_include_file("ApplicationServices/ApplicationServices.h" HAVE_ApplicationServices)
|
||||
+ if (HAVE_ApplicationServices)
|
||||
+ list(APPEND uv_defines
|
||||
+ HAVE_APPLICATIONSERVICES_APPLICATIONSERVICES_H=1
|
||||
+ )
|
||||
+ endif()
|
||||
+
|
||||
+ check_include_file("CoreServices/CoreServices.h" HAVE_CoreServices)
|
||||
+ if (HAVE_CoreServices)
|
||||
+ list(APPEND uv_defines
|
||||
+ HAVE_CORESERVICES_CORESERVICES_H=1
|
||||
+ )
|
||||
+ endif()
|
||||
endif()
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
diff --git a/Utilities/cmlibuv/src/unix/fsevents.c b/Utilities/cmlibuv/src/unix/fsevents.c
|
||||
index a51f29b3f6..3f6bf01968 100644
|
||||
--- a/Utilities/cmlibuv/src/unix/fsevents.c
|
||||
+++ b/Utilities/cmlibuv/src/unix/fsevents.c
|
||||
@@ -21,7 +21,7 @@
|
||||
#include "uv.h"
|
||||
#include "internal.h"
|
||||
|
||||
-#if TARGET_OS_IPHONE || MAC_OS_X_VERSION_MAX_ALLOWED < 1070
|
||||
+#if !HAVE_CORESERVICES_CORESERVICES_H || MAC_OS_X_VERSION_MAX_ALLOWED < 1070
|
||||
|
||||
/* iOS (currently) doesn't provide the FSEvents-API (nor CoreServices) */
|
||||
/* macOS prior to 10.7 doesn't provide the full FSEvents API so use kqueue */
|
||||
@@ -39,7 +39,7 @@ int uv__fsevents_close(uv_fs_event_t* handle) {
|
||||
void uv__fsevents_loop_delete(uv_loop_t* loop) {
|
||||
}
|
||||
|
||||
-#else /* TARGET_OS_IPHONE */
|
||||
+#else /* !HAVE_CORESERVICES_CORESERVICES_H */
|
||||
|
||||
#include "darwin-stub.h"
|
||||
|
||||
@@ -920,4 +920,4 @@ int uv__fsevents_close(uv_fs_event_t* handle) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
-#endif /* TARGET_OS_IPHONE */
|
||||
+#endif /* !HAVE_CORESERVICES_CORESERVICES_H */
|
||||
@@ -0,0 +1,92 @@
|
||||
diff -ru3 cmake-2.8.12.2/Modules/Platform/Linux.cmake cmake-2.8.12.2-new/Modules/Platform/Linux.cmake
|
||||
--- cmake-2.8.12.2/Modules/Platform/Linux.cmake 2014-01-16 21:15:08.000000000 +0400
|
||||
+++ cmake-2.8.12.2-new/Modules/Platform/Linux.cmake 2016-04-13 22:00:32.928575740 +0300
|
||||
@@ -36,22 +36,11 @@
|
||||
# checking the platform every time. This option is advanced enough
|
||||
# that only package maintainers should need to adjust it. They are
|
||||
# capable of providing a setting on the command line.
|
||||
- if(EXISTS "/etc/debian_version")
|
||||
- set(CMAKE_INSTALL_SO_NO_EXE 1 CACHE INTERNAL
|
||||
- "Install .so files without execute permission.")
|
||||
- else()
|
||||
- set(CMAKE_INSTALL_SO_NO_EXE 0 CACHE INTERNAL
|
||||
- "Install .so files without execute permission.")
|
||||
- endif()
|
||||
+ set(CMAKE_INSTALL_SO_NO_EXE 0 CACHE INTERNAL
|
||||
+ "Install .so files without execute permission.")
|
||||
endif()
|
||||
|
||||
# Match multiarch library directory names.
|
||||
set(CMAKE_LIBRARY_ARCHITECTURE_REGEX "[a-z0-9_]+(-[a-z0-9_]+)?-linux-gnu[a-z0-9_]*")
|
||||
|
||||
include(Platform/UnixPaths)
|
||||
-
|
||||
-# Debian has lib64 paths only for compatibility so they should not be
|
||||
-# searched.
|
||||
-if(EXISTS "/etc/debian_version")
|
||||
- set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS FALSE)
|
||||
-endif()
|
||||
diff -ru3 cmake-2.8.12.2/Modules/Platform/UnixPaths.cmake cmake-2.8.12.2-new/Modules/Platform/UnixPaths.cmake
|
||||
--- cmake-2.8.12.2/Modules/Platform/UnixPaths.cmake 2014-01-16 21:15:08.000000000 +0400
|
||||
+++ cmake-2.8.12.2-new/Modules/Platform/UnixPaths.cmake 2016-04-14 00:09:10.106362636 +0300
|
||||
@@ -32,9 +32,6 @@
|
||||
# List common installation prefixes. These will be used for all
|
||||
# search types.
|
||||
list(APPEND CMAKE_SYSTEM_PREFIX_PATH
|
||||
- # Standard
|
||||
- /usr/local /usr /
|
||||
-
|
||||
# CMake install location
|
||||
"${_CMAKE_INSTALL_DIR}"
|
||||
|
||||
@@ -44,44 +41,26 @@
|
||||
|
||||
# List common include file locations not under the common prefixes.
|
||||
list(APPEND CMAKE_SYSTEM_INCLUDE_PATH
|
||||
- # Windows API on Cygwin
|
||||
- /usr/include/w32api
|
||||
-
|
||||
- # X11
|
||||
- /usr/X11R6/include /usr/include/X11
|
||||
-
|
||||
- # Other
|
||||
- /usr/pkg/include
|
||||
- /opt/csw/include /opt/include
|
||||
- /usr/openwin/include
|
||||
+ @libc_dev@/include
|
||||
)
|
||||
|
||||
list(APPEND CMAKE_SYSTEM_LIBRARY_PATH
|
||||
- # Windows API on Cygwin
|
||||
- /usr/lib/w32api
|
||||
-
|
||||
- # X11
|
||||
- /usr/X11R6/lib /usr/lib/X11
|
||||
-
|
||||
- # Other
|
||||
- /usr/pkg/lib
|
||||
- /opt/csw/lib /opt/lib
|
||||
- /usr/openwin/lib
|
||||
+ @libc_lib@/lib
|
||||
)
|
||||
|
||||
list(APPEND CMAKE_SYSTEM_PROGRAM_PATH
|
||||
- /usr/pkg/bin
|
||||
+ @libc_bin@/bin
|
||||
)
|
||||
|
||||
list(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES
|
||||
- /lib /usr/lib /usr/lib32 /usr/lib64
|
||||
+ @libc_lib@/lib
|
||||
)
|
||||
|
||||
list(APPEND CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES
|
||||
- /usr/include
|
||||
+ @libc_dev@/include
|
||||
)
|
||||
list(APPEND CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES
|
||||
- /usr/include
|
||||
+ @libc_dev@/include
|
||||
)
|
||||
|
||||
# Enable use of lib64 search path variants by default.
|
||||
@@ -0,0 +1,74 @@
|
||||
diff --git a/Modules/Platform/UnixPaths.cmake b/Modules/Platform/UnixPaths.cmake
|
||||
index b9381c3d7d..cecc40a89e 100644
|
||||
--- a/Modules/Platform/UnixPaths.cmake
|
||||
+++ b/Modules/Platform/UnixPaths.cmake
|
||||
@@ -26,9 +26,6 @@ get_filename_component(_CMAKE_INSTALL_DIR "${_CMAKE_INSTALL_DIR}" PATH)
|
||||
# please make sure to keep Help/variable/CMAKE_SYSTEM_PREFIX_PATH.rst
|
||||
# synchronized
|
||||
list(APPEND CMAKE_SYSTEM_PREFIX_PATH
|
||||
- # Standard
|
||||
- /usr/local /usr /
|
||||
-
|
||||
# CMake install location
|
||||
"${_CMAKE_INSTALL_DIR}"
|
||||
)
|
||||
@@ -47,24 +44,19 @@ endif()
|
||||
|
||||
# Non "standard" but common install prefixes
|
||||
list(APPEND CMAKE_SYSTEM_PREFIX_PATH
|
||||
- /usr/X11R6
|
||||
- /usr/pkg
|
||||
- /opt
|
||||
)
|
||||
|
||||
# List common include file locations not under the common prefixes.
|
||||
list(APPEND CMAKE_SYSTEM_INCLUDE_PATH
|
||||
- # X11
|
||||
- /usr/include/X11
|
||||
+ @libc_dev@/include
|
||||
)
|
||||
|
||||
list(APPEND CMAKE_SYSTEM_LIBRARY_PATH
|
||||
- # X11
|
||||
- /usr/lib/X11
|
||||
+ @libc_lib@/lib
|
||||
)
|
||||
|
||||
list(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES
|
||||
- /lib /lib32 /lib64 /usr/lib /usr/lib32 /usr/lib64
|
||||
+ @libc_lib@/lib
|
||||
)
|
||||
|
||||
if(CMAKE_SYSROOT_COMPILE)
|
||||
@@ -77,15 +69,15 @@ endif()
|
||||
# parsing the implicit directory information from compiler output.
|
||||
set(_CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES_INIT
|
||||
${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}
|
||||
- "${_cmake_sysroot_compile}/usr/include"
|
||||
+ @libc_dev@/include
|
||||
)
|
||||
set(_CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES_INIT
|
||||
${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES}
|
||||
- "${_cmake_sysroot_compile}/usr/include"
|
||||
+ @libc_dev@/include
|
||||
)
|
||||
set(_CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES_INIT
|
||||
${CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES}
|
||||
- "${_cmake_sysroot_compile}/usr/include"
|
||||
+ @libc_dev@/include
|
||||
)
|
||||
|
||||
unset(_cmake_sysroot_compile)
|
||||
diff --git a/Modules/Platform/WindowsPaths.cmake b/Modules/Platform/WindowsPaths.cmake
|
||||
index b9e2f17979..ab517cd4a7 100644
|
||||
--- a/Modules/Platform/WindowsPaths.cmake
|
||||
+++ b/Modules/Platform/WindowsPaths.cmake
|
||||
@@ -70,7 +70,7 @@ endif()
|
||||
|
||||
if(CMAKE_CROSSCOMPILING AND NOT CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")
|
||||
# MinGW (useful when cross compiling from linux with CMAKE_FIND_ROOT_PATH set)
|
||||
- list(APPEND CMAKE_SYSTEM_PREFIX_PATH /)
|
||||
+ # list(APPEND CMAKE_SYSTEM_PREFIX_PATH /)
|
||||
endif()
|
||||
|
||||
list(APPEND CMAKE_SYSTEM_INCLUDE_PATH
|
||||
Executable
+178
@@ -0,0 +1,178 @@
|
||||
addCMakeParams() {
|
||||
addToSearchPath CMAKE_PREFIX_PATH $1
|
||||
}
|
||||
|
||||
fixCmakeFiles() {
|
||||
# Replace occurences of /usr and /opt by /var/empty.
|
||||
echo "fixing cmake files..."
|
||||
find "$1" \( -type f -name "*.cmake" -o -name "*.cmake.in" -o -name CMakeLists.txt \) -print |
|
||||
while read fn; do
|
||||
sed -e 's^/usr\([ /]\|$\)^/var/empty\1^g' -e 's^/opt\([ /]\|$\)^/var/empty\1^g' < "$fn" > "$fn.tmp"
|
||||
mv "$fn.tmp" "$fn"
|
||||
done
|
||||
}
|
||||
|
||||
cmakeConfigurePhase() {
|
||||
runHook preConfigure
|
||||
|
||||
export CTEST_OUTPUT_ON_FAILURE=1
|
||||
if [ -n "${enableParallelChecking-1}" ]; then
|
||||
export CTEST_PARALLEL_LEVEL=$NIX_BUILD_CORES
|
||||
fi
|
||||
|
||||
if [ -z "${dontFixCmake-}" ]; then
|
||||
fixCmakeFiles .
|
||||
fi
|
||||
|
||||
if [ -z "${dontUseCmakeBuildDir-}" ]; then
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmakeDir=${cmakeDir:-..}
|
||||
fi
|
||||
|
||||
if [ -z "${dontAddPrefix-}" ]; then
|
||||
cmakeFlags="-DCMAKE_INSTALL_PREFIX=$prefix $cmakeFlags"
|
||||
fi
|
||||
|
||||
# We should set the proper `CMAKE_SYSTEM_NAME`.
|
||||
# http://www.cmake.org/Wiki/CMake_Cross_Compiling
|
||||
#
|
||||
# Unfortunately cmake seems to expect absolute paths for ar, ranlib, and
|
||||
# strip. Otherwise they are taken to be relative to the source root of the
|
||||
# package being built.
|
||||
cmakeFlags="-DCMAKE_CXX_COMPILER=$CXX $cmakeFlags"
|
||||
cmakeFlags="-DCMAKE_C_COMPILER=$CC $cmakeFlags"
|
||||
cmakeFlags="-DCMAKE_AR=$(command -v $AR) $cmakeFlags"
|
||||
cmakeFlags="-DCMAKE_RANLIB=$(command -v $RANLIB) $cmakeFlags"
|
||||
cmakeFlags="-DCMAKE_STRIP=$(command -v $STRIP) $cmakeFlags"
|
||||
|
||||
# on macOS we want to prefer Unix-style headers to Frameworks
|
||||
# because we usually do not package the framework
|
||||
cmakeFlags="-DCMAKE_FIND_FRAMEWORK=LAST $cmakeFlags"
|
||||
|
||||
# on macOS i686 was only relevant for 10.5 or earlier.
|
||||
cmakeFlags="-DCMAKE_OSX_ARCHITECTURES=x86_64 $cmakeFlags"
|
||||
|
||||
# we never want to use the global macOS SDK
|
||||
cmakeFlags="-DCMAKE_OSX_SYSROOT= $cmakeFlags"
|
||||
|
||||
# correctly detect our clang compiler
|
||||
cmakeFlags="-DCMAKE_POLICY_DEFAULT_CMP0025=NEW $cmakeFlags"
|
||||
|
||||
# This installs shared libraries with a fully-specified install
|
||||
# name. By default, cmake installs shared libraries with just the
|
||||
# basename as the install name, which means that, on Darwin, they
|
||||
# can only be found by an executable at runtime if the shared
|
||||
# libraries are in a system path or in the same directory as the
|
||||
# executable. This flag makes the shared library accessible from its
|
||||
# nix/store directory.
|
||||
cmakeFlags="-DCMAKE_INSTALL_NAME_DIR=${!outputLib}/lib $cmakeFlags"
|
||||
|
||||
# The docdir flag needs to include PROJECT_NAME as per GNU guidelines,
|
||||
# try to extract it from CMakeLists.txt.
|
||||
if [[ -z "$shareDocName" ]]; then
|
||||
local cmakeLists="${cmakeDir}/CMakeLists.txt"
|
||||
if [[ -f "$cmakeLists" ]]; then
|
||||
local shareDocName="$(grep --only-matching --perl-regexp --ignore-case '\bproject\s*\(\s*"?\K([^[:space:]")]+)' < "$cmakeLists" | head -n1)"
|
||||
fi
|
||||
# The argument sometimes contains garbage or variable interpolation.
|
||||
# When that is the case, let’s fall back to the derivation name.
|
||||
if [[ -z "$shareDocName" ]] || echo "$shareDocName" | grep -q '[^a-zA-Z0-9_+-]'; then
|
||||
if [[ -n "${pname-}" ]]; then
|
||||
shareDocName="$pname"
|
||||
else
|
||||
shareDocName="$(echo "$name" | sed 's/-[^a-zA-Z].*//')"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# This ensures correct paths with multiple output derivations
|
||||
# It requires the project to use variables from GNUInstallDirs module
|
||||
# https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html
|
||||
cmakeFlags="-DCMAKE_INSTALL_BINDIR=${!outputBin}/bin $cmakeFlags"
|
||||
cmakeFlags="-DCMAKE_INSTALL_SBINDIR=${!outputBin}/sbin $cmakeFlags"
|
||||
cmakeFlags="-DCMAKE_INSTALL_INCLUDEDIR=${!outputInclude}/include $cmakeFlags"
|
||||
cmakeFlags="-DCMAKE_INSTALL_OLDINCLUDEDIR=${!outputInclude}/include $cmakeFlags"
|
||||
cmakeFlags="-DCMAKE_INSTALL_MANDIR=${!outputMan}/share/man $cmakeFlags"
|
||||
cmakeFlags="-DCMAKE_INSTALL_INFODIR=${!outputInfo}/share/info $cmakeFlags"
|
||||
cmakeFlags="-DCMAKE_INSTALL_DOCDIR=${!outputDoc}/share/doc/${shareDocName} $cmakeFlags"
|
||||
cmakeFlags="-DCMAKE_INSTALL_LIBDIR=${!outputLib}/lib $cmakeFlags"
|
||||
cmakeFlags="-DCMAKE_INSTALL_LIBEXECDIR=${!outputLib}/libexec $cmakeFlags"
|
||||
cmakeFlags="-DCMAKE_INSTALL_LOCALEDIR=${!outputLib}/share/locale $cmakeFlags"
|
||||
|
||||
# Don’t build tests when doCheck = false
|
||||
if [ -z "${doCheck-}" ]; then
|
||||
cmakeFlags="-DBUILD_TESTING=OFF $cmakeFlags"
|
||||
fi
|
||||
|
||||
# Avoid cmake resetting the rpath of binaries, on make install
|
||||
# And build always Release, to ensure optimisation flags
|
||||
cmakeFlags="-DCMAKE_BUILD_TYPE=${cmakeBuildType:-Release} -DCMAKE_SKIP_BUILD_RPATH=ON $cmakeFlags"
|
||||
|
||||
# Disable user package registry to avoid potential side effects
|
||||
# and unecessary attempts to access non-existent home folder
|
||||
# https://cmake.org/cmake/help/latest/manual/cmake-packages.7.html#disabling-the-package-registry
|
||||
cmakeFlags="-DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON $cmakeFlags"
|
||||
cmakeFlags="-DCMAKE_FIND_USE_PACKAGE_REGISTRY=OFF $cmakeFlags"
|
||||
cmakeFlags="-DCMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY=OFF $cmakeFlags"
|
||||
|
||||
if [ "${buildPhase-}" = ninjaBuildPhase ]; then
|
||||
cmakeFlags="-GNinja $cmakeFlags"
|
||||
fi
|
||||
|
||||
echo "cmake flags: $cmakeFlags ${cmakeFlagsArray[@]}"
|
||||
|
||||
cmake ${cmakeDir:-.} $cmakeFlags "${cmakeFlagsArray[@]}"
|
||||
|
||||
if ! [[ -v enableParallelBuilding ]]; then
|
||||
enableParallelBuilding=1
|
||||
echo "cmake: enabled parallel building"
|
||||
fi
|
||||
|
||||
runHook postConfigure
|
||||
}
|
||||
|
||||
if [ -z "${dontUseCmakeConfigure-}" -a -z "${configurePhase-}" ]; then
|
||||
setOutputFlags=
|
||||
configurePhase=cmakeConfigurePhase
|
||||
fi
|
||||
|
||||
addEnvHooks "$targetOffset" addCMakeParams
|
||||
|
||||
makeCmakeFindLibs(){
|
||||
isystem_seen=
|
||||
iframework_seen=
|
||||
for flag in ${NIX_CFLAGS_COMPILE-} ${NIX_LDFLAGS-}; do
|
||||
if test -n "$isystem_seen" && test -d "$flag"; then
|
||||
isystem_seen=
|
||||
export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH-}${CMAKE_INCLUDE_PATH:+:}${flag}"
|
||||
elif test -n "$iframework_seen" && test -d "$flag"; then
|
||||
iframework_seen=
|
||||
export CMAKE_FRAMEWORK_PATH="${CMAKE_FRAMEWORK_PATH-}${CMAKE_FRAMEWORK_PATH:+:}${flag}"
|
||||
else
|
||||
isystem_seen=
|
||||
iframework_seen=
|
||||
case $flag in
|
||||
-I*)
|
||||
export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH-}${CMAKE_INCLUDE_PATH:+:}${flag:2}"
|
||||
;;
|
||||
-L*)
|
||||
export CMAKE_LIBRARY_PATH="${CMAKE_LIBRARY_PATH-}${CMAKE_LIBRARY_PATH:+:}${flag:2}"
|
||||
;;
|
||||
-F*)
|
||||
export CMAKE_FRAMEWORK_PATH="${CMAKE_FRAMEWORK_PATH-}${CMAKE_FRAMEWORK_PATH:+:}${flag:2}"
|
||||
;;
|
||||
-isystem)
|
||||
isystem_seen=1
|
||||
;;
|
||||
-iframework)
|
||||
iframework_seen=1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# not using setupHook, because it could be a setupHook adding additional
|
||||
# include flags to NIX_CFLAGS_COMPILE
|
||||
postHooks+=(makeCmakeFindLibs)
|
||||
+16
-19
@@ -46,20 +46,7 @@ let
|
||||
xkeyboard_config
|
||||
]
|
||||
|
||||
# ; ndk-r17c = (nixpkgs.androidenv.composeAndroidPackages
|
||||
# {
|
||||
# ndkVersion = "17.2.4988734"
|
||||
# ; }).ndk-bundle
|
||||
|
||||
; ndk-r17c =
|
||||
let
|
||||
version = "r17c"
|
||||
; in
|
||||
nixpkgs.fetchzip
|
||||
{
|
||||
url = "https://dl.google.com/android/repository/android-ndk-${version}-linux-x86_64.zip"
|
||||
; sha256 = "02q1hy423syl868jdyaxjm44hn59cmni5019r811vinagvq3m7qi"
|
||||
; }
|
||||
; vendorCmake = nixpkgs.libsForQt5.callPackage ./deps/cmake {}
|
||||
|
||||
; ndk-r21d =
|
||||
let
|
||||
@@ -71,6 +58,16 @@ let
|
||||
; sha256 = "0jc3pd0022bgld7k3sy9sc1n0ahfbcx194gil2ka3p8s4nyf0fsg"
|
||||
; }
|
||||
|
||||
; ndk-r23 =
|
||||
let
|
||||
version = "r23-beta1"
|
||||
; in
|
||||
nixpkgs.fetchzip
|
||||
{
|
||||
url = "https://dl.google.com/android/repository/android-ndk-${version}-linux-x86_64.zip"
|
||||
; sha256 = "1cj0gph1a49a67ysqqvjmkiff4ppjc2409ry09ji8dsvfy930s06"
|
||||
; }
|
||||
|
||||
; openssl-source =
|
||||
let
|
||||
name = "openssl"
|
||||
@@ -108,8 +105,8 @@ let
|
||||
; }
|
||||
|
||||
|
||||
; lolnero-rev = "708bf1377"
|
||||
; lolnero-sha256 = "0c37b1i87bma02l1z2k0qfmsi9i0zv8d62dfqj8j6gn5bmqib07g"
|
||||
; lolnero-rev = "2d610c6"
|
||||
; lolnero-sha256 = "02ay2jyd2wibh861hyssqqhpdk944rhij5ym380j1lb947gba3dr"
|
||||
|
||||
; lolnero-source =
|
||||
nixpkgs.fetchgit
|
||||
@@ -157,7 +154,7 @@ with nixpkgs;
|
||||
automake
|
||||
gnum4
|
||||
pkgconfig
|
||||
cmake
|
||||
vendorCmake
|
||||
ccache
|
||||
|
||||
python2
|
||||
@@ -195,8 +192,8 @@ with nixpkgs;
|
||||
export _JAVA_AWT_WM_NONREPARENTING=1
|
||||
export DART_VM_OPTIONS=--root-certs-file=/etc/ssl/certs/ca-certificates.crt
|
||||
|
||||
export ANDROID_NDK_VERSION_LOL=r17c
|
||||
export ANDROID_NDK_ROOT_LOL=${ndk-r17c}
|
||||
export ANDROID_NDK_VERSION_LOL=r23
|
||||
export ANDROID_NDK_ROOT_LOL=${ndk-r23}
|
||||
|
||||
export ZSH_INIT=${nixpkgs.oh-my-zsh}/share/oh-my-zsh/oh-my-zsh.sh
|
||||
exec zsh
|
||||
|
||||
@@ -52,7 +52,7 @@ export NPROC
|
||||
|
||||
# can only be built with ndk-r17c
|
||||
|
||||
DEFAULT_ANDROID_NDK_VERSION_LOL=r17c
|
||||
DEFAULT_ANDROID_NDK_VERSION_LOL=r23
|
||||
ANDROID_NDK_VERSION_LOL="${ANDROID_NDK_VERSION_LOL:-${DEFAULT_ANDROID_NDK_VERSION_LOL}}"
|
||||
|
||||
DEFAULT_ANDROID_NDK_ROOT_LOL=$ANDROID_NDK_ROOT/../$ANDROID_NDK_VERSION_LOL
|
||||
|
||||
@@ -60,38 +60,40 @@ for arch in ${archs[@]}; do
|
||||
;;
|
||||
esac
|
||||
|
||||
# PREFIX=$build_root/build/${name}/$arch
|
||||
echo ">>>>>>>>>>>>>"
|
||||
ndk_root=${BUILD_ROOT_LOL}/mirror
|
||||
echo "ndk_root: $ndk_root"
|
||||
|
||||
PREFIX=$build_root/build/$arch
|
||||
echo "building for ${arch}"
|
||||
|
||||
mkdir -p $PREFIX/dlib/
|
||||
rm -f $PREFIX/dlib/libtinfo.so.5
|
||||
ln -s $PATH_NCURSES/lib/libncursesw.so.5 $PREFIX/dlib/libtinfo.so.5
|
||||
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PREFIX/dlib
|
||||
export TOOLCHAIN_DIR=`realpath $build_root_lol/tool/${arch}`
|
||||
export PATH=$PATH:$build_root/host/bin
|
||||
ccdir=$ndk_root/toolchains/llvm/prebuilt/linux-x86_64/bin/host/bin
|
||||
echo "prefix: ${PREFIX}"
|
||||
|
||||
mkdir -p build/release
|
||||
pushd .
|
||||
cd build/release
|
||||
(
|
||||
CMAKE_INCLUDE_PATH="${PREFIX}/include" \
|
||||
CMAKE_LIBRARY_PATH="${PREFIX}/lib" \
|
||||
CC=aarch64-linux-android-clang \
|
||||
CXX=aarch64-linux-android-clang++ \
|
||||
CC="ccache $ccdir/aarch64-linux-android-clang" \
|
||||
CXX="ccache $ccdir/aarch64-linux-android-clang++" \
|
||||
cmake \
|
||||
-D BUILD_TESTS=OFF \
|
||||
-D ARCH="armv8-a" \
|
||||
-D STATIC=ON \
|
||||
-DOPENSSL_INCLUDE_DIR=$PREFIX/include/openssl \
|
||||
-DOPENSSL_CRYPTO_LIBRARY=$PREFIX/lib/libcrypto.a \
|
||||
-DOPENSSL_SSL_LIBRARY=$PREFIX/lib/libssl.a \
|
||||
-DBoost_INCLUDE_DIR=$PREFIX/include \
|
||||
-DBoost_LIBRARY_DIR=$PREFIX/lib \
|
||||
-DSODIUM_LIBRARY=$PREFIX/lib/libsodium.a \
|
||||
-D CMAKE_BUILD_TYPE=release \
|
||||
-D ANDROID=true \
|
||||
-D CMAKE_SYSTEM_NAME="Android" \
|
||||
-D CMAKE_ANDROID_STANDALONE_TOOLCHAIN="${TOOLCHAIN_DIR}" \
|
||||
-D CMAKE_ANDROID_ARCH_ABI="arm64-v8a" \
|
||||
-D ANDROID_ABI="arm64-v8a" \
|
||||
-D USE_CCACHE=ON \
|
||||
-D USE_READLINE=OFF \
|
||||
-D VERSIONTAG="${VERSIONTAG_LOLNERO}" \
|
||||
-DCMAKE_TOOLCHAIN_FILE=${ndk_root}/build/cmake/android.toolchain.cmake \
|
||||
-DANDROID_TOOLCHAIN=clang \
|
||||
-DANDROID_NATIVE_API_LEVEL=28 \
|
||||
../.. && make -j${NPROC} daemon
|
||||
)
|
||||
popd
|
||||
|
||||
@@ -48,6 +48,7 @@ rm -rf $out
|
||||
if [ ! -z $SRC_LOLNERO_DIR ]; then
|
||||
echo "using pre-fetched $name"
|
||||
rsync -av --no-perms --no-owner --no-group --delete $SRC_LOLNERO_DIR/* $out
|
||||
mkdir $out/external
|
||||
chmod u+w -R $out/external
|
||||
cd $name
|
||||
else
|
||||
|
||||
@@ -41,20 +41,3 @@ ndk_mirror=$build_root/mirror
|
||||
cp -vr $ANDROID_NDK_ROOT_LOL/ $ndk_mirror
|
||||
chmod u+w -R $ndk_mirror
|
||||
|
||||
args="--api 23 --stl=libc++"
|
||||
|
||||
archs=(arm64)
|
||||
|
||||
for arch in ${archs[@]}; do
|
||||
bin=$ndk_mirror/build/tools/make_standalone_toolchain.py
|
||||
|
||||
out=$build_root/tool/$arch
|
||||
echo "installing toolchain for ${arch} into $out"
|
||||
|
||||
if [ ! -d "$out" ]; then
|
||||
echo "installing $arch"
|
||||
echo $bin $args --arch $arch --install-dir $out
|
||||
$bin $args --arch $arch --install-dir $out
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2019, The Wownero Project
|
||||
# Copyright (c) 2014-2019, The Monero Project
|
||||
#
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without modification, are
|
||||
# permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||
# conditions and the following disclaimer.
|
||||
#
|
||||
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||
# of conditions and the following disclaimer in the documentation and/or other
|
||||
# materials provided with the distribution.
|
||||
#
|
||||
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without specific
|
||||
# prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
set -e
|
||||
|
||||
source etc/scripts/build-external-libs/env.sh
|
||||
|
||||
build_root=$BUILD_ROOT_LOL
|
||||
PATH=$ANDROID_NDK_ROOT_LOL/build/tools/:$PATH
|
||||
|
||||
archs=(arm64)
|
||||
|
||||
for arch in ${archs[@]}; do
|
||||
cd $build_root/tool/$arch/sysroot && \
|
||||
mkdir -p var/empty/include/android && \
|
||||
cp usr/include/android/api-level.h var/empty/include/android/
|
||||
done
|
||||
Reference in New Issue
Block a user