-# general kernels
-
-$(NV_OUT)/%.sm_20.64.cubin: $(NV_IN)/%.cu
- ${NVCC} -ccbin $(CC_LINUX_64) -cubin --machine 64 -o $@ -arch sm_20 -I . -I $(NV_IN)/ $< -Dsm_20 -DNV64
-
-$(NV_OUT)/%.sm_21.64.cubin: $(NV_IN)/%.cu
- ${NVCC} -ccbin $(CC_LINUX_64) -cubin --machine 64 -o $@ -arch sm_21 -I . -I $(NV_IN)/ $< -Dsm_21 -DNV64
-
-$(NV_OUT)/%.sm_30.64.cubin: $(NV_IN)/%.cu
- ${NVCC} -ccbin $(CC_LINUX_64) -cubin --machine 64 -o $@ -arch sm_30 -I . -I $(NV_IN)/ $< -Dsm_30 -DNV64
-
-$(NV_OUT)/%.sm_35.64.cubin: $(NV_IN)/%.cu
- ${NVCC} -ccbin $(CC_LINUX_64) -cubin --machine 64 -o $@ -arch sm_35 -I . -I $(NV_IN)/ $< -Dsm_35 -DNV64
-
-$(NV_OUT)/%.sm_37.64.cubin: $(NV_IN)/%.cu
- ${NVCC} -ccbin $(CC_LINUX_64) -cubin --machine 64 -o $@ -arch sm_37 -I . -I $(NV_IN)/ $< -Dsm_37 -DNV64
-
-$(NV_OUT)/%.sm_50.64.cubin: $(NV_IN)/%.cu
- ${NVCC} -ccbin $(CC_LINUX_64) -cubin --machine 64 -o $@ -arch sm_50 -I . -I $(NV_IN)/ $< -Dsm_50 -DNV64
-
-$(NV_OUT)/%.sm_52.64.cubin: $(NV_IN)/%.cu
- ${NVCC} -ccbin $(CC_LINUX_64) -cubin --machine 64 -o $@ -arch sm_52 -I . -I $(NV_IN)/ $< -Dsm_52 -DNV64
-
-# scrypt specific kernels
-
-.PHONY : $(NV_OUT)/m08900.sm_20.64.cubin $(NV_OUT)/m08900.sm_21.64.cubin $(NV_OUT)/m08900.sm_30.64.cubin $(NV_OUT)/m08900.sm_35.64.cubin $(NV_OUT)/m08900.sm_37.64.cubin $(NV_OUT)/m08900.sm_50.64.cubin $(NV_OUT)/m08900.sm_52.64.cubin
-
-$(NV_OUT)/m08900.sm_20.64.cubin:$(foreach N,$(SCRYPT_N_ALL),$(foreach R,$(SCRYPT_R_ALL),$(foreach P,$(SCRYPT_P_ALL),$(foreach TMTO,$(SCRYPT_TMTO_ALL),$(NV_OUT)/m08900_$(N)_$(R)_$(P)_$(TMTO).sm_20.64.cubin))))
-
-$(NV_OUT)/m08900.sm_21.64.cubin:$(foreach N,$(SCRYPT_N_ALL),$(foreach R,$(SCRYPT_R_ALL),$(foreach P,$(SCRYPT_P_ALL),$(foreach TMTO,$(SCRYPT_TMTO_ALL),$(NV_OUT)/m08900_$(N)_$(R)_$(P)_$(TMTO).sm_21.64.cubin))))
-
-$(NV_OUT)/m08900.sm_30.64.cubin:$(foreach N,$(SCRYPT_N_ALL),$(foreach R,$(SCRYPT_R_ALL),$(foreach P,$(SCRYPT_P_ALL),$(foreach TMTO,$(SCRYPT_TMTO_ALL),$(NV_OUT)/m08900_$(N)_$(R)_$(P)_$(TMTO).sm_30.64.cubin))))
-
-$(NV_OUT)/m08900.sm_35.64.cubin:$(foreach N,$(SCRYPT_N_ALL),$(foreach R,$(SCRYPT_R_ALL),$(foreach P,$(SCRYPT_P_ALL),$(foreach TMTO,$(SCRYPT_TMTO_ALL),$(NV_OUT)/m08900_$(N)_$(R)_$(P)_$(TMTO).sm_35.64.cubin))))
-
-$(NV_OUT)/m08900.sm_37.64.cubin:$(foreach N,$(SCRYPT_N_ALL),$(foreach R,$(SCRYPT_R_ALL),$(foreach P,$(SCRYPT_P_ALL),$(foreach TMTO,$(SCRYPT_TMTO_ALL),$(NV_OUT)/m08900_$(N)_$(R)_$(P)_$(TMTO).sm_37.64.cubin))))
-
-$(NV_OUT)/m08900.sm_50.64.cubin:$(foreach N,$(SCRYPT_N_ALL),$(foreach R,$(SCRYPT_R_ALL),$(foreach P,$(SCRYPT_P_ALL),$(foreach TMTO,$(SCRYPT_TMTO_ALL),$(NV_OUT)/m08900_$(N)_$(R)_$(P)_$(TMTO).sm_50.64.cubin))))
-
-$(NV_OUT)/m08900.sm_52.64.cubin:$(foreach N,$(SCRYPT_N_ALL),$(foreach R,$(SCRYPT_R_ALL),$(foreach P,$(SCRYPT_P_ALL),$(foreach TMTO,$(SCRYPT_TMTO_ALL),$(NV_OUT)/m08900_$(N)_$(R)_$(P)_$(TMTO).sm_52.64.cubin))))
-
-$(NV_OUT)/m08900_%.64.cubin: $(NV_IN)/m08900.cu
- $(eval splitted := $(subst ., ,$(subst _, ,$@)))
- $(eval n_val := $(wordlist 2, 2, $(splitted)))
- $(eval r_val := $(wordlist 3, 3, $(splitted)))
- $(eval p_val := $(wordlist 4, 4, $(splitted)))
- $(eval tmto_val := $(wordlist 5, 5, $(splitted)))
- $(eval cubin_val := $(wordlist 7, 7, $(splitted)))
- ${NVCC} -ccbin $(CC_LINUX_64) -cubin --machine 64 -o $@ -arch sm_$(cubin_val) -I . -I $(NV_IN)/ $< -Dsm_$(cubin_val) -DNV64 -DSCRYPT_N=$(n_val) -DSCRYPT_R=$(r_val) -DSCRYPT_P=$(p_val) -DSCRYPT_TMTO=$(tmto_val)
+install: native
+ $(INSTALL) -m 755 -d $(DESTDIR)$(DOCUMENT_FOLDER)
+ $(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)
+ $(INSTALL) -m 755 -d $(DESTDIR)$(INSTALL_FOLDER)
+ $(INSTALL) -m 755 -d $(DESTDIR)$(DOCUMENT_FOLDER)/docs
+ $(INSTALL) -m 755 -d $(DESTDIR)$(DOCUMENT_FOLDER)/extra
+ $(INSTALL) -m 755 -d $(DESTDIR)$(DOCUMENT_FOLDER)/extra/tab_completion
+ $(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)/charsets
+ $(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)/masks
+ $(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)/OpenCL
+ $(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)/rules
+ $(INSTALL) -m 644 example.dict $(DESTDIR)$(DOCUMENT_FOLDER)/
+ $(INSTALL) -m 644 example0.hash $(DESTDIR)$(DOCUMENT_FOLDER)/
+ $(INSTALL) -m 644 example400.hash $(DESTDIR)$(DOCUMENT_FOLDER)/
+ $(INSTALL) -m 644 example500.hash $(DESTDIR)$(DOCUMENT_FOLDER)/
+ $(INSTALL) -m 755 example0.sh $(DESTDIR)$(DOCUMENT_FOLDER)/
+ $(INSTALL) -m 755 example400.sh $(DESTDIR)$(DOCUMENT_FOLDER)/
+ $(INSTALL) -m 755 example500.sh $(DESTDIR)$(DOCUMENT_FOLDER)/
+ $(INSTALL) -m 644 extra/tab_completion/hashcat.sh $(DESTDIR)$(DOCUMENT_FOLDER)/extra/tab_completion/
+ $(INSTALL) -m 644 extra/tab_completion/howto.txt $(DESTDIR)$(DOCUMENT_FOLDER)/extra/tab_completion/
+ $(INSTALL) -m 755 extra/tab_completion/install $(DESTDIR)$(DOCUMENT_FOLDER)/extra/tab_completion/
+ $(INSTALL) -m 644 hashcat.hcstat $(DESTDIR)$(SHARED_FOLDER)/
+ $(INSTALL) -m 644 hashcat.hctune $(DESTDIR)$(SHARED_FOLDER)/
+ $(INSTALL) -m 755 $(BINARY_NATIVE) $(DESTDIR)$(INSTALL_FOLDER)/
+ $(FIND) docs/ -type d -exec $(INSTALL) -m 755 -d $(DESTDIR)$(DOCUMENT_FOLDER)/{} \;
+ $(FIND) charsets/ -type d -exec $(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)/{} \;
+ $(FIND) masks/ -type d -exec $(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)/{} \;
+ $(FIND) OpenCL/ -type d -exec $(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)/{} \;
+ $(FIND) rules/ -type d -exec $(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)/{} \;
+ $(FIND) docs/ -type f -exec $(INSTALL) -m 644 {} $(DESTDIR)$(DOCUMENT_FOLDER)/{} \;
+ $(FIND) charsets/ -type f -exec $(INSTALL) -m 644 {} $(DESTDIR)$(SHARED_FOLDER)/{} \;
+ $(FIND) masks/ -type f -exec $(INSTALL) -m 644 {} $(DESTDIR)$(SHARED_FOLDER)/{} \;
+ $(FIND) OpenCL/ -type f -exec $(INSTALL) -m 644 {} $(DESTDIR)$(SHARED_FOLDER)/{} \;
+ $(FIND) rules/ -type f -exec $(INSTALL) -m 644 {} $(DESTDIR)$(SHARED_FOLDER)/{} \;
+ $(SED) -i 's/\.\/hashcat/hashcat/' $(DESTDIR)$(DOCUMENT_FOLDER)/example0.sh
+ $(SED) -i 's/\.\/hashcat/hashcat/' $(DESTDIR)$(DOCUMENT_FOLDER)/example400.sh
+ $(SED) -i 's/\.\/hashcat/hashcat/' $(DESTDIR)$(DOCUMENT_FOLDER)/example500.sh
+
+uninstall:
+ $(RM) -f $(DESTDIR)$(INSTALL_FOLDER)/$(BINARY_NATIVE)
+ $(RM) -rf $(DESTDIR)$(SHARED_FOLDER)
+ $(RM) -rf $(DESTDIR)$(DOCUMENT_FOLDER)