Browse Source

add meson/ninja host tools

Waldemar Brodkorb 6 years ago
parent
commit
480c1d4b13
4 changed files with 118 additions and 2 deletions
  1. 14 2
      mk/pkg-bottom.mk
  2. 46 0
      package/meson/Makefile
  3. 22 0
      package/meson/src/cross-compilation.conf.in
  4. 36 0
      package/ninja/Makefile

+ 14 - 2
mk/pkg-bottom.mk

@@ -50,6 +50,13 @@ endif
 
 ifneq ($(filter manual,${CONFIG_STYLE}),)
 	env ${CONFIGURE_ENV} ${MAKE} do-configure $(MAKE_TRACE)
+else ifneq ($(filter meson,${CONFIG_STYLE}),)
+	@$(CMD_TRACE) "configuring meson.. "
+	(cd ${WRKSRC} && PATH='${HOST_PATH}' \
+		meson --prefix /usr --libdir lib \
+		 --cross-file $(STAGING_HOST_DIR)/etc/meson/cross-compilation.conf \
+		 --buildtype release \
+		$(WRKSRC) $(WRKBUILD))
 else ifneq ($(filter cmake,${CONFIG_STYLE}),)
 	@$(CMD_TRACE) "configuring cmake.. "
 	sed -e "s#@@TARGET_CC@@#$(TARGET_CC_NO_CCACHE)#" \
@@ -130,7 +137,9 @@ post-build:
 ${_BUILD_COOKIE}: ${_CONFIGURE_COOKIE}
 	@env ${MAKE_ENV} ${MAKE} pre-build $(MAKE_TRACE)
 	@$(CMD_TRACE) "compiling.. "
-ifneq ($(filter manual,${BUILD_STYLE}),)
+ifneq ($(filter meson,${BUILD_STYLE}),)
+	PATH='$(HOST_PATH)' ninja -v -C $(WRKBUILD)
+else ifneq ($(filter manual,${BUILD_STYLE}),)
 	env ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} do-build $(MAKE_TRACE)
 else ifeq ($(strip ${BUILD_STYLE}),)
 	cd ${WRKBUILD} && env ${MAKE_ENV} ${MAKE} -f ${MAKE_FILE} \
@@ -151,7 +160,10 @@ ${_FAKE_COOKIE}: ${_BUILD_COOKIE}
 	@mkdir -p '${STAGING_PKG_DIR}/stamps' ${WRKINST} '${STAGING_TARGET_DIR}/scripts'
 	@${MAKE} ${_ALL_CONTROLS} $(MAKE_TRACE)
 	@env ${MAKE_ENV} ${MAKE} pre-install $(MAKE_TRACE)
-ifneq ($(filter manual,${INSTALL_STYLE}),)
+ifneq ($(filter meson,${INSTALL_STYLE}),)
+	DESTDIR='$(WRKINST)' PATH='$(HOST_PATH)' \
+		ninja -C $(WRKBUILD) install $(MAKE_TRACE)
+else ifneq ($(filter manual,${INSTALL_STYLE}),)
 	env ${MAKE_ENV} ${MAKE} do-install $(MAKE_TRACE)
 else ifeq ($(strip ${INSTALL_STYLE}),)
 	cd ${WRKBUILD} && env ${MAKE_ENV} ${MAKE} -f ${MAKE_FILE} \

+ 46 - 0
package/meson/Makefile

