build/cplusplus_support.rb in passenger-5.0.0.beta3 vs build/cplusplus_support.rb in passenger-5.0.0.rc1

- old
+ new

@@ -22,75 +22,75 @@ # THE SOFTWARE. # Rake functions for compiling/linking C++ stuff. def run_compiler(*command) - PhusionPassenger.require_passenger_lib 'utils/ansi_colors' if !defined?(PhusionPassenger::Utils::AnsiColors) - show_command = command.join(' ') - puts show_command - if !system(*command) - if $? && $?.exitstatus == 4 - # This probably means the compiler ran out of memory. - msg = "<b>" + - "-----------------------------------------------\n" + - "Your compiler failed with the exit status 4. This " + - "probably means that it ran out of memory. To solve " + - "this problem, try increasing your swap space: " + - "https://www.digitalocean.com/community/articles/how-to-add-swap-on-ubuntu-12-04" + - "</b>" - fail(PhusionPassenger::Utils::AnsiColors.ansi_colorize(msg)) - elsif $? && $?.termsig == 9 - msg = "<b>" + - "-----------------------------------------------\n" + - "Your compiler was killed by the operating system. This " + - "probably means that it ran out of memory. To solve " + - "this problem, try increasing your swap space: " + - "https://www.digitalocean.com/community/articles/how-to-add-swap-on-ubuntu-12-04" + - "</b>" - fail(PhusionPassenger::Utils::AnsiColors.ansi_colorize(msg)) - else - fail "Command failed with status (#{$? ? $?.exitstatus : 1}): [#{show_command}]" - end - end + PhusionPassenger.require_passenger_lib 'utils/ansi_colors' if !defined?(PhusionPassenger::Utils::AnsiColors) + show_command = command.join(' ') + puts show_command + if !system(*command) + if $? && $?.exitstatus == 4 + # This probably means the compiler ran out of memory. + msg = "<b>" + + "-----------------------------------------------\n" + + "Your compiler failed with the exit status 4. This " + + "probably means that it ran out of memory. To solve " + + "this problem, try increasing your swap space: " + + "https://www.digitalocean.com/community/articles/how-to-add-swap-on-ubuntu-12-04" + + "</b>" + fail(PhusionPassenger::Utils::AnsiColors.ansi_colorize(msg)) + elsif $? && $?.termsig == 9 + msg = "<b>" + + "-----------------------------------------------\n" + + "Your compiler was killed by the operating system. This " + + "probably means that it ran out of memory. To solve " + + "this problem, try increasing your swap space: " + + "https://www.digitalocean.com/community/articles/how-to-add-swap-on-ubuntu-12-04" + + "</b>" + fail(PhusionPassenger::Utils::AnsiColors.ansi_colorize(msg)) + else + fail "Command failed with status (#{$? ? $?.exitstatus : 1}): [#{show_command}]" + end + end end def compile_c(source, flags = "#{EXTRA_PRE_CFLAGS} #{EXTRA_CFLAGS}") - run_compiler "#{CC} #{flags} -c #{source}" + run_compiler "#{CC} #{flags} -c #{source}" end def compile_cxx(source, flags = "#{EXTRA_PRE_CXXFLAGS} #{EXTRA_CXXFLAGS}") - run_compiler "#{CXX} #{flags} -c #{source}" + run_compiler "#{CXX} #{flags} -c #{source}" end def create_static_library(target, sources) - # On OS X, 'ar cru' will sometimes fail with an obscure error: - # - # ar: foo.a is a fat file (use libtool(1) or lipo(1) and ar(1) on it) - # ar: foo.a: Inappropriate file type or format - # - # So here we delete the ar file before creating it, which bypasses this problem. - sh "rm -rf #{target}" - sh "ar cru #{target} #{sources}" - sh "ranlib #{target}" + # On OS X, 'ar cru' will sometimes fail with an obscure error: + # + # ar: foo.a is a fat file (use libtool(1) or lipo(1) and ar(1) on it) + # ar: foo.a: Inappropriate file type or format + # + # So here we delete the ar file before creating it, which bypasses this problem. + sh "rm -rf #{target}" + sh "ar cru #{target} #{sources}" + sh "ranlib #{target}" end def create_executable(target, sources, linkflags = "#{EXTRA_PRE_CXXFLAGS} #{EXTRA_PRE_C_LDFLAGS} #{EXTRA_CXXFLAGS} #{PlatformInfo.portability_cxx_ldflags} #{EXTRA_CXX_LDFLAGS}") - run_compiler "#{CXX} #{sources} -o #{target} #{linkflags}" + run_compiler "#{CXX} #{sources} -o #{target} #{linkflags}" end def create_c_executable(target, sources, linkflags = "#{EXTRA_PRE_CFLAGS} #{EXTRA_PRE_CXX_LDFLAGS}#{EXTRA_CFLAGS} #{PlatformInfo.portability_c_ldflags} #{EXTRA_C_LDFLAGS}") - run_compiler "#{CC} #{sources} -o #{target} #{linkflags}" + run_compiler "#{CC} #{sources} -o #{target} #{linkflags}" end def create_shared_library(target, sources, flags = "#{EXTRA_PRE_CXXFLAGS} #{EXTRA_PRE_CXX_LDFLAGS} #{EXTRA_CXXFLAGS} #{PlatformInfo.portability_cxx_ldflags} #{EXTRA_CXX_LDFLAGS}") - if PlatformInfo.os_name == "macosx" - shlib_flag = "-flat_namespace -bundle -undefined dynamic_lookup" - else - shlib_flag = "-shared" - end - if PhusionPassenger::PlatformInfo.cxx_is_sun_studio? - fPIC = "-KPIC" - else - fPIC = "-fPIC" - end - run_compiler "#{CXX} #{shlib_flag} #{sources} #{fPIC} -o #{target} #{flags}" + if PlatformInfo.os_name == "macosx" + shlib_flag = "-flat_namespace -bundle -undefined dynamic_lookup" + else + shlib_flag = "-shared" + end + if PhusionPassenger::PlatformInfo.cxx_is_sun_studio? + fPIC = "-KPIC" + else + fPIC = "-fPIC" + end + run_compiler "#{CXX} #{shlib_flag} #{sources} #{fPIC} -o #{target} #{flags}" end