rakelib/setup.rake
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sat, 10 Dec 2016 20:44:26 +0000
changeset 98 e8a75e807ff2
parent 97 33cf3197acb5
child 101 32f9287b419a
permissions -rw-r--r--
Oops, make sure `REPOSITORYSET` value is written to `config.rb`
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
defined? BUILD_DIR or BUILD_DIR = 'build'
7
b6fe3a90f6e0 Added `zip()` & `unzip()` extensions to easily create / extract archives from build scripts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
     2
defined? BUILD_ID or BUILD_ID = ENV['BUILD_NUMBER'] ? "build#{ENV['BUILD_NUMBER']}" : "#{Time.now.strftime("%Y%m%d")}"
4
48ec8a59ced4 Renamed `dist` target to `install`. Added new target `artifacts` (mainly) for Jenkins builds.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
     3
defined? ARTIFACTS_DIR or ARTIFACTS_DIR = 'artifacts'
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
defined? REPORT_DIR or REPORT_DIR = 'reports'
77
570ae23d0ce2 Specify (nonstandard) temporary directory when running tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
     5
defined? TMP_DIR or TMP_DIR = 'tmp'
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
defined? DEBUG or DEBUG = nil
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
if win32?
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
  ENV['BCB'] = 'C:\\Borland\\BCC55' if not ENV['BCB']
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
18
647bee28090f Write default configuration to `config.rb` rather than to `.config.rake`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    12
if File.exist? 'config.rb'
647bee28090f Write default configuration to `config.rb` rather than to `.config.rake`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    13
  load 'config.rb'
3
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    14
end
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    15
7
b6fe3a90f6e0 Added `zip()` & `unzip()` extensions to easily create / extract archives from build scripts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    16
defined? PROJECT or PROJECT = 'stx:jv-branch'
b6fe3a90f6e0 Added `zip()` & `unzip()` extensions to easily create / extract archives from build scripts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    17
3
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    18
if not defined? ARCH then
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    19
  if ENV.has_key? 'ARCH' then
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    20
    ARCH = ENV['ARCH']
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    21
  else
33
fe75297c59be Fixed architecture detection on 32bit systems
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    22
    arch = RbConfig::CONFIG['host_cpu']
fe75297c59be Fixed architecture detection on 32bit systems
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    23
    case arch
fe75297c59be Fixed architecture detection on 32bit systems
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    24
    when "i586"
fe75297c59be Fixed architecture detection on 32bit systems
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    25
      ARCH = 'i386'
fe75297c59be Fixed architecture detection on 32bit systems
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    26
    when "i686"
fe75297c59be Fixed architecture detection on 32bit systems
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    27
      ARCH = 'i386'
fe75297c59be Fixed architecture detection on 32bit systems
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    28
    else
fe75297c59be Fixed architecture detection on 32bit systems
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    29
      ARCH = arch
fe75297c59be Fixed architecture detection on 32bit systems
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    30
    end
3
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    31
  end
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    32
  if ARCH != 'i386' && ARCH != 'x86_64' then
4
48ec8a59ced4 Renamed `dist` target to `install`. Added new target `artifacts` (mainly) for Jenkins builds.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    33
    raise Exception.new("Unsupported architecture #{ARCH}")
3
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    34
  end
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    35
end
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    36
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    37
if not defined? TOOLCHAIN then
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    38
  if ENV.has_key? 'TOOLCHAIN' then
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    39
    TOOLCHAIN = ENV['TOOLCHAIN']
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    40
  else
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    41
    if unix? then
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    42
      TOOLCHAIN='gcc'
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    43
    elsif win32? then
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    44
      if ARCH == 'x86_64' then
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    45
        TOOLCHAIN='mingw64'
9
34274130f57a Removed some old, dead code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
    46
      else        
