sg3-utils: add newer buildable version
[openembedded.git] / classes / native.bbclass
1 # Native packages are built indirectly via dependency,
2 # no need for them to be a direct target of 'world'
3 EXCLUDE_FROM_WORLD = "1"
4
5 PACKAGES = ""
6 PACKAGE_ARCH = "${BUILD_ARCH}"
7
8 BASE_PACKAGE_ARCH = "${BUILD_ARCH}"
9 BASEPKG_HOST_SYS = "${BUILD_ARCH}${BUILD_VENDOR}-${BUILD_OS}"
10 BASEPKG_TARGET_SYS = "${BUILD_ARCH}${BUILD_VENDOR}-${BUILD_OS}"
11
12 # When this class has packaging enabled, setting 
13 # RPROVIDES becomes unnecessary.
14 RPROVIDES = "${PN}"
15
16 TARGET_ARCH = "${BUILD_ARCH}"
17 TARGET_OS = "${BUILD_OS}"
18 TARGET_VENDOR = "${BUILD_VENDOR}"
19 TARGET_PREFIX = "${BUILD_PREFIX}"
20 TARGET_CC_ARCH = "${BUILD_CC_ARCH}"
21 TARGET_EXEEXT = "${BUILD_EXEEXT}"
22
23 HOST_ARCH = "${BUILD_ARCH}"
24 HOST_OS = "${BUILD_OS}"
25 HOST_VENDOR = "${BUILD_VENDOR}"
26 HOST_PREFIX = "${BUILD_PREFIX}"
27 HOST_CC_ARCH = "${BUILD_CC_ARCH}"
28 HOST_EXEEXT = "${BUILD_EXEEXT}"
29
30 CPPFLAGS = "${BUILD_CPPFLAGS}"
31 CFLAGS = "${BUILD_CFLAGS}"
32 CXXFLAGS = "${BUILD_CFLAGS}"
33 LDFLAGS = "${BUILD_LDFLAGS}"
34 LDFLAGS_build-darwin = "-L${STAGING_LIBDIR_NATIVE} "
35
36 STAGING_BINDIR = "${STAGING_BINDIR_NATIVE}"
37 STAGING_BINDIR_CROSS = "${STAGING_BINDIR_NATIVE}"
38
39 STAGING_DIR_JAVA = "${STAGING_DATADIR_JAVA_NATIVE}"
40
41 # Don't use site files for native builds
42 export CONFIG_SITE = ""
43
44 # set the compiler as well. It could have been set to something else
45 export CC = "${CCACHE}${HOST_PREFIX}gcc ${HOST_CC_ARCH}"
46 export CXX = "${CCACHE}${HOST_PREFIX}g++ ${HOST_CC_ARCH}"
47 export F77 = "${CCACHE}${HOST_PREFIX}g77 ${HOST_CC_ARCH}"
48 export CPP = "${HOST_PREFIX}gcc -E"
49 export LD = "${HOST_PREFIX}ld"
50 export CCLD = "${CC}"
51 export AR = "${HOST_PREFIX}ar"
52 export AS = "${HOST_PREFIX}as"
53 export RANLIB = "${HOST_PREFIX}ranlib"
54 export STRIP = "${HOST_PREFIX}strip"
55
56 # Path prefixes
57 base_prefix = "${STAGING_DIR_NATIVE}"
58 prefix = "${STAGING_DIR_NATIVE}${prefix_native}"
59 exec_prefix = "${STAGING_DIR_NATIVE}${prefix_native}"
60
61 # Since we actually install these into situ there is no staging prefix
62 STAGING_DIR_HOST = ""
63 STAGING_DIR_TARGET = ""
64 SHLIBSDIR = "${STAGING_DIR_NATIVE}/shlibs"
65 PKG_CONFIG_DIR = "${libdir}/pkgconfig"
66
67 do_stage_native () {
68         # If autotools is active, use the autotools staging function, else 
69         # use our "make install" equivalent
70         if [ "${AUTOTOOLS_NATIVE_STAGE_INSTALL}" == "1" ]
71         then
72                 autotools_stage_all
73         else
74                 oe_runmake install
75         fi
76 }
77
78 do_stage () {
79         do_stage_native
80 }
81
82 PKG_CONFIG_PATH .= "${EXTRA_NATIVE_PKGCONFIG_PATH}"
83 PKG_CONFIG_SYSROOT_DIR = ""
84
85 ORIG_DEPENDS := "${DEPENDS}"
86
87 DEPENDS_virtclass-native ?= "${ORIG_DEPENDS}"
88
89 python __anonymous () {
90     # If we've a legacy native do_stage, we need to neuter do_install
91     stagefunc = bb.data.getVar('do_stage', d, True)
92
93     # For now, force legacy mode for native packages using autotools_stage_all
94     if (stagefunc.strip() == "autotools_stage_all"):
95         bb.debug(1, "Forcing legacy staging mode for %s" % bb.data.getVar('FILE', d, 1))
96         bb.data.setVar('FORCE_LEGACY_STAGING', "1", d)
97     elif (stagefunc.strip() != "do_stage_native" and stagefunc.strip() != "autotools_stage_all") and bb.data.getVar('AUTOTOOLS_NATIVE_STAGE_INSTALL', d, 1) == "1":
98         bb.data.setVar("do_install", "      :", d)
99
100     if "native" in (bb.data.getVar('BBCLASSEXTEND', d, True) or ""):
101         pn = bb.data.getVar("PN", d, True)
102         depends = bb.data.getVar("DEPENDS_virtclass-native", d, True)
103         deps = bb.utils.explode_deps(depends)
104         newdeps = []
105         for dep in deps:
106             if dep.endswith("-cross"):
107                 newdeps.append(dep.replace("-cross", "-native"))
108             elif not dep.endswith("-native"):
109      
110                 newdeps.append(dep + "-native")
111             else:
112                 newdeps.append(dep)
113         bb.data.setVar("DEPENDS_virtclass-native", " ".join(newdeps), d)
114         provides = bb.data.getVar("PROVIDES", d, True)
115         for prov in provides.split():
116             if prov.find(pn) != -1:
117                 continue
118             if not prov.endswith("-native"):
119     
120                 provides = provides.replace(prov, prov + "-native")
121         bb.data.setVar("PROVIDES", provides, d)
122         bb.data.setVar("OVERRIDES", bb.data.getVar("OVERRIDES", d, False) + ":virtclass-native", d)
123 }
124