summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2019-06-11 14:21:01 +0800
committerGitHub <[email protected]>2019-06-11 14:21:01 +0800
commitffb4f2c3cbad5fa1836923ee68d0f5322f3c92fa (patch)
tree1567a894cd6cde9d1e84ffc43f8498c61d8ee763
parent62a558c85e80081f78d340410c4ba7185d42ca89 (diff)
parentfddedb324fbff0546c2cbe304fe95c8e254da6fb (diff)
Merge pull request #450 from OpportunityLiu/cuda-tests
Cuda tests & templates
-rw-r--r--.gitignore64
-rw-r--r--tests/projects/cuda/shared/inc/lib.cuh23
-rw-r--r--tests/projects/cuda/shared/src/lib.cu97
-rw-r--r--tests/projects/cuda/shared/src/main.cu34
-rw-r--r--tests/projects/cuda/shared/xmake.lua22
-rw-r--r--tests/projects/cuda/static/inc/lib.cuh3
-rw-r--r--tests/projects/cuda/static/src/lib.cu7
-rw-r--r--tests/projects/cuda/static/src/main.cu127
-rw-r--r--tests/projects/cuda/static/xmake.lua24
-rw-r--r--xmake/scripts/gitignore30
-rw-r--r--xmake/templates/c++/console/project/.gitignore30
-rw-r--r--xmake/templates/c++/console_qt/project/.gitignore30
-rw-r--r--xmake/templates/c++/console_tbox/project/.gitignore30
-rw-r--r--xmake/templates/c++/shared_library/project/.gitignore30
-rw-r--r--xmake/templates/c++/shared_library_qt/project/.gitignore30
-rw-r--r--xmake/templates/c++/shared_library_tbox/project/.gitignore30
-rw-r--r--xmake/templates/c++/static_library/project/.gitignore30
-rw-r--r--xmake/templates/c++/static_library_qt/project/.gitignore30
-rw-r--r--xmake/templates/c++/static_library_tbox/project/.gitignore30
-rw-r--r--xmake/templates/c/console/project/.gitignore30
-rw-r--r--xmake/templates/c/console_tbox/.gitignore30
-rw-r--r--xmake/templates/c/shared_library/project/.gitignore30
-rw-r--r--xmake/templates/c/shared_library_tbox/project/.gitignore30
-rw-r--r--xmake/templates/c/static_library/project/.gitignore30
-rw-r--r--xmake/templates/c/static_library_tbox/project/.gitignore30
-rw-r--r--xmake/templates/cuda/console/project/.gitignore30
-rw-r--r--xmake/templates/cuda/console/project/xmake.lua5
-rw-r--r--xmake/templates/cuda/shared_library/project/.gitignore2
-rw-r--r--xmake/templates/cuda/shared_library/project/inc/lib.cuh22
-rw-r--r--xmake/templates/cuda/shared_library/project/src/lib.cu98
-rw-r--r--xmake/templates/cuda/shared_library/project/xmake.lua35
-rw-r--r--xmake/templates/cuda/shared_library/template.lua14
-rw-r--r--xmake/templates/cuda/static_library/project/.gitignore2
-rw-r--r--xmake/templates/cuda/static_library/project/inc/lib.cuh3
-rw-r--r--xmake/templates/cuda/static_library/project/src/lib.cu7
-rw-r--r--xmake/templates/cuda/static_library/project/xmake.lua35
-rw-r--r--xmake/templates/cuda/static_library/template.lua14
-rw-r--r--xmake/templates/dlang/console/project/.gitignore30
-rw-r--r--xmake/templates/dlang/shared_library/project/.gitignore30
-rw-r--r--xmake/templates/dlang/static_library/project/.gitignore30
-rw-r--r--xmake/templates/go/console/project/.gitignore30
-rw-r--r--xmake/templates/go/static_library/project/.gitignore30
-rw-r--r--xmake/templates/objc++/console/project/.gitignore30
-rw-r--r--xmake/templates/objc/console/project/.gitignore30
-rw-r--r--xmake/templates/rust/console/project/.gitignore30
-rw-r--r--xmake/templates/rust/static_library/project/.gitignore30
-rw-r--r--xmake/templates/swift/console/project/.gitignore30
47 files changed, 813 insertions, 635 deletions
diff --git a/.gitignore b/.gitignore
index cd7ecbe72..99bc3124f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,44 +1,26 @@
-*.a
-*.b
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
+# MacOS Cache
+.DS_Store/
+
+# Xmake cache
+.xmake/
+build/
+
+# for VS Code
+.vscode/
+
+# for vim
*.swp
*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-*.ilk
-*.stackdump
-*.manifest
-.ccache
-.demo
-.svn
-.DS_Store
-.xmake
-*.deb
-*.zip
-*.gch
-*.gch.d
-*.sys
-cscope.*
-gmon.out
tags
-doc
-install.log
-build
-core/bin
-core/pre
-core/tool/msys
-core/xmake.config.h
-core/.config.mak
-winenv
-xmake-ppa
-!xmake/actions/build
-.vscode/ \ No newline at end of file
+!tags/
+
+# Ignore packaging files
+winenv/
+*.exe
+*.zip
+
+# Makefile generation
+/core/xmake.config.h
+/core/.config.mak
+
+!/xmake/actions/build/ \ No newline at end of file
diff --git a/tests/projects/cuda/shared/inc/lib.cuh b/tests/projects/cuda/shared/inc/lib.cuh
new file mode 100644
index 000000000..84d5db3ca
--- /dev/null
+++ b/tests/projects/cuda/shared/inc/lib.cuh
@@ -0,0 +1,23 @@
+#pragma once
+
+#include "cuda_runtime.h"
+#include "device_launch_parameters.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#if defined(_WIN32)
+#define __export __declspec(dllexport)
+#elif defined(__GNUC__) && ((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))
+#define __export __attribute__((visibility("default")))
+#else
+#define __export
+#endif
+
+ __export cudaError_t addWithCuda(int *c, const int *a, const int *b, unsigned int size);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/tests/projects/cuda/shared/src/lib.cu b/tests/projects/cuda/shared/src/lib.cu
new file mode 100644
index 000000000..cd33b167b
--- /dev/null
+++ b/tests/projects/cuda/shared/src/lib.cu
@@ -0,0 +1,97 @@
+#include <lib.cuh>
+#include <stdio.h>
+
+__global__ void addKernel(int *c, const int *a, const int *b)
+{
+ int i = threadIdx.x;
+ c[i] = a[i] + b[i];
+}
+
+// Helper function for using CUDA to add vectors in parallel.
+cudaError_t addWithCuda(int *c, const int *a, const int *b, unsigned int size)
+{
+ int *dev_a = 0;
+ int *dev_b = 0;
+ int *dev_c = 0;
+ cudaError_t cudaStatus;
+
+ // Choose which GPU to run on, change this on a multi-GPU system.
+ cudaStatus = cudaSetDevice(0);
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaSetDevice failed! Do you have a CUDA-capable GPU installed?");
+ goto Error;
+ }
+
+ // Allocate GPU buffers for three vectors (two input, one output) .
+ cudaStatus = cudaMalloc((void **)&dev_c, size * sizeof(int));
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaMalloc failed!");
+ goto Error;
+ }
+
+ cudaStatus = cudaMalloc((void **)&dev_a, size * sizeof(int));
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaMalloc failed!");
+ goto Error;
+ }
+
+ cudaStatus = cudaMalloc((void **)&dev_b, size * sizeof(int));
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaMalloc failed!");
+ goto Error;
+ }
+
+ // Copy input vectors from host memory to GPU buffers.
+ cudaStatus = cudaMemcpy(dev_a, a, size * sizeof(int), cudaMemcpyHostToDevice);
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaMemcpy failed!");
+ goto Error;
+ }
+
+ cudaStatus = cudaMemcpy(dev_b, b, size * sizeof(int), cudaMemcpyHostToDevice);
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaMemcpy failed!");
+ goto Error;
+ }
+
+ // Launch a kernel on the GPU with one thread for each element.
+ addKernel<<<1, size>>>(dev_c, dev_a, dev_b);
+
+ // Check for any errors launching the kernel
+ cudaStatus = cudaGetLastError();
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "addKernel launch failed: %s\n", cudaGetErrorString(cudaStatus));
+ goto Error;
+ }
+
+ // cudaDeviceSynchronize waits for the kernel to finish, and returns
+ // any errors encountered during the launch.
+ cudaStatus = cudaDeviceSynchronize();
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaDeviceSynchronize returned error code %d after launching addKernel!\n", cudaStatus);
+ goto Error;
+ }
+
+ // Copy output vector from GPU buffer to host memory.
+ cudaStatus = cudaMemcpy(c, dev_c, size * sizeof(int), cudaMemcpyDeviceToHost);
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaMemcpy failed!");
+ goto Error;
+ }
+
+Error:
+ cudaFree(dev_c);
+ cudaFree(dev_a);
+ cudaFree(dev_b);
+
+ return cudaStatus;
+}
diff --git a/tests/projects/cuda/shared/src/main.cu b/tests/projects/cuda/shared/src/main.cu
new file mode 100644
index 000000000..a33ec5c3e
--- /dev/null
+++ b/tests/projects/cuda/shared/src/main.cu
@@ -0,0 +1,34 @@
+
+#include "cuda_runtime.h"
+#include <stdio.h>
+#include <lib.cuh>
+
+int main()
+{
+ const int arraySize = 5;
+ const int a[arraySize] = {1, 2, 3, 4, 5};
+ const int b[arraySize] = {10, 20, 30, 40, 50};
+ int c[arraySize] = {0};
+
+ // Add vectors in parallel.
+ cudaError_t cudaStatus = addWithCuda(c, a, b, arraySize);
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "addWithCuda failed!");
+ return 1;
+ }
+
+ printf("{1,2,3,4,5} + {10,20,30,40,50} = {%d,%d,%d,%d,%d}\n",
+ c[0], c[1], c[2], c[3], c[4]);
+
+ // cudaDeviceReset must be called before exiting in order for profiling and
+ // tracing tools such as Nsight and Visual Profiler to show complete traces.
+ cudaStatus = cudaDeviceReset();
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaDeviceReset failed!");
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/tests/projects/cuda/shared/xmake.lua b/tests/projects/cuda/shared/xmake.lua
new file mode 100644
index 000000000..e96999a13
--- /dev/null
+++ b/tests/projects/cuda/shared/xmake.lua
@@ -0,0 +1,22 @@
+
+-- add modes: debug and release
+add_rules("mode.debug", "mode.release")
+
+-- generate PTX code for the virtual architecture to guarantee compatibility
+add_cugencodes("compute_30")
+
+-- define target
+target("lib")
+
+ -- set kind
+ set_kind("shared")
+
+ -- add files
+ add_files("src/lib.cu")
+
+ add_includedirs("inc", {public = true})
+
+target("bin")
+ add_deps("lib")
+ set_kind("binary")
+ add_files("src/main.cu")
diff --git a/tests/projects/cuda/static/inc/lib.cuh b/tests/projects/cuda/static/inc/lib.cuh
new file mode 100644
index 000000000..35255e31e
--- /dev/null
+++ b/tests/projects/cuda/static/inc/lib.cuh
@@ -0,0 +1,3 @@
+#pragma once
+
+__global__ void addKernel(int *c, const int *a, const int *b); \ No newline at end of file
diff --git a/tests/projects/cuda/static/src/lib.cu b/tests/projects/cuda/static/src/lib.cu
new file mode 100644
index 000000000..a5f054354
--- /dev/null
+++ b/tests/projects/cuda/static/src/lib.cu
@@ -0,0 +1,7 @@
+#include <lib.cuh>
+
+__global__ void addKernel(int *c, const int *a, const int *b)
+{
+ int i = threadIdx.x;
+ c[i] = a[i] + b[i];
+} \ No newline at end of file
diff --git a/tests/projects/cuda/static/src/main.cu b/tests/projects/cuda/static/src/main.cu
new file mode 100644
index 000000000..32844cd56
--- /dev/null
+++ b/tests/projects/cuda/static/src/main.cu
@@ -0,0 +1,127 @@
+
+#include "cuda_runtime.h"
+#include "device_launch_parameters.h"
+
+#include <stdio.h>
+#include <lib.cuh>
+
+cudaError_t addWithCuda(int *c, const int *a, const int *b, unsigned int size);
+
+int main()
+{
+ const int arraySize = 5;
+ const int a[arraySize] = {1, 2, 3, 4, 5};
+ const int b[arraySize] = {10, 20, 30, 40, 50};
+ int c[arraySize] = {0};
+
+ // Add vectors in parallel.
+ cudaError_t cudaStatus = addWithCuda(c, a, b, arraySize);
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "addWithCuda failed!");
+ return 1;
+ }
+
+ printf("{1,2,3,4,5} + {10,20,30,40,50} = {%d,%d,%d,%d,%d}\n",
+ c[0], c[1], c[2], c[3], c[4]);
+
+ // cudaDeviceReset must be called before exiting in order for profiling and
+ // tracing tools such as Nsight and Visual Profiler to show complete traces.
+ cudaStatus = cudaDeviceReset();
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaDeviceReset failed!");
+ return 1;
+ }
+
+ return 0;
+}
+
+// Helper function for using CUDA to add vectors in parallel.
+cudaError_t addWithCuda(int *c, const int *a, const int *b, unsigned int size)
+{
+ int *dev_a = 0;
+ int *dev_b = 0;
+ int *dev_c = 0;
+ cudaError_t cudaStatus;
+
+ // Choose which GPU to run on, change this on a multi-GPU system.
+ cudaStatus = cudaSetDevice(0);
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaSetDevice failed! Do you have a CUDA-capable GPU installed?");
+ goto Error;
+ }
+
+ // Allocate GPU buffers for three vectors (two input, one output) .
+ cudaStatus = cudaMalloc((void **)&dev_c, size * sizeof(int));
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaMalloc failed!");
+ goto Error;
+ }
+
+ cudaStatus = cudaMalloc((void **)&dev_a, size * sizeof(int));
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaMalloc failed!");
+ goto Error;
+ }
+
+ cudaStatus = cudaMalloc((void **)&dev_b, size * sizeof(int));
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaMalloc failed!");
+ goto Error;
+ }
+
+ // Copy input vectors from host memory to GPU buffers.
+ cudaStatus = cudaMemcpy(dev_a, a, size * sizeof(int), cudaMemcpyHostToDevice);
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaMemcpy failed!");
+ goto Error;
+ }
+
+ cudaStatus = cudaMemcpy(dev_b, b, size * sizeof(int), cudaMemcpyHostToDevice);
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaMemcpy failed!");
+ goto Error;
+ }
+
+ // Launch a kernel on the GPU with one thread for each element.
+ addKernel<<<1, size>>>(dev_c, dev_a, dev_b);
+
+ // Check for any errors launching the kernel
+ cudaStatus = cudaGetLastError();
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "addKernel launch failed: %s\n", cudaGetErrorString(cudaStatus));
+ goto Error;
+ }
+
+ // cudaDeviceSynchronize waits for the kernel to finish, and returns
+ // any errors encountered during the launch.
+ cudaStatus = cudaDeviceSynchronize();
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaDeviceSynchronize returned error code %d after launching addKernel!\n", cudaStatus);
+ goto Error;
+ }
+
+ // Copy output vector from GPU buffer to host memory.
+ cudaStatus = cudaMemcpy(c, dev_c, size * sizeof(int), cudaMemcpyDeviceToHost);
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaMemcpy failed!");
+ goto Error;
+ }
+
+Error:
+ cudaFree(dev_c);
+ cudaFree(dev_a);
+ cudaFree(dev_b);
+
+ return cudaStatus;
+}
diff --git a/tests/projects/cuda/static/xmake.lua b/tests/projects/cuda/static/xmake.lua
new file mode 100644
index 000000000..55e1e5fd9
--- /dev/null
+++ b/tests/projects/cuda/static/xmake.lua
@@ -0,0 +1,24 @@
+
+-- add modes: debug and release
+add_rules("mode.debug", "mode.release")
+
+-- generate PTX code for the virtual architecture to guarantee compatibility
+add_cugencodes("compute_30")
+
+-- define target
+target("lib")
+
+ -- set kind
+ set_kind("static")
+
+ add_cuflags("-rdc=true")
+
+ add_includedirs("inc", {public = true})
+
+ -- add files
+ add_files("src/lib.cu")
+
+target("bin")
+ add_deps("lib")
+ set_kind("binary")
+ add_files("src/main.cu")
diff --git a/xmake/scripts/gitignore b/xmake/scripts/gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/scripts/gitignore
+++ b/xmake/scripts/gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/c++/console/project/.gitignore b/xmake/templates/c++/console/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/c++/console/project/.gitignore
+++ b/xmake/templates/c++/console/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/c++/console_qt/project/.gitignore b/xmake/templates/c++/console_qt/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/c++/console_qt/project/.gitignore
+++ b/xmake/templates/c++/console_qt/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/c++/console_tbox/project/.gitignore b/xmake/templates/c++/console_tbox/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/c++/console_tbox/project/.gitignore
+++ b/xmake/templates/c++/console_tbox/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/c++/shared_library/project/.gitignore b/xmake/templates/c++/shared_library/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/c++/shared_library/project/.gitignore
+++ b/xmake/templates/c++/shared_library/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/c++/shared_library_qt/project/.gitignore b/xmake/templates/c++/shared_library_qt/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/c++/shared_library_qt/project/.gitignore
+++ b/xmake/templates/c++/shared_library_qt/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/c++/shared_library_tbox/project/.gitignore b/xmake/templates/c++/shared_library_tbox/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/c++/shared_library_tbox/project/.gitignore
+++ b/xmake/templates/c++/shared_library_tbox/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/c++/static_library/project/.gitignore b/xmake/templates/c++/static_library/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/c++/static_library/project/.gitignore
+++ b/xmake/templates/c++/static_library/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/c++/static_library_qt/project/.gitignore b/xmake/templates/c++/static_library_qt/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/c++/static_library_qt/project/.gitignore
+++ b/xmake/templates/c++/static_library_qt/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/c++/static_library_tbox/project/.gitignore b/xmake/templates/c++/static_library_tbox/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/c++/static_library_tbox/project/.gitignore
+++ b/xmake/templates/c++/static_library_tbox/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/c/console/project/.gitignore b/xmake/templates/c/console/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/c/console/project/.gitignore
+++ b/xmake/templates/c/console/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/c/console_tbox/.gitignore b/xmake/templates/c/console_tbox/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/c/console_tbox/.gitignore
+++ b/xmake/templates/c/console_tbox/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/c/shared_library/project/.gitignore b/xmake/templates/c/shared_library/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/c/shared_library/project/.gitignore
+++ b/xmake/templates/c/shared_library/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/c/shared_library_tbox/project/.gitignore b/xmake/templates/c/shared_library_tbox/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/c/shared_library_tbox/project/.gitignore
+++ b/xmake/templates/c/shared_library_tbox/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/c/static_library/project/.gitignore b/xmake/templates/c/static_library/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/c/static_library/project/.gitignore
+++ b/xmake/templates/c/static_library/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/c/static_library_tbox/project/.gitignore b/xmake/templates/c/static_library_tbox/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/c/static_library_tbox/project/.gitignore
+++ b/xmake/templates/c/static_library_tbox/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/cuda/console/project/.gitignore b/xmake/templates/cuda/console/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/cuda/console/project/.gitignore
+++ b/xmake/templates/cuda/console/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/cuda/console/project/xmake.lua b/xmake/templates/cuda/console/project/xmake.lua
index 1c1c48cfb..226488448 100644
--- a/xmake/templates/cuda/console/project/xmake.lua
+++ b/xmake/templates/cuda/console/project/xmake.lua
@@ -8,6 +8,11 @@ target("[targetname]")
-- set kind
set_kind("binary")
+ -- generate relocatable device code for device linker of dependents
+ -- if no __device__ and __global__ functions will be called cross file,
+ -- this instruction could be omitted
+ -- add_cuflags("-rdc=true")
+
-- add files
add_files("src/*.cu")
diff --git a/xmake/templates/cuda/shared_library/project/.gitignore b/xmake/templates/cuda/shared_library/project/.gitignore
new file mode 100644
index 000000000..173fb6eaf
--- /dev/null
+++ b/xmake/templates/cuda/shared_library/project/.gitignore
@@ -0,0 +1,2 @@
+.xmake
+build
diff --git a/xmake/templates/cuda/shared_library/project/inc/lib.cuh b/xmake/templates/cuda/shared_library/project/inc/lib.cuh
new file mode 100644
index 000000000..5565e3eb5
--- /dev/null
+++ b/xmake/templates/cuda/shared_library/project/inc/lib.cuh
@@ -0,0 +1,22 @@
+#pragma once
+
+#include "cuda_runtime.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#if defined(_WIN32)
+#define __export __declspec(dllexport)
+#elif defined(__GNUC__) && ((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))
+#define __export __attribute__((visibility("default")))
+#else
+#define __export
+#endif
+
+ __export cudaError_t addWithCuda(int *c, const int *a, const int *b, unsigned int size);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/xmake/templates/cuda/shared_library/project/src/lib.cu b/xmake/templates/cuda/shared_library/project/src/lib.cu
new file mode 100644
index 000000000..d2cff9ac2
--- /dev/null
+++ b/xmake/templates/cuda/shared_library/project/src/lib.cu
@@ -0,0 +1,98 @@
+#include <lib.cuh>
+#include <stdio.h>
+#include "device_launch_parameters.h"
+
+__global__ void addKernel(int *c, const int *a, const int *b)
+{
+ int i = threadIdx.x;
+ c[i] = a[i] + b[i];
+}
+
+// Helper function for using CUDA to add vectors in parallel.
+cudaError_t addWithCuda(int *c, const int *a, const int *b, unsigned int size)
+{
+ int *dev_a = 0;
+ int *dev_b = 0;
+ int *dev_c = 0;
+ cudaError_t cudaStatus;
+
+ // Choose which GPU to run on, change this on a multi-GPU system.
+ cudaStatus = cudaSetDevice(0);
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaSetDevice failed! Do you have a CUDA-capable GPU installed?");
+ goto Error;
+ }
+
+ // Allocate GPU buffers for three vectors (two input, one output) .
+ cudaStatus = cudaMalloc((void **)&dev_c, size * sizeof(int));
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaMalloc failed!");
+ goto Error;
+ }
+
+ cudaStatus = cudaMalloc((void **)&dev_a, size * sizeof(int));
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaMalloc failed!");
+ goto Error;
+ }
+
+ cudaStatus = cudaMalloc((void **)&dev_b, size * sizeof(int));
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaMalloc failed!");
+ goto Error;
+ }
+
+ // Copy input vectors from host memory to GPU buffers.
+ cudaStatus = cudaMemcpy(dev_a, a, size * sizeof(int), cudaMemcpyHostToDevice);
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaMemcpy failed!");
+ goto Error;
+ }
+
+ cudaStatus = cudaMemcpy(dev_b, b, size * sizeof(int), cudaMemcpyHostToDevice);
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaMemcpy failed!");
+ goto Error;
+ }
+
+ // Launch a kernel on the GPU with one thread for each element.
+ addKernel<<<1, size>>>(dev_c, dev_a, dev_b);
+
+ // Check for any errors launching the kernel
+ cudaStatus = cudaGetLastError();
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "addKernel launch failed: %s\n", cudaGetErrorString(cudaStatus));
+ goto Error;
+ }
+
+ // cudaDeviceSynchronize waits for the kernel to finish, and returns
+ // any errors encountered during the launch.
+ cudaStatus = cudaDeviceSynchronize();
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaDeviceSynchronize returned error code %d after launching addKernel!\n", cudaStatus);
+ goto Error;
+ }
+
+ // Copy output vector from GPU buffer to host memory.
+ cudaStatus = cudaMemcpy(c, dev_c, size * sizeof(int), cudaMemcpyDeviceToHost);
+ if (cudaStatus != cudaSuccess)
+ {
+ fprintf(stderr, "cudaMemcpy failed!");
+ goto Error;
+ }
+
+Error:
+ cudaFree(dev_c);
+ cudaFree(dev_a);
+ cudaFree(dev_b);
+
+ return cudaStatus;
+}
diff --git a/xmake/templates/cuda/shared_library/project/xmake.lua b/xmake/templates/cuda/shared_library/project/xmake.lua
new file mode 100644
index 000000000..8ffb8b7e9
--- /dev/null
+++ b/xmake/templates/cuda/shared_library/project/xmake.lua
@@ -0,0 +1,35 @@
+
+-- add modes: debug and release
+add_rules("mode.debug", "mode.release")
+
+-- define target
+target("[targetname]")
+
+ -- set kind
+ set_kind("shared")
+
+ -- add modes: debug and release
+ add_rules("mode.debug", "mode.release")
+
+ -- add include dirs
+ add_includedirs("inc")
+
+ -- generate relocatable device code for device linker of dependents
+ -- if no __device__ and __global__ functions will be called cross file,
+ -- this instruction could be omitted
+ -- add_cuflags("-rdc=true")
+
+ -- add files
+ add_files("src/**.cu")
+
+ -- generate SASS code for SM architecture of current host
+ add_cugencodes("native")
+
+ -- generate PTX code for the virtual architecture to guarantee compatibility
+ add_cugencodes("compute_30")
+
+ -- -- generate SASS code for each SM architecture
+ -- add_cugencodes("sm_30", "sm_35", "sm_37", "sm_50", "sm_52", "sm_60", "sm_61", "sm_70", "sm_75")
+
+ -- -- generate PTX code from the highest SM architecture to guarantee forward-compatibility
+ -- add_cugencodes("compute_75")
diff --git a/xmake/templates/cuda/shared_library/template.lua b/xmake/templates/cuda/shared_library/template.lua
new file mode 100644
index 000000000..6df920968
--- /dev/null
+++ b/xmake/templates/cuda/shared_library/template.lua
@@ -0,0 +1,14 @@
+-- set name
+set_name("shared")
+
+-- set description
+set_description("The Shared Library")
+
+-- set project directory
+set_projectdir("project")
+
+-- add macros
+add_macros("targetname", "$(targetname)")
+
+-- add macro files
+add_macrofiles("xmake.lua") \ No newline at end of file
diff --git a/xmake/templates/cuda/static_library/project/.gitignore b/xmake/templates/cuda/static_library/project/.gitignore
new file mode 100644
index 000000000..173fb6eaf
--- /dev/null
+++ b/xmake/templates/cuda/static_library/project/.gitignore
@@ -0,0 +1,2 @@
+.xmake
+build
diff --git a/xmake/templates/cuda/static_library/project/inc/lib.cuh b/xmake/templates/cuda/static_library/project/inc/lib.cuh
new file mode 100644
index 000000000..35255e31e
--- /dev/null
+++ b/xmake/templates/cuda/static_library/project/inc/lib.cuh
@@ -0,0 +1,3 @@
+#pragma once
+
+__global__ void addKernel(int *c, const int *a, const int *b); \ No newline at end of file
diff --git a/xmake/templates/cuda/static_library/project/src/lib.cu b/xmake/templates/cuda/static_library/project/src/lib.cu
new file mode 100644
index 000000000..a5f054354
--- /dev/null
+++ b/xmake/templates/cuda/static_library/project/src/lib.cu
@@ -0,0 +1,7 @@
+#include <lib.cuh>
+
+__global__ void addKernel(int *c, const int *a, const int *b)
+{
+ int i = threadIdx.x;
+ c[i] = a[i] + b[i];
+} \ No newline at end of file
diff --git a/xmake/templates/cuda/static_library/project/xmake.lua b/xmake/templates/cuda/static_library/project/xmake.lua
new file mode 100644
index 000000000..be08da0da
--- /dev/null
+++ b/xmake/templates/cuda/static_library/project/xmake.lua
@@ -0,0 +1,35 @@
+
+-- add modes: debug and release
+add_rules("mode.debug", "mode.release")
+
+-- define target
+target("[targetname]")
+
+ -- set kind
+ set_kind("static")
+
+ -- add modes: debug and release
+ add_rules("mode.debug", "mode.release")
+
+ -- add include dirs
+ add_includedirs("inc")
+
+ -- generate relocatable device code for device linker of dependents
+ -- if no __device__ and __global__ functions will be called cross file or be exported,
+ -- this instruction could be omitted
+ add_cuflags("-rdc=true")
+
+ -- add files
+ add_files("src/**.cu")
+
+ -- generate SASS code for SM architecture of current host
+ add_cugencodes("native")
+
+ -- generate PTX code for the virtual architecture to guarantee compatibility
+ add_cugencodes("compute_30")
+
+ -- -- generate SASS code for each SM architecture
+ -- add_cugencodes("sm_30", "sm_35", "sm_37", "sm_50", "sm_52", "sm_60", "sm_61", "sm_70", "sm_75")
+
+ -- -- generate PTX code from the highest SM architecture to guarantee forward-compatibility
+ -- add_cugencodes("compute_75")
diff --git a/xmake/templates/cuda/static_library/template.lua b/xmake/templates/cuda/static_library/template.lua
new file mode 100644
index 000000000..ff9c56179
--- /dev/null
+++ b/xmake/templates/cuda/static_library/template.lua
@@ -0,0 +1,14 @@
+-- set name
+set_name("static")
+
+-- set description
+set_description("The Static Library")
+
+-- set project directory
+set_projectdir("project")
+
+-- add macros
+add_macros("targetname", "$(targetname)")
+
+-- add macro files
+add_macrofiles("xmake.lua") \ No newline at end of file
diff --git a/xmake/templates/dlang/console/project/.gitignore b/xmake/templates/dlang/console/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/dlang/console/project/.gitignore
+++ b/xmake/templates/dlang/console/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/dlang/shared_library/project/.gitignore b/xmake/templates/dlang/shared_library/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/dlang/shared_library/project/.gitignore
+++ b/xmake/templates/dlang/shared_library/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/dlang/static_library/project/.gitignore b/xmake/templates/dlang/static_library/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/dlang/static_library/project/.gitignore
+++ b/xmake/templates/dlang/static_library/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/go/console/project/.gitignore b/xmake/templates/go/console/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/go/console/project/.gitignore
+++ b/xmake/templates/go/console/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/go/static_library/project/.gitignore b/xmake/templates/go/static_library/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/go/static_library/project/.gitignore
+++ b/xmake/templates/go/static_library/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/objc++/console/project/.gitignore b/xmake/templates/objc++/console/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/objc++/console/project/.gitignore
+++ b/xmake/templates/objc++/console/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/objc/console/project/.gitignore b/xmake/templates/objc/console/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/objc/console/project/.gitignore
+++ b/xmake/templates/objc/console/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/rust/console/project/.gitignore b/xmake/templates/rust/console/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/rust/console/project/.gitignore
+++ b/xmake/templates/rust/console/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/rust/static_library/project/.gitignore b/xmake/templates/rust/static_library/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/rust/static_library/project/.gitignore
+++ b/xmake/templates/rust/static_library/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+
diff --git a/xmake/templates/swift/console/project/.gitignore b/xmake/templates/swift/console/project/.gitignore
index 08ffbbd04..b849bb8f7 100644
--- a/xmake/templates/swift/console/project/.gitignore
+++ b/xmake/templates/swift/console/project/.gitignore
@@ -1,22 +1,8 @@
-*.a
-*.o
-*.exe
-*.obj
-*.dll
-*.lib
-*.out
-*.suo
-*~
-*.swp
-*.swo
-*.bak
-*.orig
-*.pdb
-*.idb
-.svn
-.DS_Store
-.xmake
-*.gch
-*.gch.d
-gmon.out
-build
+# xmake temp files
+.xmake/
+# build result files
+build/
+
+.DS_Store/
+
+