3
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    47
        TOOLCHAIN="mingw32"
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    48
      end
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    49
    else
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    50
      raise new Exception("Unsupported operating system")    
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    51
    end
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    52
  end
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    53
end
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    54
98
e8a75e807ff2 Oops, make sure `REPOSITORYSET` value is written to `config.rb`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
    55
if not defined? REPOSITORYSET
e8a75e807ff2 Oops, make sure `REPOSITORYSET` value is written to `config.rb`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
    56
  REPOSITORYSET = (ENV['REPOSITORYSET'] || 'default')
e8a75e807ff2 Oops, make sure `REPOSITORYSET` value is written to `config.rb`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
    57
end
e8a75e807ff2 Oops, make sure `REPOSITORYSET` value is written to `config.rb`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
    58
18
647bee28090f Write default configuration to `config.rb` rather than to `.config.rake`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    59
if not File.exist? 'config.rb'
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
  if defined? PROJECT
18
647bee28090f Write default configuration to `config.rb` rather than to `.config.rake`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    61
    File.open('config.rb', 'w') do | f |
647bee28090f Write default configuration to `config.rb` rather than to `.config.rake`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    62
      f.puts <<COMMENT
647bee28090f Write default configuration to `config.rb` rather than to `.config.rake`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    63
# This file contans a default build configuration. It is created automatically
647bee28090f Write default configuration to `config.rb` rather than to `.config.rake`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    64
# when `rake` is called for the very first time. You may still override values
647bee28090f Write default configuration to `config.rb` rather than to `.config.rake`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    65
# on command line, i.e., 
647bee28090f Write default configuration to `config.rb` rather than to `.config.rake`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    66
#
647bee28090f Write default configuration to `config.rb` rather than to `.config.rake`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    67
#     rake PROJECT=some-other-project 
647bee28090f Write default configuration to `config.rb` rather than to `.config.rake`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    68
#
647bee28090f Write default configuration to `config.rb` rather than to `.config.rake`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    69
# This file SHOULD NOT be checked in a repository. 
647bee28090f Write default configuration to `config.rb` rather than to `.config.rake`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    70
#
647bee28090f Write default configuration to `config.rb` rather than to `.config.rake`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    71
COMMENT
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
      f.puts "PROJECT='#{PROJECT}' if not defined? PROJECT"
3
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    73
      f.puts "ARCH='#{ARCH}' if not defined? ARCH"
98
e8a75e807ff2 Oops, make sure `REPOSITORYSET` value is written to `config.rb`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
    74
      f.puts "REPOSITORYSET='#{REPOSITORYSET}' if not defined? REPOSITORYSET"
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
      if defined? PROJECT_DIRS
3
18c56730fabf Renamed `amd64?` to `x86_64?` for consistency
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    76
        f.puts "PROJECT_DIRS='#{PROJECT_DIRS}' if not defined? PROJECT_DIRS"
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
      end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
    end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
  end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
defined? PROJECT_DIRS or PROJECT_DIRS = ''
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
if TOOLCHAIN == 'gcc' then
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
  OBJ_DIR = '.'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
  OBJ_SUFFIX = 'o'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
  MAKE='make'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
elsif TOOLCHAIN == 'bcc' then
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
  OBJ_DIR = 'objbc'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
  OBJ_SUFFIX = 'obj'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
  MAKE='bmake.bat -DUSEBC'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
elsif TOOLCHAIN == 'mingw64' then
23
7dad21b22558 Added support to build under MSYS2 environment
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
    93
  if File.exist? 'C:\mingw64\bin' then
7dad21b22558 Added support to build under MSYS2 environment
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
    94
    ENV['MINGW_DIR'] ='C:\MINGW64'
7dad21b22558 Added support to build under MSYS2 environment
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
    95
    ENV['USEMINGW_ARG'] = '-DUSEMINGW64'
7dad21b22558 Added support to build under MSYS2 environment
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
    96
  elsif File.exist? 'C:\MSYS64\MINGW64\bin\gcc.exe'
7dad21b22558 Added support to build under MSYS2 environment
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
    97
    ENV['MINGW_DIR'] ='C:\MSYS64\MINGW64'
7dad21b22558 Added support to build under MSYS2 environment
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
    98
    ENV['USEMINGW_ARG'] = '-DUSEMINGW64'
7dad21b22558 Added support to build under MSYS2 environment
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
    99
  else
7dad21b22558 Added support to build under MSYS2 environment
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
   100
  	raise Exception.new("MINGW64 nor MSYS2 found in C:\\MinGW64 nor C:\\MSYS64!")
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
  end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
  ENV['MINGW'] = '__MINGW64__'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
  OBJ_DIR = 'objmingw'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
  OBJ_SUFFIX = 'obj'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
  MAKE='mingwmake.bat'  
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
  ENV["PATH"] = "#{ENV['PATH']};#{ENV['MINGW_DIR']}\\bin"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
elsif (TOOLCHAIN == 'mingw' or TOOLCHAIN == 'mingw32') then
23
7dad21b22558 Added support to build under MSYS2 environment
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
   108
  if File.exist? 'C:\mingw\bin' then
7dad21b22558 Added support to build under MSYS2 environment
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
   109
    ENV['MINGW_DIR'] ='C:\MINGW'
7dad21b22558 Added support to build under MSYS2 environment
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
   110
    ENV['USEMINGW_ARG'] = '-DUSEMINGW32'  
7dad21b22558 Added support to build under MSYS2 environment
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
   111
  elsif File.exist? 'C:\MSYS64\MINGW32\bin\gcc.exe'
7dad21b22558 Added support to build under MSYS2 environment
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
   112
    ENV['MINGW_DIR'] ='C:\MSYS64\MINGW32'
7dad21b22558 Added support to build under MSYS2 environment
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
   113
    ENV['USEMINGW_ARG'] = '-DUSEMINGW32'  
38
7b2b274f0f5a Fixed setup for 32bit build under MSYS2 environment
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   114
    system 'set'
23
7dad21b22558 Added support to build under MSYS2 environment
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
   115
  elsif File.exist? 'C:\MSYS\MINGW32\bin\gcc.exe'
7dad21b22558 Added support to build under MSYS2 environment
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
   116
    ENV['MINGW_DIR'] ='C:\MSYS\MINGW32'
7dad21b22558 Added support to build under MSYS2 environment
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
   117
    ENV['USEMINGW_ARG'] = '-DUSEMINGW32'  
7dad21b22558 Added support to build under MSYS2 environment
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
   118
  else    
7dad21b22558 Added support to build under MSYS2 environment
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
   119
    raise Exception.new("MINGW32 nor MSYS2 found in C:\\MinGW nor C:\\MSYS64 nor C:\\MSYS!")
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
  end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
  ENV['MINGW'] = '__MINGW32__'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
  OBJ_DIR = 'objmingw'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
  OBJ_SUFFIX = 'obj'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
  MAKE='mingwmake.bat'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
  ENV["PATH"] = "#{ENV['PATH']};#{ENV['MINGW_DIR']}\\bin"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
else
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
  raise new Exception("Unsupported toolchain: #{TOOLCHAIN}")
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
  
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
task :'setup' => [ :'setup:pre',
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
                   :'setup:main',
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
                   :'setup:post' ]
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
task :'setup:pre'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
task :'setup:post'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
task :'setup:main' => [ :'setup:projects', :'setup:project' , :'setup:tasks' ];
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
task :'setup:projects' do
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
  Rake::Stx::Configuration.read_specs(PROJECT_DIRS)
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
task :'setup:project' =>  :'setup:projects'  do
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
  error("PROJECT variable not defined!") if not defined? PROJECT
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
  project! PROJECT.to_sym
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
  project.apply_imports()
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
  app_name    = project.app_name    || 'smalltalkx'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
  app_version = project.app_version || '6.2.5'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
