mirror of https://github.com/fredrikekre/.dotfiles
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
3.1 KiB
68 lines
3.1 KiB
JULIA=$(shell which julia) |
|
JULIA_PROJECT= |
|
default: languageserver.so |
|
|
|
languageserver.so: Manifest.toml packagecompiler/Manifest.toml packagecompiler/precompile_statements.jl |
|
JULIA_LOAD_PATH=${PWD}:${PWD}/packagecompiler:@stdlib ${JULIA} -e 'using PackageCompiler; PackageCompiler.create_sysimage(:LanguageServer, sysimage_path="languageserver.so", precompile_statements_file="packagecompiler/precompile_statements.jl")' |
|
|
|
Manifest.toml: Project.toml |
|
JULIA_LOAD_PATH=${PWD}/Project.toml:@stdlib ${JULIA} -e 'using Pkg; Pkg.instantiate()' |
|
|
|
Project.toml: |
|
JULIA_LOAD_PATH=${PWD}/Project.toml:@stdlib ${JULIA} -e 'using Pkg; Pkg.add("LanguageServer")' |
|
|
|
packagecompiler/Manifest.toml: packagecompiler/Project.toml |
|
JULIA_LOAD_PATH=${PWD}/packagecompiler/Project.toml:@stdlib ${JULIA} -e 'using Pkg; Pkg.instantiate()' |
|
|
|
packagecompiler/Project.toml: |
|
mkdir -p packagecompiler |
|
JULIA_LOAD_PATH=${PWD}/packagecompiler/Project.toml:@stdlib ${JULIA} -e 'using Pkg; Pkg.add("PackageCompiler")' |
|
|
|
packagecompiler/precompile_statements.jl: Manifest.toml bin/julia |
|
TMPDIR=$(shell mktemp -d) && \ |
|
cd $${TMPDIR} && \ |
|
JULIA_LOAD_PATH=: ${JULIA} -e 'using Pkg; Pkg.generate("Example")' 2> /dev/null && \ |
|
cd Example && \ |
|
JULIA_LOAD_PATH=$${PWD}:@stdlib ${JULIA} -e 'using Pkg; Pkg.add(["JSON", "fzf_jll", "Random", "Zlib_jll"])' 2> /dev/null && \ |
|
JULIA_LOAD_PATH=$${PWD}:@stdlib ${JULIA} -e 'using Pkg; Pkg.precompile()' 2> /dev/null && \ |
|
echo "module Example" > src/Example.jl && \ |
|
echo "" >> src/Example.jl && \ |
|
echo "import JSON" >> src/Example.jl && \ |
|
echo "import fzf_jll" >> src/Example.jl && \ |
|
echo "using Random" >> src/Example.jl && \ |
|
echo "using Zlib_jll" >> src/Example.jl && \ |
|
echo "" >> src/Example.jl && \ |
|
echo "function hello(who, notused)" >> src/Example.jl && \ |
|
echo " println(\"hello\", who)" >> src/Example.jl && \ |
|
echo " shuffle([1, 2, 3])" >> src/Example.jl && \ |
|
echo " shoffle([1, 2, 3])" >> src/Example.jl && \ |
|
echo " fzzf = fzf_jll.fzzf()" >> src/Example.jl && \ |
|
echo " fzf = fzf_jll.fzf(1)" >> src/Example.jl && \ |
|
echo " JSON.print(stdout, Dict(\"hello\" => [1, 2, 3]), 2, 123)" >> src/Example.jl && \ |
|
echo " JSON.print(stdout, Dict(\"hello\" => [1, 2, 3]))" >> src/Example.jl && \ |
|
echo " hi(who)" >> src/Example.jl && \ |
|
echo " return Zlib_jll.libz" >> src/Example.jl && \ |
|
echo "end" >> src/Example.jl && \ |
|
echo "" >> src/Example.jl && \ |
|
echo "end # module" >> src/Example.jl && \ |
|
JULIA_TRACE_COMPILE=1 nvim src/Example.jl && \ |
|
rm -rf $${TMPDIR} |
|
|
|
bin/julia: |
|
mkdir -p bin |
|
rm -f bin/julia |
|
echo "#!/bin/bash" > bin/julia |
|
echo "JULIA=${JULIA}" >> bin/julia |
|
echo "if [[ \$${JULIA_TRACE_COMPILE} = \"1\" ]]; then" >> bin/julia |
|
echo " exec \$${JULIA} --trace-compile=${PWD}/packagecompiler/precompile_statements.jl \"\$$@\"" >> bin/julia |
|
echo "elif [[ -f ${PWD}/languageserver.so ]]; then" >> bin/julia |
|
echo " exec \$${JULIA} --sysimage=${PWD}/languageserver.so \"\$$@\"" >> bin/julia |
|
echo "else" >> bin/julia |
|
echo " exec \$${JULIA} \"\$$@\"" >> bin/julia |
|
echo "fi" >> bin/julia |
|
chmod +x bin/julia |
|
|
|
clean: |
|
rm -rf languageserver.so packagecompiler bin |
|
|
|
.PHONY: clean default
|
|
|