174 lines
5.4 KiB
Diff
174 lines
5.4 KiB
Diff
--- passenger/build/common_library.rb
|
|
+++ passenger/build/common_library.rb
|
|
@@ -34,19 +34,19 @@
|
|
# Defines tasks for compiling a static library containing Boost and OXT.
|
|
def define_libboost_oxt_task(namespace, output_dir, extra_compiler_flags = nil)
|
|
output_file = "#{output_dir}.a"
|
|
- flags = "-Iext #{extra_compiler_flags} #{EXTRA_CXXFLAGS}"
|
|
-
|
|
+ flags = "-Iext #{extra_compiler_flags} #{EXTRA_CXXFLAGS} -fPIC #{ENV['RPM_OPT_FLAGS']} "
|
|
+
|
|
if false && boolean_option('RELEASE')
|
|
# Disable RELEASE support. Passenger Standalone wants to link to the
|
|
# common library but does not know whether it was compiled with RELEASE
|
|
# or not. See http://code.google.com/p/phusion-passenger/issues/detail?id=808
|
|
sources = Dir['ext/boost/libs/**/*.cpp'] + Dir['ext/oxt/*.cpp']
|
|
sources.sort!
|
|
-
|
|
+
|
|
aggregate_source = "#{output_dir}/aggregate.cpp"
|
|
aggregate_object = "#{output_dir}/aggregate.o"
|
|
object_files = [aggregate_object]
|
|
-
|
|
+
|
|
file(aggregate_object => sources) do
|
|
sh "mkdir -p #{output_dir}" if !File.directory?(output_dir)
|
|
aggregate_content = %Q{
|
|
@@ -71,13 +71,13 @@
|
|
boost_output_dir = "#{output_dir}/boost"
|
|
object_file = "#{boost_output_dir}/#{object_name}"
|
|
boost_object_files << object_file
|
|
-
|
|
+
|
|
file object_file => source_file do
|
|
sh "mkdir -p #{boost_output_dir}" if !File.directory?(boost_output_dir)
|
|
compile_cxx(source_file, "#{flags} -o #{object_file}")
|
|
end
|
|
end
|
|
-
|
|
+
|
|
# Define compilation targets for .cpp files in ext/oxt.
|
|
oxt_object_files = []
|
|
oxt_dependency_files = Dir["ext/oxt/*.hpp"] + Dir["ext/oxt/detail/*.hpp"]
|
|
@@ -92,19 +92,19 @@
|
|
compile_cxx(source_file, "#{flags} -o #{object_file}")
|
|
end
|
|
end
|
|
-
|
|
+
|
|
object_files = boost_object_files + oxt_object_files
|
|
end
|
|
-
|
|
+
|
|
file(output_file => object_files) do
|
|
sh "mkdir -p #{output_dir}"
|
|
create_static_library(output_file, object_files.join(' '))
|
|
end
|
|
-
|
|
+
|
|
task "#{namespace}:clean" do
|
|
sh "rm -rf #{output_file} #{output_dir}"
|
|
end
|
|
-
|
|
+
|
|
return output_file
|
|
end
|
|
|
|
@@ -116,9 +116,9 @@
|
|
LIBEV_CFLAGS = "-Iext/libev"
|
|
LIBEV_LIBS = LIBEV_OUTPUT_DIR + ".libs/libev.a"
|
|
LIBEV_TARGET = LIBEV_LIBS
|
|
-
|
|
+
|
|
task :libev => LIBEV_TARGET
|
|
-
|
|
+
|
|
dependencies = [
|
|
"ext/libev/configure",
|
|
"ext/libev/config.h.in",
|
|
@@ -128,7 +128,7 @@
|
|
cc = PlatformInfo.cc
|
|
cxx = PlatformInfo.cxx
|
|
# Disable all warnings: http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#COMPILER_WARNINGS
|
|
- cflags = "#{EXTRA_CFLAGS} -w"
|
|
+ cflags = "#{EXTRA_CFLAGS} #{ENV['RPM_OPT_FLAGS']} -w"
|
|
sh "mkdir -p #{LIBEV_OUTPUT_DIR}" if !File.directory?(LIBEV_OUTPUT_DIR)
|
|
sh "cd #{LIBEV_OUTPUT_DIR} && sh #{LIBEV_SOURCE_DIR}configure " +
|
|
"--disable-shared --enable-static " +
|
|
@@ -136,7 +136,7 @@
|
|
# do, so we force our compiler choice.
|
|
"CC='#{cc}' CXX='#{cxx}' CFLAGS='#{cflags}' orig_CFLAGS=1"
|
|
end
|
|
-
|
|
+
|
|
libev_sources = Dir["ext/libev/{*.c,*.h}"]
|
|
file LIBEV_OUTPUT_DIR + ".libs/libev.a" => [LIBEV_OUTPUT_DIR + "Makefile"] + libev_sources do
|
|
sh "rm -f #{LIBEV_OUTPUT_DIR}/libev.la"
|
|
@@ -148,7 +148,7 @@
|
|
sh "cd #{LIBEV_OUTPUT_DIR} && make maintainer-clean"
|
|
end
|
|
end
|
|
-
|
|
+
|
|
task :clean => 'libev:clean'
|
|
else
|
|
LIBEV_CFLAGS = string_option('LIBEV_CFLAGS', '-I/usr/include/libev')
|
|
@@ -168,9 +168,9 @@
|
|
LIBEIO_CFLAGS = "-Iext/libeio"
|
|
LIBEIO_LIBS = LIBEIO_OUTPUT_DIR + ".libs/libeio.a"
|
|
LIBEIO_TARGET = LIBEIO_LIBS
|
|
-
|
|
+
|
|
task :libeio => LIBEIO_TARGET
|
|
-
|
|
+
|
|
dependencies = [
|
|
"ext/libeio/configure",
|
|
"ext/libeio/config.h.in",
|
|
@@ -181,7 +181,7 @@
|
|
cxx = PlatformInfo.cxx
|
|
# Disable all warnings. The author has a clear standpoint on that:
|
|
# http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#COMPILER_WARNINGS
|
|
- cflags = "#{EXTRA_CFLAGS} -w"
|
|
+ cflags = "#{EXTRA_CFLAGS} #{ENV['RPM_OPT_FLAGS']} -w"
|
|
sh "mkdir -p #{LIBEIO_OUTPUT_DIR}" if !File.directory?(LIBEIO_OUTPUT_DIR)
|
|
sh "cd #{LIBEIO_OUTPUT_DIR} && sh #{LIBEIO_SOURCE_DIR}configure " +
|
|
"--disable-shared --enable-static " +
|
|
@@ -189,13 +189,14 @@
|
|
# do, so we force our compiler choice.
|
|
"CC='#{cc}' CXX='#{cxx}' CFLAGS='#{cflags}'"
|
|
end
|
|
-
|
|
+
|
|
libeio_sources = Dir["ext/libeio/{*.c,*.h}"]
|
|
file LIBEIO_OUTPUT_DIR + ".libs/libeio.a" => [LIBEIO_OUTPUT_DIR + "Makefile"] + libeio_sources do
|
|
sh "rm -f #{LIBEIO_OUTPUT_DIR}/libeio.la"
|
|
+ sh "cd #{LIBEIO_OUTPUT_DIR} && make eio.o"
|
|
sh "cd #{LIBEIO_OUTPUT_DIR} && make libeio.la"
|
|
end
|
|
-
|
|
+
|
|
task :clean do
|
|
if File.exist?(LIBEIO_OUTPUT_DIR + "Makefile")
|
|
sh "cd #{LIBEIO_OUTPUT_DIR} && make maintainer-clean"
|
|
--- passenger/ext/boost/libs/thread/src/pthread/thread.cpp
|
|
+++ passenger/ext/boost/libs/thread/src/pthread/thread.cpp
|
|
@@ -390,6 +390,7 @@
|
|
{
|
|
return false;
|
|
}
|
|
+ return false;
|
|
}
|
|
|
|
bool thread::joinable() const BOOST_NOEXCEPT
|
|
--- passenger/lib/phusion_passenger/common_library.rb
|
|
+++ passenger/lib/phusion_passenger/common_library.rb
|
|
@@ -101,7 +101,7 @@
|
|
end
|
|
|
|
def define_tasks(extra_compiler_flags = nil)
|
|
- flags = "-Iext -Iext/common #{LIBEV_CFLAGS} #{extra_compiler_flags} "
|
|
+ flags = "-Iext -Iext/common #{LIBEV_CFLAGS} #{extra_compiler_flags} -fPIC #{ENV['RPM_OPT_FLAGS']} "
|
|
cflags = (flags + EXTRA_CFLAGS).strip
|
|
cxxflags = (flags + EXTRA_CXXFLAGS).strip
|
|
|
|
@@ -171,7 +171,7 @@
|
|
# packaging the runtime ('passenger package-runtime') so we
|
|
# never generate static libraries.
|
|
library = "#{@output_dir}/#{category}.a"
|
|
-
|
|
+
|
|
file(library => object_filenames) do
|
|
create_static_library(library, object_filenames.join(' '))
|
|
end
|