93
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   153
  defined? BUILD_NAME or BUILD_NAME = "#{app_name}-#{app_version}_#{ARCH}-#{win32? ? 'win32' : RbConfig::CONFIG['host_os']}"  
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   154
end
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   155
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   156
task :'setup:dependencies' => :'checkout' do
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   157
  project.packages.each do | pkg |        
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   158
    if File.exist? (BUILD_DIR / pkg.directory() / pkg.project_definition_file_name()) then
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   159
	  if not pkg.test_package? then
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   160
        task "#{project.application.name}:dependencies" => pkg.name
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   161
        task "#{pkg.name}:dependencies" => pkg.prereqs(mandatory: true)
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   162
      end
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   163
    end
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   164
  end
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
task :'setup:tasks' => :'setup:tasks:internal'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
task :'setup:tasks:internal' => :'setup:project' do
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
93
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   171
  project.tasks.each do | t |
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
    t.define!
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
  end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
  # compile task
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
  if project.application
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
    task :'compile:application' => project.application.name
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
  else
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
    task :'compile:application'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
  end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
93
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   182
  info "Defining tasks for packages..."
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
93
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   184
  project.packages_and_application.each do | pkg |
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
    info "Defining task for package #{pkg.name}"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
93
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   188
    if unix? #and not File.exist? BUILD_DIR / pkg.directory / 'makefile'    
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
      task pkg.name => [ BUILD_DIR / pkg.directory / 'makefile' ]
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
      file BUILD_DIR / pkg.directory / 'makefile' do
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
        chdir BUILD_DIR / pkg.directory do
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
          if not system "sh #{ pkg.top() / 'stx' / 'rules' / 'stmkmf'}"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
            raise Exception.new("Canmot run stmkmf for #{pkg.directory}")
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
          end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
        end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
      end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
    end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
    #require 'find'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
    #[ 'bitmaps', 'resources' ].each do | dir |
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
    #  path = BUILD_DIR / pkg.directory() / dir
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
    #  if File.exist?(path)
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
    #    Find.find(File.expand_path(path)) do | file |
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
    #      if FileTest.directory?(file)
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
    #        if (File.basename(file) == '..') || (File.basename(file) == '.')
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
    #          Find.prune       # Don't look any further into this directory.
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
    #        else
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
    #          if File.exists?(File.join(file, '.svn'))
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
    #            rm_rf File.join(file, '.svn')
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
    #            #Find.prune
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   211
    #          end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   212
    #        end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
    #      end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
    #    end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
    #  end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
    #end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
93
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   218
    task "#{pkg.name}" => [ "#{pkg.name}:dependencies", "#{pkg.name}:pre", "#{pkg.name}:main", "#{pkg.name}:post" ]
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
    task "#{pkg.name}:pre"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
    task "#{pkg.name}:post"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
    task "#{pkg.name}:main" do | t |
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
      make_vars = ""
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
      d = win32? ? '-D' : ''
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
      q = win32? ? '"'  : "'"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
      if unix?
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
        make_vars += "STC=#{STC}"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
      end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
      if pkg.application? and not win32?
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
        liblist=''
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
        libobjs=''
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
        link_libobjs=''
93
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   236
        project.packages.each do | p |
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   237
          if File.exist? (BUILD_DIR / p.directory() / p.project_definition_file_name()) then
97
33cf3197acb5 Added hack for compiling 32bit stx:libdb/libodbc on 64bit Linux
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 93
diff changeset
   238
            if not p.application? and p.link and not p.test_package?
93
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   239
              liblist += "#{p.dll_name_without_suffix()} "
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   240
              libobjs += "#{File.join(pkg.top() , p.directory(), p.dll_name())} "
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   241
              link_libobjs += "#{p.dll_name()} "                
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   242
            end
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
          end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
        end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
        make_vars += " #{q}#{d}LIBLIST=#{liblist}#{q}"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
        make_vars += " #{q}#{d}LIBOBJS=#{libobjs}#{q}"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
        make_vars += " #{q}#{d}LINK_LIBOBJS=#{link_libobjs}#{q}"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
      end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
      # Update stc flags,
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
      stc_flags = pkg.stc_flags
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
      if stc_flags
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
        make_vars += " #{q}#{d}STC_CMD_OPT=#{stc_flags}#{q}"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
      end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   257
      if File.exist? BUILD_DIR / pkg.directory / 'GNUmakefile'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   258
        rm BUILD_DIR / pkg.directory / 'GNUmakefile'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   259
      end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   260
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   261
      info "Compiling #{pkg.name}..."
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
      make_vars = "#{make_vars} #{DEBUG}"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
      chdir BUILD_DIR / pkg.directory do
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
        if pkg.application? and win32?
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   265
          make 'exe'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   266
          make 'RESOURCEFILES'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   267
        else
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   268
          # Somewhat stupid detection whether we run recent St/X or not...
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   269
          if File.exist? BUILD_DIR / 'stx' / 'libbasic2' / 'Makefile.init'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   270
            make "#{make_vars} full"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   271
          else
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   272
            make "#{make_vars}"
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   273
          end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   274
        end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   275
      end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   276
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   277
      if pkg.application?  and unix?
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   278
        chdir BUILD_DIR / 'stx' / 'librun' do
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   279
          make
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   280
        end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   281
      end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   282
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   283
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   284
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   285
    end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   286
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   287
    if pkg.application?
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   288
      if win32?
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   289
        task pkg.name => BUILD_DIR / pkg.directory / 'modules.stx'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   290
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   291
        task BUILD_DIR / pkg.directory / 'modules.stx' do | t |
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   292
          rm t.name if File.exist? t.name
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   293
          File.open(t.name, 'w') do | f |
93
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   294
            project.packages.each do | p |
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   295
              if not p.application? and p.link and not p.test_package? and File.exist? BUILD_DIR / p.directory / OBJ_DIR / p.dll_name()
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   296
                f.puts p.dll_name_without_suffix()
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   297
              end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   298
            end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   299
          end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
        end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   301
93
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   302
        project.packages.each do | p |
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   303
          if not p.application? and not p.test_package?
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
            task pkg.name => BUILD_DIR / pkg.directory / p.dll_name()
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
93
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   306
            file BUILD_DIR / pkg.directory / p.dll_name() do
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   307
              if not p.application? and p.link and not p.test_package? and File.exist? BUILD_DIR / p.directory / OBJ_DIR / p.dll_name()
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   308
                cp BUILD_DIR / p.directory / OBJ_DIR / p.dll_name(),
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   309
                   BUILD_DIR / pkg.directory / p.dll_name()
650412e81596 Automatically extract package dependencies from project definition file
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   310
              end                   
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   311
            end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   312
          end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   313
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   314
          if win32_wine?
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   315
            file BUILD_DIR / pkg.directory / p.dll_name() do
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   316
              cp BUILD_DIR / p.directory / OBJ_DIR / p.dll_name(),
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
              BUILD_DIR / pkg.directory / p.dll_name()
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   318
            end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   319
          end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
        end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
      else # UNIX
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
        task "#{pkg.name}:main" => BUILD_DIR / pkg.directory / 'modulList.stc'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   325
        task BUILD_DIR / pkg.directory / 'modulList.stc' do | t |
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
          rm t.name if File.exist? t.name
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
        end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   328
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
        task "#{pkg.name}:main" => BUILD_DIR / pkg.directory / 'modulList.c'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
        task BUILD_DIR / pkg.directory / 'modulList.c' do | t |
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   332
          rm t.name if File.exist? t.name
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
        end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
      end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   335
    end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   336
  end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   338
end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   340
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   341
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   343