* Moved the optional package dependency definitions into the new

build/jam/OptionalPackageDependencies and include it earlier (before the
  Jamfiles).
* Introduced build/jam/OptionalBuildFeatures which is supposed to do the setup
  for optional build features that need it.
* Renamed USE_SSL to HAIKU_BUILD_FEATURE_SSL and made it more intelligent.
  The OpenSSL optional package is downloaded and unzipped automatically when
  enabled. Switching between enabled/disabled HAIKU_BUILD_FEATURE_SSL is
  handled gracefully -- the concerned components are built in separate
  subdirectories. Adding the OpenSSL optional package to the image also enables
  HAIKU_BUILD_FEATURE_SSL.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30021 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2009-04-08 10:07:17 +00:00
parent d339b68bef
commit ff81d306d4
12 changed files with 175 additions and 111 deletions
+5
View File
@@ -132,6 +132,11 @@ Depends ScreenSaverKit :
Haiku Haiku
; ;
# Evaluate optional package dependencies and prepare the optional build
# features before parsing the Jamfile tree.
include [ FDirName $(HAIKU_BUILD_RULES_DIR) OptionalPackageDependencies ] ;
include [ FDirName $(HAIKU_BUILD_RULES_DIR) OptionalBuildFeatures ] ;
# Optionally we allow not to include the "src" subdirectory. # Optionally we allow not to include the "src" subdirectory.
if $(HAIKU_DONT_INCLUDE_SRC) { if $(HAIKU_DONT_INCLUDE_SRC) {
# Don't include "src", but at least include the stuff needed for the # Don't include "src", but at least include the stuff needed for the
+2
View File
@@ -8,6 +8,8 @@ HAIKU_BUILD_RULES_DIR = [ FDirName $(HAIKU_BUILD_DIR) jam ] ;
HAIKU_OBJECT_DIR = [ FDirName $(HAIKU_OUTPUT_DIR) objects ] ; HAIKU_OBJECT_DIR = [ FDirName $(HAIKU_OUTPUT_DIR) objects ] ;
HAIKU_COMMON_PLATFORM_OBJECT_DIR = [ FDirName $(HAIKU_OBJECT_DIR) common ] ; HAIKU_COMMON_PLATFORM_OBJECT_DIR = [ FDirName $(HAIKU_OBJECT_DIR) common ] ;
HAIKU_DOWNLOAD_DIR = [ FDirName $(HAIKU_OUTPUT_DIR) download ] ; HAIKU_DOWNLOAD_DIR = [ FDirName $(HAIKU_OUTPUT_DIR) download ] ;
HAIKU_OPTIONAL_BUILD_PACKAGES_DIR = [ FDirName $(HAIKU_OUTPUT_DIR)
build_packages ] ;
# Cache files for header scanning and jamfile caching # Cache files for header scanning and jamfile caching
HCACHEFILE = header_cache ; HCACHEFILE = header_cache ;
+47
View File
@@ -0,0 +1,47 @@
# This file contains setup for features that can optionally be used for the
# build. For features that require downloading a zip file from somewhere it is
# likely the same file use for an optional package.
# SSL
# Automatically enable the SSL feature, when the optional OpenSSL optional
# package is enabled.
if [ IsOptionalHaikuImagePackageAdded OpenSSL ] {
HAIKU_BUILD_FEATURE_SSL = 1 ;
}
local baseURL = http://haiku-files.org/files/optional-packages ;
HAIKU_OPENSSL_PACKAGE = openssl-0.9.8j-gcc2-2009-01-28 ;
HAIKU_OPENSSL_URL = $(baseURL)/$(HAIKU_OPENSSL_PACKAGE).zip ;
if $(HAIKU_BUILD_FEATURE_SSL) {
if $(TARGET_ARCH) != x86 {
Echo "SSL build feature not available for $(TARGET_ARCH)" ;
} else {
# Download the zip archive.
local zipFile = [ DownloadOptionalPackage $(HAIKU_OPENSSL_PACKAGE)
: $(HAIKU_OPENSSL_URL) ] ;
# zip file and output directory
HAIKU_OPENSSL_ZIP_FILE = $(zipFile) ;
HAIKU_OPENSSL_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR)
$(HAIKU_OPENSSL_PACKAGE) ] ;
# unzip headers and libraries
HAIKU_OPENSSL_HEADERS_DEPENDENCY = [ UnzipArchive $(HAIKU_OPENSSL_DIR)
: common/include/ : $(zipFile)
] ;
HAIKU_OPENSSL_LIBS = [ UnzipArchive $(HAIKU_OPENSSL_DIR)
:
common/lib/libcrypto.so
common/lib/libssl.so
: $(zipFile)
] ;
HAIKU_OPENSSL_ENABLED = 1 ;
HAIKU_OPENSSL_HEADERS
= [ FDirName $(HAIKU_OPENSSL_DIR) common include ] ;
}
}
+9
View File
@@ -0,0 +1,9 @@
# package dependencies
OptionalPackageDependencies APR-util : APR ;
OptionalPackageDependencies BeHappy : BeBook NetSurf ;
OptionalPackageDependencies Development : Perl ;
OptionalPackageDependencies LibLayout : Development ;
OptionalPackageDependencies NetSurf : OpenSSL ;
OptionalPackageDependencies OpenSSH : OpenSSL ;
OptionalPackageDependencies Subversion : OpenSSL ;
+2 -16
View File
@@ -43,16 +43,6 @@ if $(HAIKU_ADD_ALTERNATIVE_GCC_LIBS) && $(HAIKU_ALTERNATIVE_GCC_OUTPUT_DIR) {
# Yasm # Yasm
# package dependencies
OptionalPackageDependencies APR-util : APR ;
OptionalPackageDependencies BeHappy : BeBook NetSurf ;
OptionalPackageDependencies Development : Perl ;
OptionalPackageDependencies LibLayout : Development ;
OptionalPackageDependencies NetSurf : OpenSSL ;
OptionalPackageDependencies OpenSSH : OpenSSL ;
OptionalPackageDependencies Subversion : OpenSSL ;
# APR # APR
if [ IsOptionalHaikuImagePackageAdded APR ] { if [ IsOptionalHaikuImagePackageAdded APR ] {
if $(TARGET_ARCH) != x86 { if $(TARGET_ARCH) != x86 {
@@ -446,16 +436,14 @@ if [ IsOptionalHaikuImagePackageAdded OpenSSL ] {
if $(TARGET_ARCH) != x86 { if $(TARGET_ARCH) != x86 {
Echo "No optional package OpenSSL available for $(TARGET_ARCH)" ; Echo "No optional package OpenSSL available for $(TARGET_ARCH)" ;
} else { } else {
local baseURL = http://haiku-files.org/files/optional-packages ; InstallOptionalHaikuImagePackage $(HAIKU_OPENSSL_PACKAGE)
InstallOptionalHaikuImagePackage openssl-0.9.8j-gcc2-2009-01-28 : $(HAIKU_OPENSSL_URL)
: $(baseURL)/openssl-0.9.8j-gcc2-2009-01-28.zip
: :
; ;
} }
} }
# P7zip # P7zip
if [ IsOptionalHaikuImagePackageAdded P7zip ] { if [ IsOptionalHaikuImagePackageAdded P7zip ] {
if $(TARGET_ARCH) != x86 { if $(TARGET_ARCH) != x86 {
@@ -481,8 +469,6 @@ if [ IsOptionalHaikuImagePackageAdded P7zip ] {
} }
# Pe text editor # Pe text editor
if [ IsOptionalHaikuImagePackageAdded Pe ] { if [ IsOptionalHaikuImagePackageAdded Pe ] {
if $(TARGET_ARCH) != x86 { if $(TARGET_ARCH) != x86 {
-1
View File
@@ -9,7 +9,6 @@ switch $(HAIKU_BUILD_PROFILE) {
AddGroupToHaikuImage party : 101 : user sshd ; AddGroupToHaikuImage party : 101 : user sshd ;
HAIKU_IMAGE_HOST_NAME = shredder ; HAIKU_IMAGE_HOST_NAME = shredder ;
HAIKU_IMAGE_SIZE = 400 ; HAIKU_IMAGE_SIZE = 400 ;
USE_SSL = 1 ;
AddOptionalHaikuImagePackages BePDF Firefox Pe Vision VLC WonderBrush ; AddOptionalHaikuImagePackages BePDF Firefox Pe Vision VLC WonderBrush ;
AddOptionalHaikuImagePackages CVS Development Subversion OpenSSH Yasm ; AddOptionalHaikuImagePackages CVS Development Subversion OpenSSH Yasm ;
+5
View File
@@ -49,6 +49,11 @@ AppendToConfigVar DEFINES : HAIKU_TOP src kits : RUN_WITHOUT_REGISTRAR
# has no effect on executables or other shared objects. # has no effect on executables or other shared objects.
DEBUG on <src!bin!gdb!gdb!>haiku-nat.o = 1 ; DEBUG on <src!bin!gdb!gdb!>haiku-nat.o = 1 ;
# Enables the SSL build feature. Several targets will be compiled with SSL
# support. Adding the OpenSSL optional package will automatically enable this
# feature.
HAIKU_BUILD_FEATURE_SSL = 1 ;
# Haiku Image Related Modifications # Haiku Image Related Modifications
@@ -11,29 +11,30 @@ UsePrivateHeaders mail ;
SubDirHdrs [ FDirName $(HAIKU_TOP) headers os add-ons mail_daemon ] ; SubDirHdrs [ FDirName $(HAIKU_TOP) headers os add-ons mail_daemon ] ;
local sslDir ; local sources =
if $(USE_SSL) {
SubDirC++Flags -DUSE_SSL ;
if ! $(SSL_DIR) {
sslDir = [ FDirName $(HAIKU_OUTPUT_DIR) cross-ssl common ] ;
} else {
sslDir = $(SSL_DIR) ;
}
SubDirSysHdrs [ FDirName $(sslDir) include ] ;
}
Addon IMAP :
imap_client.cpp imap_client.cpp
imap_config.cpp imap_config.cpp
NestedString.cpp ; NestedString.cpp
;
LinkAgainst IMAP : be libmail.so $(TARGET_NETWORK_LIBS) ; # use OpenSSL, if enabled
if $(HAIKU_OPENSSL_ENABLED) {
if $(USE_SSL) { SubDirC++Flags -DUSE_SSL ;
LinkAgainst IMAP : $(sslDir)/lib/libssl.so $(sslDir)/lib/libcrypto.so ; SubDirSysHdrs $(HAIKU_OPENSSL_HEADERS) ;
Includes [ FGristFiles $(sources) ] : $(HAIKU_OPENSSL_HEADERS_DEPENDENCY) ;
# Dependency needed to trigger downloading/unzipping the package before
# compiling the files.
SetupFeatureObjectsDir ssl ;
} else {
SetupFeatureObjectsDir no-ssl ;
} }
Addon IMAP
: $(sources)
: be libmail.so $(TARGET_NETWORK_LIBS) $(HAIKU_OPENSSL_LIBS)
;
Package haiku-maildaemon-cvs : Package haiku-maildaemon-cvs :
IMAP : IMAP :
boot home config add-ons mail_daemon inbound_protocols ; boot home config add-ons mail_daemon inbound_protocols
;
@@ -11,30 +11,31 @@ UsePrivateHeaders mail ;
SubDirHdrs [ FDirName $(HAIKU_TOP) headers os add-ons mail_daemon ] ; SubDirHdrs [ FDirName $(HAIKU_TOP) headers os add-ons mail_daemon ] ;
local sslDir ; local sources =
if $(USE_SSL) {
SubDirC++Flags -DUSE_SSL ;
if ! $(SSL_DIR) {
sslDir = [ FDirName $(HAIKU_OUTPUT_DIR) cross-ssl common ] ;
} else {
sslDir = $(SSL_DIR) ;
}
SubDirSysHdrs [ FDirName $(sslDir) include ] ;
}
Addon POP3 :
MessageIO.cpp MessageIO.cpp
pop3.cpp pop3.cpp
SimpleMailProtocol.cpp SimpleMailProtocol.cpp
md5c.c ; md5c.c
;
LinkAgainst POP3 : be libmail.so $(TARGET_NETWORK_LIBS) ; # use OpenSSL, if enabled
if $(HAIKU_OPENSSL_ENABLED) {
if $(USE_SSL) { SubDirC++Flags -DUSE_SSL ;
LinkAgainst POP3 : $(sslDir)/lib/libssl.so $(sslDir)/lib/libcrypto.so ; SubDirSysHdrs $(HAIKU_OPENSSL_HEADERS) ;
Includes [ FGristFiles $(sources) ] : $(HAIKU_OPENSSL_HEADERS_DEPENDENCY) ;
# Dependency needed to trigger downloading/unzipping the package before
# compiling the files.
SetupFeatureObjectsDir ssl ;
} else {
SetupFeatureObjectsDir no-ssl ;
} }
Addon POP3
: $(sources)
: be libmail.so $(TARGET_NETWORK_LIBS) $(HAIKU_OPENSSL_LIBS)
;
Package haiku-maildaemon-cvs : Package haiku-maildaemon-cvs :
POP3 : POP3 :
boot home config add-ons mail_daemon inbound_protocols ; boot home config add-ons mail_daemon inbound_protocols
;
@@ -11,26 +11,30 @@ UsePrivateHeaders mail ;
SubDirHdrs [ FDirName $(HAIKU_TOP) headers os add-ons mail_daemon ] ; SubDirHdrs [ FDirName $(HAIKU_TOP) headers os add-ons mail_daemon ] ;
if $(USE_SSL) { local sources =
SubDirC++Flags -DUSE_SSL ;
if ! $(SSL_DIR) {
sslDir = [ FDirName $(HAIKU_OUTPUT_DIR) cross-ssl common ] ;
} else {
sslDir = $(SSL_DIR) ;
}
SubDirSysHdrs [ FDirName $(sslDir) include ] ;
}
Addon SMTP :
smtp.cpp smtp.cpp
md5c.c ; md5c.c
;
LinkAgainst SMTP : be libmail.so $(TARGET_NETWORK_LIBS) $(TARGET_LIBSTDC++) ; # use OpenSSL, if enabled
if $(HAIKU_OPENSSL_ENABLED) {
if $(USE_SSL) { SubDirC++Flags -DUSE_SSL ;
LinkAgainst SMTP : $(sslDir)/lib/libssl.so $(sslDir)/lib/libcrypto.so ; SubDirSysHdrs $(HAIKU_OPENSSL_HEADERS) ;
Includes [ FGristFiles $(sources) ] : $(HAIKU_OPENSSL_HEADERS_DEPENDENCY) ;
# Dependency needed to trigger downloading/unzipping the package before
# compiling the files.
SetupFeatureObjectsDir ssl ;
} else {
SetupFeatureObjectsDir no-ssl ;
} }
Addon SMTP
: $(sources)
: be libmail.so $(TARGET_NETWORK_LIBS) $(TARGET_LIBSTDC++)
$(HAIKU_OPENSSL_LIBS)
;
Package haiku-maildaemon-cvs : Package haiku-maildaemon-cvs :
SMTP : SMTP :
boot home config add-ons mail_daemon outbound_protocols ; boot home config add-ons mail_daemon outbound_protocols
;
+21 -15
View File
@@ -1,27 +1,33 @@
SubDir HAIKU_TOP src bin network wget ; SubDir HAIKU_TOP src bin network wget ;
UseHeaders [ FDirName $(SUBDIR) src ] : true ; UseHeaders [ FDirName $(SUBDIR) src ] : true ;
SEARCH_SOURCE += [ FDirName $(SUBDIR) src ] ;
local defines = [ FDefines HAVE_CONFIG_H=1 ] ; local defines = [ FDefines HAVE_CONFIG_H=1 ] ;
SubDirCcFlags $(defines) ; SubDirCcFlags $(defines) ;
SubDirC++Flags $(defines) ; SubDirC++Flags $(defines) ;
local SSL_FILES ;
local SSL_LIBS ;
if $(USE_SSL) { # use OpenSSL, if enabled
local sslSources ;
if $(HAIKU_OPENSSL_ENABLED) {
SubDirCcFlags -DHAVE_LIBSSL ; SubDirCcFlags -DHAVE_LIBSSL ;
if ! $(SSL_DIR) { SubDirSysHdrs $(HAIKU_OPENSSL_HEADERS) ;
sslDir = [ FDirName $(HAIKU_OUTPUT_DIR) cross-ssl common ] ; sslSources = openssl.c ;
} else { Includes [ FGristFiles $(sslSources) ]
sslDir = $(SSL_DIR) ; : $(HAIKU_OPENSSL_HEADERS_DEPENDENCY) ;
} # Dependency needed to trigger downloading/unzipping the package before
SubDirSysHdrs [ FDirName $(sslDir) include ] ; # compiling the files.
SSL_FILES = openssl.c ; SetupFeatureObjectsDir ssl ;
SSL_LIBS = $(sslDir)/lib/libssl.so $(sslDir)/lib/libcrypto.so ; } else {
} SetupFeatureObjectsDir no-ssl ;
}
SEARCH_SOURCE += [ FDirName $(SUBDIR) src ] ;
# needs to be invoked after SetupFeatureObjectsDir
BinCommand wget : BinCommand wget :
cmpt.c cmpt.c
@@ -55,6 +61,6 @@ BinCommand wget :
utils.c utils.c
version.c version.c
xmalloc.c xmalloc.c
$(SSL_FILES) $(sslSources)
: $(TARGET_NETWORK_LIBS) $(SSL_LIBS) : $(TARGET_NETWORK_LIBS) $(HAIKU_OPENSSL_LIBS)
; ;
+23 -24
View File
@@ -15,25 +15,12 @@ SubDirHdrs [ FDirName $(HAIKU_TOP) headers os add-ons mail_daemon ] ;
UsePrivateHeaders shared ; UsePrivateHeaders shared ;
# TODO(bga): E-mail preferences does not really need to link against the # TODO(bga): E-mail preferences does not really need to link against the
# OpenSSL libraries. Remove this after problems with the runtile loader are # OpenSSL libraries. Remove this after problems with the runtime loader are
# sorted up. Details here: # sorted up. Details here:
# #
# http://www.freelists.org/post/haiku-development/Runtime-loader-problem # http://www.freelists.org/post/haiku-development/Runtime-loader-problem
local sslDir ; local sources =
if $(USE_SSL) {
SubDirC++Flags -DUSE_SSL ;
if ! $(SSL_DIR) {
sslDir = [ FDirName $(HAIKU_OUTPUT_DIR) cross-ssl common ] ;
} else {
sslDir = $(SSL_DIR) ;
}
SubDirSysHdrs [ FDirName $(sslDir) include ] ;
}
Preference E-mail :
Account.cpp Account.cpp
AutoConfig.cpp AutoConfig.cpp
AutoConfigWindow.cpp AutoConfigWindow.cpp
@@ -42,18 +29,30 @@ Preference E-mail :
ConfigViews.cpp ConfigViews.cpp
ConfigWindow.cpp ConfigWindow.cpp
DNSQuery.cpp DNSQuery.cpp
main.cpp main.cpp
: be libmail.so $(HAIKU_NETWORK_LIBS) $(TARGET_NETAPI_LIB) ;
: e-mail.rdef
;
if $(USE_SSL) { if $(HAIKU_OPENSSL_ENABLED) {
LinkAgainst E-mail : $(sslDir)/lib/libssl.so $(sslDir)/lib/libcrypto.so ; SubDirC++Flags -DUSE_SSL ;
SubDirSysHdrs $(HAIKU_OPENSSL_HEADERS) ;
Includes [ FGristFiles $(sources) ] : $(HAIKU_OPENSSL_HEADERS_DEPENDENCY) ;
# Dependency needed to trigger downloading/unzipping the package before
# compiling the files.
SetupFeatureObjectsDir ssl ;
} else {
SetupFeatureObjectsDir no-ssl ;
} }
Preference E-mail
: $(sources)
: be libmail.so $(HAIKU_NETWORK_LIBS) $(TARGET_NETAPI_LIB)
$(HAIKU_OPENSSL_LIBS)
: e-mail.rdef
;
Package haiku-maildaemon-cvs : Package haiku-maildaemon-cvs :
E-mail : E-mail :
boot beos preferences ; boot beos preferences
;
SubInclude HAIKU_TOP src preferences mail ProviderInfo ; SubInclude HAIKU_TOP src preferences mail ProviderInfo ;