diff options
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/terra/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/compilers/terra/default.nix | 92 |
1 files changed, 57 insertions, 35 deletions
diff --git a/nixpkgs/pkgs/development/compilers/terra/default.nix b/nixpkgs/pkgs/development/compilers/terra/default.nix index bd50ea9caaaf..ac1851a683bf 100644 --- a/nixpkgs/pkgs/development/compilers/terra/default.nix +++ b/nixpkgs/pkgs/development/compilers/terra/default.nix @@ -1,27 +1,53 @@ -{ lib, stdenv, fetchurl, fetchFromGitHub -, llvmPackages, ncurses, lua -}: +{ lib, stdenv, fetchFromGitHub, llvmPackages, ncurses, cmake, libxml2 +, symlinkJoin, breakpointHook, cudaPackages, enableCUDA ? false }: let - luajitArchive = "LuaJIT-2.0.5.tar.gz"; - luajitSrc = fetchurl { - url = "http://luajit.org/download/${luajitArchive}"; - sha256 = "0yg9q4q6v028bgh85317ykc9whgxgysp76qzaqgq55y6jy11yjw7"; + luajitRev = "9143e86498436892cb4316550be4d45b68a61224"; + luajitBase = "LuaJIT-${luajitRev}"; + luajitArchive = "${luajitBase}.tar.gz"; + luajitSrc = fetchFromGitHub { + owner = "LuaJIT"; + repo = "LuaJIT"; + rev = luajitRev; + sha256 = "1zw1yr0375d6jr5x20zvkvk76hkaqamjynbswpl604w6r6id070b"; }; -in -stdenv.mkDerivation rec { + + llvmMerged = symlinkJoin { + name = "llvmClangMerged"; + paths = with llvmPackages; [ + llvm.out + llvm.dev + llvm.lib + clang-unwrapped.out + clang-unwrapped.dev + clang-unwrapped.lib + ]; + }; + + cuda = cudaPackages.cudatoolkit_11; + + clangVersion = llvmPackages.clang-unwrapped.version; + +in stdenv.mkDerivation rec { pname = "terra"; - version = "1.0.0pre1175_${builtins.substring 0 7 src.rev}"; + version = "1.0.0-beta3_${builtins.substring 0 7 src.rev}"; src = fetchFromGitHub { - owner = "zdevito"; - repo = "terra"; - rev = "ef6a75ffee15a30f3c74f4e6943851cfbc0fec3d"; - sha256 = "0aky17vbv3d9zng34hp17p9zb00dbzwhvzsdjzrrqvk9lmyvix0s"; + owner = "terralang"; + repo = "terra"; + rev = "99ff93f8c60c89bbe2dc7c63eab9bfe2f4c4833e"; + sha256 = "0ww54xjvv6p8jwsh6hml3v527zgnv2gj58gpb818bbg4k1jwa5fl"; }; - nativeBuildInputs = [ lua ]; - buildInputs = with llvmPackages; [ llvm clang-unwrapped ncurses ]; + nativeBuildInputs = [ cmake ]; + buildInputs = [ llvmMerged ncurses libxml2 ] ++ lib.optional enableCUDA cuda; + + cmakeFlags = [ + "-DHAS_TERRA_VERSION=0" + "-DTERRA_VERSION=${version}" + "-DTERRA_LUA=luajit" + "-DCLANG_RESOURCE_DIR=${llvmMerged}/lib/clang/${clangVersion}" + ] ++ lib.optional enableCUDA "-DTERRA_ENABLE_CUDA=ON"; doCheck = true; enableParallelBuilding = true; @@ -29,40 +55,36 @@ stdenv.mkDerivation rec { outputs = [ "bin" "dev" "out" "static" ]; patches = [ ./nix-cflags.patch ]; + postPatch = '' - substituteInPlace Makefile \ - --replace '-lcurses' '-lncurses' + sed -i '/file(DOWNLOAD "''${LUAJIT_URL}" "''${LUAJIT_TAR}")/d' \ + cmake/Modules/GetLuaJIT.cmake substituteInPlace src/terralib.lua \ --subst-var-by NIX_LIBC_INCLUDE ${lib.getDev stdenv.cc.libc}/include ''; - preBuild = '' - cat >Makefile.inc<<EOF - CLANG = ${lib.getBin llvmPackages.clang-unwrapped}/bin/clang - LLVM_CONFIG = ${lib.getBin llvmPackages.llvm}/bin/llvm-config - EOF - + preConfigure = '' mkdir -p build - cp ${luajitSrc} build/${luajitArchive} + ln -s ${luajitSrc} build/${luajitBase} + tar --mode="a+rwX" -chzf build/${luajitArchive} -C build ${luajitBase} + rm build/${luajitBase} ''; - checkPhase = "(cd tests && ../terra run)"; - installPhase = '' - install -Dm755 -t $bin/bin release/bin/terra - install -Dm755 -t $out/lib release/lib/terra${stdenv.hostPlatform.extensions.sharedLibrary} - install -Dm644 -t $static/lib release/lib/libterra.a + install -Dm755 -t $bin/bin bin/terra + install -Dm755 -t $out/lib lib/terra${stdenv.hostPlatform.extensions.sharedLibrary} + install -Dm644 -t $static/lib lib/libterra_s.a mkdir -pv $dev/include - cp -rv release/include/terra $dev/include + cp -rv include/terra $dev/include ''; meta = with lib; { description = "A low-level counterpart to Lua"; - homepage = "http://terralang.org/"; - platforms = platforms.x86_64; - maintainers = with maintainers; [ jb55 thoughtpolice ]; - license = licenses.mit; + homepage = "http://terralang.org/"; + platforms = platforms.x86_64; + maintainers = with maintainers; [ jb55 seylerius thoughtpolice ]; + license = licenses.mit; }; } |