summaryrefslogtreecommitdiff
path: root/Rakefile
diff options
context:
space:
mode:
Diffstat (limited to 'Rakefile')
-rw-r--r--Rakefile72
1 files changed, 72 insertions, 0 deletions
diff --git a/Rakefile b/Rakefile
new file mode 100644
index 0000000..48ecab3
--- /dev/null
+++ b/Rakefile
@@ -0,0 +1,72 @@
+# Copyright 2022 Frederico de Oliveira Linhares
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+require 'rake/clean'
+require 'rake/loaders/makefile'
+
+OBJ = 'candy_gear'
+
+DATA_DIR = '/usr/local/share/candy_gear'
+
+C_FILES = FileList[
+ 'src/*.c'
+]
+C_OBJS = C_FILES.ext('.o')
+
+CPP_FILES = FileList[
+ 'src/*.cpp'
+]
+CPP_OBJS = CPP_FILES.ext('.o')
+
+OBJ_FILES = C_OBJS + CPP_OBJS
+
+RB_LIBS = FileList[
+ 'lib/*.rb'
+]
+
+LIBRARIES = [
+ 'SDL2',
+ 'SDL2_image',
+ 'SDL2_mixer',
+ 'SDL2_ttf',
+ 'm',
+ 'mruby',
+ 'yaml-cpp'
+]
+
+task :doc do
+ `doxygen Doxyfile`
+end
+
+rule '.o' => ['.c'] do |t|
+ `gcc -c -std=c99 #{t.source} -o #{t.name}`
+end
+
+rule '.o' => ['.cpp'] do |t|
+ `g++ -c -std=c++17 #{t.source} -o #{t.name}`
+end
+
+task build: OBJ_FILES do
+ libs = LIBRARIES.inject('') {_1 + "-l#{_2} "}
+
+ `g++ -o #{OBJ} #{OBJ_FILES} #{libs}`
+end
+
+task :install do
+ `install #{OBJ} /usr/local/bin`
+ `install -d #{DATA_DIR}/lib`
+ RB_LIBS.each {`install #{_1} #{DATA_DIR}/lib`}
+end
+
+task default: %[build]