Skip to content
Snippets Groups Projects
Commit e8099572 authored by Lars Kanis's avatar Lars Kanis
Browse files

Support parallel execution with drake for cross compilation and packaging

parent 8fb2cba6
No related branches found
No related tags found
No related merge requests found
...@@ -5,6 +5,18 @@ require 'rake/extensiontask' ...@@ -5,6 +5,18 @@ require 'rake/extensiontask'
require './lib/fox16/version.rb' require './lib/fox16/version.rb'
load 'Rakefile.cross' load 'Rakefile.cross'
# Use forked process for chdir'ed environment, to allow parallel execution with drake
module FileUtils
alias old_fileutils_cd cd
def cd(dir, options={}, &block)
raise "forked_chdir called without block" unless block_given?
Process.waitpid(fork{ old_fileutils_cd(dir, options, &block) })
end
module_function :cd
alias chdir cd
module_function :chdir
end
# Some constants we'll need # Some constants we'll need
PKG_VERSION = Fox.fxrubyversion PKG_VERSION = Fox.fxrubyversion
FXSCINTILLA_INSTALL_DIR = Pathname( "build/builds/fxscintilla-#{LIBFXSCINTILLA_VERSION}" ).expand_path FXSCINTILLA_INSTALL_DIR = Pathname( "build/builds/fxscintilla-#{LIBFXSCINTILLA_VERSION}" ).expand_path
......
Rakefile.cross 100644 → 100755
...@@ -93,7 +93,6 @@ CLEAN.include( STATIC_BUILDDIR.to_s ) ...@@ -93,7 +93,6 @@ CLEAN.include( STATIC_BUILDDIR.to_s )
### C R O S S - C O M P I L A T I O N - T A S K S ### C R O S S - C O M P I L A T I O N - T A S K S
##################################################################### #####################################################################
directory STATIC_SOURCESDIR.to_s directory STATIC_SOURCESDIR.to_s
# #
...@@ -123,7 +122,7 @@ LIBZ_ENV = [ ...@@ -123,7 +122,7 @@ LIBZ_ENV = [
# generate the makefile in a clean build location # generate the makefile in a clean build location
file LIBZ_MAKEFILE => [STATIC_LIBZ_BUILDDIR] do |t| file LIBZ_MAKEFILE => [STATIC_LIBZ_BUILDDIR] do |t|
Dir.chdir( STATIC_LIBZ_BUILDDIR ) do chdir( STATIC_LIBZ_BUILDDIR ) do
options = [ options = [
"--prefix=#{STATIC_INSTALLDIR}", "--prefix=#{STATIC_INSTALLDIR}",
] ]
...@@ -135,7 +134,7 @@ end ...@@ -135,7 +134,7 @@ end
# generate the makefile in a clean build location # generate the makefile in a clean build location
task LIBZ_A => LIBZ_MAKEFILE do |t| task LIBZ_A => LIBZ_MAKEFILE do |t|
Dir.chdir( STATIC_LIBZ_BUILDDIR ) do chdir( STATIC_LIBZ_BUILDDIR ) do
sh "make -j#{NUM_CPUS} install 'LDSHAREDLIBC=-lmsvcrt'" sh "make -j#{NUM_CPUS} install 'LDSHAREDLIBC=-lmsvcrt'"
end end
end end
...@@ -164,7 +163,7 @@ LIBPNG_ENV = [ ...@@ -164,7 +163,7 @@ LIBPNG_ENV = [
] ]
# generate the makefile in a clean build location # generate the makefile in a clean build location
file LIBPNG_MAKEFILE => [STATIC_LIBPNG_BUILDDIR, LIBZ_A] do |t| file LIBPNG_MAKEFILE => [STATIC_LIBPNG_BUILDDIR, LIBZ_A] do |t|
Dir.chdir( STATIC_LIBPNG_BUILDDIR ) do chdir( STATIC_LIBPNG_BUILDDIR ) do
options = [ options = [
"--target=#{CROSS_PREFIX}", "--target=#{CROSS_PREFIX}",
"--host=#{CROSS_PREFIX}", "--host=#{CROSS_PREFIX}",
...@@ -180,7 +179,7 @@ end ...@@ -180,7 +179,7 @@ end
# generate the makefile in a clean build location # generate the makefile in a clean build location
task LIBPNG_A => [LIBPNG_MAKEFILE, LIBZ_A] do |t| task LIBPNG_A => [LIBPNG_MAKEFILE, LIBZ_A] do |t|
Dir.chdir( STATIC_LIBPNG_BUILDDIR ) do chdir( STATIC_LIBPNG_BUILDDIR ) do
sh "make -j#{NUM_CPUS} install" sh "make -j#{NUM_CPUS} install"
end end
end end
...@@ -205,7 +204,7 @@ end ...@@ -205,7 +204,7 @@ end
# generate the makefile in a clean build location # generate the makefile in a clean build location
file LIBJPEG_MAKEFILE => STATIC_LIBJPEG_BUILDDIR do |t| file LIBJPEG_MAKEFILE => STATIC_LIBJPEG_BUILDDIR do |t|
Dir.chdir( STATIC_LIBJPEG_BUILDDIR ) do chdir( STATIC_LIBJPEG_BUILDDIR ) do
options = [ options = [
"--target=#{CROSS_PREFIX}", "--target=#{CROSS_PREFIX}",
"--host=#{CROSS_PREFIX}", "--host=#{CROSS_PREFIX}",
...@@ -222,7 +221,7 @@ end ...@@ -222,7 +221,7 @@ end
# build libjpeg.a # build libjpeg.a
task LIBJPEG_A => [LIBJPEG_MAKEFILE] do |t| task LIBJPEG_A => [LIBJPEG_MAKEFILE] do |t|
Dir.chdir( STATIC_LIBJPEG_BUILDDIR ) do chdir( STATIC_LIBJPEG_BUILDDIR ) do
sh "make -j#{NUM_CPUS} install" sh "make -j#{NUM_CPUS} install"
end end
end end
...@@ -252,7 +251,7 @@ LIBTIFF_ENV = [ ...@@ -252,7 +251,7 @@ LIBTIFF_ENV = [
# generate the makefile in a clean build location # generate the makefile in a clean build location
file LIBTIFF_MAKEFILE => [STATIC_LIBTIFF_BUILDDIR, LIBJPEG_A, LIBZ_A] do |t| file LIBTIFF_MAKEFILE => [STATIC_LIBTIFF_BUILDDIR, LIBJPEG_A, LIBZ_A] do |t|
Dir.chdir( STATIC_LIBTIFF_BUILDDIR ) do chdir( STATIC_LIBTIFF_BUILDDIR ) do
options = [ options = [
"--target=#{CROSS_PREFIX}", "--target=#{CROSS_PREFIX}",
"--host=#{CROSS_PREFIX}", "--host=#{CROSS_PREFIX}",
...@@ -272,7 +271,7 @@ end ...@@ -272,7 +271,7 @@ end
# build libtiff.a # build libtiff.a
task LIBTIFF_A => [LIBTIFF_MAKEFILE] do |t| task LIBTIFF_A => [LIBTIFF_MAKEFILE] do |t|
Dir.chdir( STATIC_LIBTIFF_BUILDDIR ) do chdir( STATIC_LIBTIFF_BUILDDIR ) do
sh "make -j#{NUM_CPUS} install" sh "make -j#{NUM_CPUS} install"
end end
end end
...@@ -303,7 +302,7 @@ LIBFOX_ENV = [ ...@@ -303,7 +302,7 @@ LIBFOX_ENV = [
# generate the makefile in a clean build location # generate the makefile in a clean build location
file LIBFOX_MAKEFILE => [STATIC_LIBFOX_BUILDDIR, LIBJPEG_A, LIBZ_A] do |t| file LIBFOX_MAKEFILE => [STATIC_LIBFOX_BUILDDIR, LIBJPEG_A, LIBZ_A] do |t|
Dir.chdir( STATIC_LIBFOX_BUILDDIR ) do chdir( STATIC_LIBFOX_BUILDDIR ) do
options = [ options = [
"--target=#{CROSS_PREFIX}", "--target=#{CROSS_PREFIX}",
"--host=#{CROSS_PREFIX}", "--host=#{CROSS_PREFIX}",
...@@ -321,7 +320,7 @@ end ...@@ -321,7 +320,7 @@ end
# build libfox.a # build libfox.a
task LIBFOX_A => [LIBFOX_MAKEFILE] do |t| task LIBFOX_A => [LIBFOX_MAKEFILE] do |t|
Dir.chdir( STATIC_LIBFOX_BUILDDIR ) do chdir( STATIC_LIBFOX_BUILDDIR ) do
sh "make -j#{NUM_CPUS} #{FOX_ENV.join(" ")} install" sh "make -j#{NUM_CPUS} #{FOX_ENV.join(" ")} install"
end end
end end
...@@ -354,8 +353,8 @@ FOX_ENV = [ ...@@ -354,8 +353,8 @@ FOX_ENV = [
] ]
# generate the makefile in a clean build location # generate the makefile in a clean build location
file LIBFXSCINTILLA_MAKEFILE => [STATIC_LIBFXSCINTILLA_BUILDDIR, LIBJPEG_A, LIBZ_A] do |t| file LIBFXSCINTILLA_MAKEFILE => [STATIC_LIBFXSCINTILLA_BUILDDIR, LIBFOX_A] do |t|
Dir.chdir( STATIC_LIBFXSCINTILLA_BUILDDIR ) do chdir( STATIC_LIBFXSCINTILLA_BUILDDIR ) do
options = [ options = [
"--target=#{CROSS_PREFIX}", "--target=#{CROSS_PREFIX}",
"--host=#{CROSS_PREFIX}", "--host=#{CROSS_PREFIX}",
...@@ -371,7 +370,7 @@ end ...@@ -371,7 +370,7 @@ end
# build libfxscintilla.a # build libfxscintilla.a
task LIBFXSCINTILLA_A => [LIBFXSCINTILLA_MAKEFILE] do |t| task LIBFXSCINTILLA_A => [LIBFXSCINTILLA_MAKEFILE] do |t|
Dir.chdir( STATIC_LIBFXSCINTILLA_BUILDDIR ) do chdir( STATIC_LIBFXSCINTILLA_BUILDDIR ) do
sh "make -j#{NUM_CPUS} #{FOX_ENV.join(" ")} install" sh "make -j#{NUM_CPUS} #{FOX_ENV.join(" ")} install"
end end
end end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment