#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source.  A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#

#
# Copyright 2026 Oxide Computer Company
#

PROGS = posix_spawn_chdir posix_spawn_fileactions posix_spawn_attr \
	posix_spawn_path posix_spawn_pipe_np posix_spawn_priv

HELPERS32 = posix_spawn_child.32
HELPERS64 = posix_spawn_child.64

DATA = posix_spawn_noshebang

COMMON_OBJS32 = posix_spawn_common.32.o
COMMON_OBJS64 = posix_spawn_common.64.o

PROGS32 = $(PROGS:%=%.32) $(HELPERS32)
PROGS64 = $(PROGS:%=%.64) $(HELPERS64)
OBJS32 = $(PROGS32:%=%.o) $(COMMON_OBJS32)
OBJS64 = $(PROGS64:%=%.o) $(COMMON_OBJS64)

ROOTOPTDIR = $(ROOT)/opt/libc-tests/tests
ROOTOPTSPAWN = $(ROOTOPTDIR)/posix_spawn
ROOTOPTPROGS =	$(PROGS32:%=$(ROOTOPTSPAWN)/%) \
		$(PROGS64:%=$(ROOTOPTSPAWN)/%)
ROOTOPTDATA = $(DATA:%=$(ROOTOPTSPAWN)/%)

include $(SRC)/cmd/Makefile.cmd
include $(SRC)/cmd/Makefile.ctf

CSTD = $(CSTD_GNU17)
CPPFLAGS += -D_REENTRANT
CTF_MODE = link

.KEEP_STATE:

all: $(PROGS32) $(PROGS64)

$(ROOTOPTSPAWN)/posix_spawn_noshebang := FILEMODE = 0555

install: $(ROOTOPTPROGS) $(ROOTOPTDATA)

$(ROOTOPTDIR):
	$(INS.dir)

$(ROOTOPTSPAWN): $(ROOTOPTDIR)
	$(INS.dir)

$(ROOTOPTPROGS): $(PROGS32) $(PROGS64) $(ROOTOPTSPAWN)
$(ROOTOPTDATA): $(ROOTOPTSPAWN)

$(ROOTOPTSPAWN)/%: %
	$(INS.file)

%.32.o: %.c
	$(COMPILE.c) -o $@ $<
	$(POST_PROCESS_O)

%.32: %.32.o $(COMMON_OBJS32)
	$(LINK.c) -o $@ $< $(COMMON_OBJS32) $(LDLIBS)
	$(POST_PROCESS)

%.64.o: %.c
	$(COMPILE64.c) -o $@ $<
	$(POST_PROCESS_O)

%.64: %.64.o $(COMMON_OBJS64)
	$(LINK64.c) -o $@ $< $(COMMON_OBJS64) $(LDLIBS64)
	$(POST_PROCESS)

clean:
	$(RM) $(OBJS32) $(OBJS64)

clobber: clean
	$(RM) $(PROGS32) $(PROGS64)
