833b6688aa
* Libraries for a secondary architectures must be placed in a respective subdir. * Add a suffix to the package name when building for a secondary architecture. Looks a bit weird ("haiku_cross_devel_sysroot_x86_gcc_x86.hpkg"), but is consistent.
103 lines
3.5 KiB
Plaintext
103 lines
3.5 KiB
Plaintext
# This package is like the HaikuDevel package, but it is meant for cross
|
|
# development, i.e. it assumes that a specific cross compiler is installed
|
|
# on the Haiku system where this package is being used.
|
|
# The main use of this package is to provide HaikuPorter with a development
|
|
# environment for a cross-build Haiku platform.
|
|
|
|
local primaryArchitecture = $(HAIKU_PACKAGING_ARCHS[1]) ;
|
|
local architecture = $(TARGET_PACKAGING_ARCH) ;
|
|
local isPrimaryArchitecture = [ MultiArchIfPrimary 1 : ] ;
|
|
|
|
local packageNameSuffix = $(primaryArchitecture) ;
|
|
local architectureSubDir ;
|
|
if ! $(isPrimaryArchitecture) {
|
|
packageNameSuffix = $(primaryArchitecture)_$(architecture) ;
|
|
architectureSubDir = $(architecture) ;
|
|
}
|
|
|
|
local additionalLibraries_stage1 ;
|
|
local additionalLibraries
|
|
= [ MultiArchDefaultGristFiles libbe.so libnetwork.so libpackage.so ] ;
|
|
|
|
local stage ;
|
|
for stage in _stage1 "" {
|
|
# first create the actual cross development package
|
|
|
|
local haikuCrossDevelSysrootPackage
|
|
= haiku_cross_devel_sysroot$(stage)_$(packageNameSuffix).hpkg ;
|
|
HaikuPackage $(haikuCrossDevelSysrootPackage) ;
|
|
|
|
local developCrossLibDirTokens = develop lib $(architectureSubDir) ;
|
|
|
|
# glue code
|
|
AddFilesToPackage $(developCrossLibDirTokens) :
|
|
<src!system!glue!arch!$(TARGET_ARCH)!$(architecture)>crti.o
|
|
<src!system!glue!arch!$(TARGET_ARCH)!$(architecture)>crtn.o
|
|
<src!system!glue!$(architecture)>init_term_dyn.o
|
|
<src!system!glue!$(architecture)>start_dyn.o
|
|
<src!system!glue!$(architecture)>haiku_version_glue.o
|
|
;
|
|
|
|
# kernel
|
|
if $(isPrimaryArchitecture) {
|
|
AddFilesToPackage $(developCrossLibDirTokens) : kernel.so : _KERNEL_ ;
|
|
}
|
|
|
|
# libraries
|
|
AddLibrariesToPackage $(developCrossLibDirTokens) :
|
|
[ MultiArchDefaultGristFiles libbsd.so ]
|
|
[ MultiArchDefaultGristFiles libroot.so : revisioned ]
|
|
$(HAIKU_SHARED_LIBSTDC++_$(architecture))
|
|
$(HAIKU_SHARED_LIBSUPC++_$(architecture))
|
|
$(additionalLibraries$(stage))
|
|
;
|
|
|
|
# static libraries
|
|
AddFilesToPackage $(developCrossLibDirTokens)
|
|
: <$(architecture)>liblocalestub.a ;
|
|
|
|
# the POSIX error code mapper library
|
|
AddFilesToPackage $(developCrossLibDirTokens)
|
|
: [ MultiArchDefaultGristFiles libposix_error_mapper.a ] ;
|
|
|
|
# headers
|
|
local developCrossHeadersDirTokens = develop headers ;
|
|
local headerDir ;
|
|
for headerDir in config glibc os posix {
|
|
CopyDirectoryToPackage $(developCrossHeadersDirTokens)
|
|
: [ FDirName $(HAIKU_TOP) headers $(headerDir) ] ;
|
|
}
|
|
|
|
# BSD and GNU compatibility headers
|
|
for headerDir in bsd gnu {
|
|
CopyDirectoryToPackage $(developCrossHeadersDirTokens)
|
|
: [ FDirName $(HAIKU_TOP) headers compatibility $(headerDir) ] ;
|
|
}
|
|
|
|
# cpp headers
|
|
if $(HAIKU_GCC_VERSION_$(architecture)[1]) = 2 {
|
|
# GCC 2 only -- for GCC 4 they come with the DevelopmentBase package
|
|
CopyDirectoryToPackage $(developCrossHeadersDirTokens) c++
|
|
: [ FDirName $(HAIKU_TOP) headers cpp ] : 2.95.3 ;
|
|
}
|
|
|
|
BuildHaikuPackage $(haikuCrossDevelSysrootPackage)
|
|
: haiku_cross_devel_sysroot ;
|
|
|
|
# Now create a wrapper package which just contains the actual cross
|
|
# development package. This wrapper package can safely be installed into the
|
|
# system hierarchy of the target system, from where haikuporter will fetch
|
|
# it when needed.
|
|
|
|
local haikuCrossDevelPackage
|
|
= haiku_cross_devel$(stage)_$(packageNameSuffix).hpkg ;
|
|
HaikuPackage $(haikuCrossDevelPackage) ;
|
|
|
|
# add the wrapped package
|
|
local developCrossDirTokens = develop cross ;
|
|
AddFilesToPackage $(developCrossDirTokens)
|
|
: $(haikuCrossDevelSysrootPackage) ;
|
|
|
|
BuildHaikuPackage $(haikuCrossDevelPackage) : haiku_cross_devel ;
|
|
}
|