@@ -0,0 +1,46 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:=		meson
+PKG_VERSION:=		0.44.0
+PKG_RELEASE:=		1
+PKG_HASH:=		5cdbc68c63b5b4a8ee862ab3b6393a2633487ebc9b3e1c3da1091b9c912d1d95
+PKG_DESCR:=		build utility
+PKG_SECTION:=		dev/tools
+HOST_BUILDDEP:=		python3-host ninja-host
+PKG_URL:=		http://www.mesonbuild.com/
+PKG_SITES:=		https://github.com/mesonbuild/meson/archive/
+
+DISTFILES:=		${PKG_VERSION}.tar.gz
+
+PKG_CFLINE_MESON:=	depends on ADK_HOST_ONLY
+
+include $(ADK_TOPDIR)/mk/host.mk
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call HOST_template,MESON,meson,$(PKG_VERSION)-${PKG_RELEASE}))
+
+HOST_STYLE:=		manual
+
+host-configure:
+
+host-build:
+
+meson-hostinstall:
+	(cd $(WRKBUILD); PATH='$(HOST_PATH)' python3 ./setup.py install)
+	$(INSTALL_DIR) $(STAGING_HOST_DIR)/etc/meson
+	sed -e "s%@TARGET_CROSS@%$(TARGET_CROSS)%g" \
+	    -e "s%@TARGET_ARCH@%$(ADK_TARGET_ARCH)%g" \
+	    -e "s%@TARGET_CPU@%$(ADK_TARGET_CPU_ARCH)%g" \
+	    -e "s%@TARGET_ENDIAN@%$(ADK_TARGET_ENDIAN)%g" \
+	    -e "s%@TARGET_CFLAGS@%`printf '"%s", ' $(TARGET_CFLAGS)`%g" \
+	    -e "s%@TARGET_LDFLAGS@%`printf '"%s", ' $(TARGET_LDFLAGS)`%g" \
+	    -e "s%@TARGET_CXXFLAGS@%`printf '"%s", ' $(TARGET_CXXFLAGS)`%g" \
+	    -e "s%@STAGING_HOST_DIR@%$(STAGING_HOST_DIR)%g" \
+		$(WRKBUILD)/cross-compilation.conf.in \
+		> $(STAGING_HOST_DIR)/etc/meson/cross-compilation.conf
+
+include ${ADK_TOPDIR}/mk/host-bottom.mk
+include ${ADK_TOPDIR}/mk/pkg-bottom.mk

+ 22 - 0
package/meson/src/cross-compilation.conf.in

@@ -0,0 +1,22 @@
+# Note: OpenADK's and Meson's terminologies differ about the meaning       
+# of 'build', 'host' and 'target':                                           
+# - OpenADK's 'host' is Meson's 'build'                                    
+# - OpenADK's 'target' is Meson's 'host'                                   
+                                                                             
+[binaries]                                                                   
+c = '@TARGET_CROSS@gcc'                                                      
+cpp = '@TARGET_CROSS@g++'                                                    
+ar = '@TARGET_CROSS@ar'                                                      
+strip = '@TARGET_CROSS@strip'                                                
+pkgconfig = '@STAGING_HOST_DIR@/usr/bin/pkg-config'
+[properties]                                                                 
+c_args = [@TARGET_CFLAGS@]                                                   
+c_link_args = [@TARGET_LDFLAGS@]                                             
+cpp_args = [@TARGET_CXXFLAGS@]                                               
+cpp_link_args = [@TARGET_LDFLAGS@]                                           
+                                                                             
+[host_machine]                                                               
+system = 'linux'                                                             
+cpu_family ='@TARGET_ARCH@'                                                  
+cpu = '@TARGET_CPU@'                                                         
+endian = '@TARGET_ENDIAN@'

+ 36 - 0
package/ninja/Makefile

@@ -0,0 +1,36 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:=		ninja
+PKG_VERSION:=		1.8.2
+PKG_RELEASE:=		1
+PKG_HASH:=		86b8700c3d0880c2b44c2ff67ce42774aaf8c28cbf57725cb881569288c1c6f4
+PKG_DESCR:=		build utility
+PKG_SECTION:=		dev/tools
+PKG_URL:=		http://www.ninja-build.org/
+PKG_SITES:=		https://github.com/ninja-build/ninja/archive/
+
+DISTFILES:=		v${PKG_VERSION}.tar.gz
+
+PKG_CFLINE_NINJA:=	depends on ADK_HOST_ONLY
+
+include $(ADK_TOPDIR)/mk/host.mk
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call HOST_template,NINJA,ninja,$(PKG_VERSION)-${PKG_RELEASE}))
+
+HOST_STYLE:=		manual
+
+host-configure:
+	(cd $(WRKBUILD); ./configure.py --bootstrap)
+
+host-build:
+
+ninja-hostinstall:
+	$(INSTALL_BIN) $(WRKBUILD)/ninja \
+	       $(STAGING_HOST_DIR)/usr/bin
+
+include ${ADK_TOPDIR}/mk/host-bottom.mk
+include ${ADK_TOPDIR}/mk/pkg-bottom.mk