From 39f565a7f448ab2d80ea9bb491265c827c31f717 Mon Sep 17 00:00:00 2001
From: Patrick McDermott <patrick.mcdermott@libiquity.com>
Date: Sat, 18 May 2019 17:12:50 -0400
Subject: config, build: Simplify targets

---
diff --git a/build b/build
index 1a63eb8..1fa5e2a 100755
--- a/build
+++ b/build
@@ -11,18 +11,10 @@ include ../source.mk
 include ../targets.mk
 
 # Hardcode the targets to allow only native compilers for now.
-configure_targets = configure-$(OPK_HOST_ARCH)
-build_targets = build-$(OPK_HOST_ARCH)
-buildnative_targets = buildnative-$(OPK_HOST_ARCH)
-buildcross_targets = buildcross-$(OPK_HOST_ARCH)
-install_targets = install-$(OPK_HOST_ARCH)
-installnative_targets = installnative-$(OPK_HOST_ARCH)
-installcross_targets = installcross-$(OPK_HOST_ARCH)
+targets = $(OPK_HOST_ARCH)
 
 version = $$(printf '%s\n' '$(OPK_SOURCE_VERSION_UPSTREAM)' | sed 's/+sip.*//')
 base_version = $$(printf '%s\n' '$(OPK_SOURCE)' | sed 's/^gcc-//')
-
-target = $$(printf '%s' '$@' | sed 's/^[a-z]*-//')
 target_gnu = $$(oh-architecture $(target))
 
 builddir = obj-$(target)
@@ -94,7 +86,7 @@ nop:
 ../local.mk:
 	>../local.mk
 
-$(configure_targets):
+configure-native configure-cross:
 	set -e; \
 	. "../targets.d/$(target).sh"; \
 	if [ 'x$(OPK_HOST_PLAT)' = 'xbootstrap1' ]; then \
@@ -108,12 +100,8 @@ $(configure_targets):
 		$${target_opts} \
 		$(extra_opts); \
 	fi
-	touch $@
 
-configure: $(configure_targets)
-	touch $@
-
-$(build_targets): configure
+build-gcc-config:
 	# Set the default dynamic linker path inserted into ELF INTERP fields.
 	# These default values are in header files in gcc/config.  They must be
 	# edited here rather than in a patch because any given GCC target
@@ -137,14 +125,8 @@ $(build_targets): configure
 		>"src/gcc/config/$${gcc_config_fragment}"; \
 	printf '\nMULTIARCH_DIRNAME = %s\n' "$(target)" \
 		>>"src/gcc/config/$${gcc_config_fragment}"
-	if [ "x$(target)" = 'x$(OPK_HOST_ARCH)' ]; then \
-		$(MAKE) -f ../build "buildnative-$(target)"; \
-	else \
-		$(MAKE) -f ../build "buildcross-$(target)"; \
-	fi
-	touch $@
 
-$(buildnative_targets):
+build-native: build-gcc-config
 	oh-autobuild -B "$(builddir)" -T $(native_target) -- \
 		-j $${JOBS:-$(jobs)} \
 		$(dir_macros)
@@ -152,22 +134,12 @@ $(buildnative_targets):
 	#	cd "$(builddir)" && make -k check; \
 	#fi
 
-$(buildcross_targets):
+build-cross: build-gcc-config
 	oh-autobuild -B "$(builddir)" -T $(cross_target) -- \
 		-j $${JOBS:-$(jobs)} \
 		$(dir_macros)
 
-build: $(build_targets)
-	touch $@
-
-$(install_targets): build
-	if [ "x$(target)" = 'x$(OPK_HOST_ARCH)' ]; then \
-		$(MAKE) -f ../build "installnative-$(target)"; \
-	else \
-		$(MAKE) -f ../build "installcross-$(target)"; \
-	fi
-
-$(installnative_targets):
+install-native:
 	# The -T option is necessary because otherwise:
 	#   * oh-autoinstall checks for an "install" target by running make with
 	#     the -n option,
@@ -247,7 +219,7 @@ $(installnative_targets):
 		" oh-installfiles -d "$(destdir)"
 	oh-shlibdeps
 
-$(installcross_targets):
+install-cross:
 	oh-autoinstall -B "$(builddir)" -d "$(destdir)" -T install-gcc -- \
 		$(dir_macros)
 	# Change the target architecture prefix of files in /usr/bin.
@@ -285,4 +257,24 @@ $(installcross_targets):
 		" oh-installfiles -d "$(destdir)"
 	oh-shlibdeps
 
-install: $(install_targets)
+configure_$(target) build_$(target) install_$(target):
+	touch $@
+
+configure_$(target): configure-$(type)
+build_$(target): build-$(type)
+install_$(target): install-$(type)
+
+configure build install:
+	for target in $(targets); do \
+		if [ x"$${target}" = x'$(OPK_HOST_ARCH)' ]; then \
+			type='native'; \
+		else \
+			type='cross'; \
+		fi; \
+		$0 target="$${target}" type="$${type}" "$@_$${target}"; \
+	done
+	touch $@
+
+configure:
+build: configure
+install: build
diff --git a/config b/config
index 22b56f0..a44a6c3 100755
--- a/config
+++ b/config
@@ -20,17 +20,11 @@ main()
 				PKG_TARGET_ARCH="${arch}" configure_build
 			done
 			>targets.mk
-			for stamp in configure build buildnative buildcross \
-				install installnative installcross; do
-				printf '%s_targets = \\\n' "${stamp}" \
-					>>targets.mk
-				for arch in ${PKG_TARGETS}; do
-					printf '\t%s-%s \\\n' \
-						"${stamp}" "${arch}" \
-						>>targets.mk
-				done
-				printf '\n' >>targets.mk
+			printf 'targets = \\\n' >>targets.mk
+			for arch in ${PKG_TARGETS}; do
+				printf '\t%s \\\n' "${arch}" >>targets.mk
 			done
+			printf '\n' >>targets.mk
 			;;
 	esac
 }
--
cgit v0.9.1