Отказ от ответственности:
- Я ничего не знаю о z / OS USS,
- Я много знаю о Маке (и когда ты держишь молоток, ...).
Совет:
Да, я бы рекомендовал использовать GNUMake на обеих платформах и сохранять ваши Makefile как можно более распространенными.
Есть несколько способов поместить условия в Makefile.
# Usually one defines a variable first.
SYSTEM = $(shell uname)
# Then one can define other variables conditionally
SOMEFILE = $(SYSTEM)_file
ifeq ($(SYSTEM), Linux)
# Do some Linux things, define variables, whatever.
else
# Do some z/OS USS things.
endif
# In a block of commands, if the conditional DOESN'T start with a tab,
# it's a Make statement and follows Make syntax.
thing:
ifeq($(SYSTEM), Linux)
shell-command-do-something
endif
# If the conditional DOES follow a tab, Make expands the variables and passes
# the whole thing to the shell, so the syntax is whatever the shell requires.
otherthing:
if($(SYSTEM)==ZOS) do_x ; otherwise do_y ; finish
И есть другие, более продвинутые трюки, чтобы попробовать, когда вам это надоело.
Я не уверен, что вы имеете в виду, когда говорите, что хотите, чтобы команды обрабатывались в группах, но я подозреваю, что вы можете получить то, что хотите, добавив; \ к каждой команде в группе, чтобы они были выполняется один за другим в одном и том же подоболочке (в противном случае каждая команда получает свой собственный подоболочек).