# 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' VERSION = '0.1.0' DATA_DIR = '/usr/local/share/candy_gear' CPP_H_FILES = FileList[ 'src/**/*.hpp' ] CPP_FILES = FileList[ 'src/**/*.cpp' ] CPP_OBJS = CPP_FILES.ext('.o') RB_LIBS = FileList[ 'lib/*.rb' ] SPV_FILES = [ 'glsl/vert.spv', 'glsl/frag.spv' ] LIBRARIES = [ 'SDL2', 'SDL2_image', 'SDL2_mixer', 'm', 'mruby', 'vulkan', 'yaml-cpp' ] CLEAN.include( FileList[ 'src/**/*.o' ] ) task :doc do `doxygen Doxyfile` end rule '.o' => ['.cpp'] do |t| `g++ -D DEBUG=1 -c -std=c++17 #{t.source} -o #{t.name}` end task :pkg do name = "#{OBJ}-#{VERSION}" files = FileList[ 'CODE_OF_CONDUCT.markdown', 'Doxyfile', 'LICENSE.txt', 'Rakefile', 'README.markdown' ] + CPP_H_FILES + CPP_FILES + RB_LIBS `mkdir -p pkg` `tar -czvf pkg/#{name}.tar.gz --transform 's,^,#{name}/,' #{files}` end task :shaders do system('glslangValidator -V glsl/shader.vert -o glsl/vert.spv') and system('glslangValidator -V glsl/shader.frag -o glsl/frag.spv') end task build: CPP_OBJS do libs = LIBRARIES.inject('') {_1 + "-l#{_2} "} `g++ -o #{OBJ} #{CPP_OBJS} #{libs}` end task :install do destdir = ENV['DESTDIR'] || '' # Install engine `install -d #{destdir}/usr/local/bin` `install #{OBJ} #{destdir}/usr/local/bin` # Install shaders `install -d #{destdir}#{DATA_DIR}/glsl` SPV_FILES.each {`install #{_1} #{destdir}#{DATA_DIR}/glsl`} # Install libs `install -d #{destdir}#{DATA_DIR}/lib` RB_LIBS.each {`install #{_1} #{destdir}#{DATA_DIR}/lib`} end task default: %[build]