# Makefile for C source code
#
# Copyright (C) 2011 Colin Walters <walters@verbum.org>
#
# SPDX-License-Identifier: LGPL-2.0+
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <https://www.gnu.org/licenses/>.

bin_PROGRAMS += ostree

ostree_SOURCES = src/ostree/main.c \
	src/ostree/ot-builtin-admin.c \
	src/ostree/ot-builtins.h \
	src/ostree/ot-builtin-cat.c \
	src/ostree/ot-builtin-config.c \
	src/ostree/ot-builtin-checkout.c \
	src/ostree/ot-builtin-checksum.c \
	src/ostree/ot-builtin-commit.c \
	src/ostree/ot-builtin-create-usb.c \
	src/ostree/ot-builtin-diff.c \
	src/ostree/ot-builtin-export.c \
	src/ostree/ot-builtin-find-remotes.c \
	src/ostree/ot-builtin-fsck.c \
	src/ostree/ot-builtin-init.c \
	src/ostree/ot-builtin-pull-local.c \
	src/ostree/ot-builtin-log.c \
	src/ostree/ot-builtin-ls.c \
	src/ostree/ot-builtin-prune.c \
	src/ostree/ot-builtin-refs.c \
	src/ostree/ot-builtin-remote.c \
	src/ostree/ot-builtin-reset.c \
	src/ostree/ot-builtin-rev-parse.c \
	src/ostree/ot-builtin-sign.c \
	src/ostree/ot-builtin-summary.c \
	src/ostree/ot-builtin-show.c \
	src/ostree/ot-builtin-static-delta.c \
	src/ostree/ot-main.h \
	src/ostree/ot-main.c \
	src/ostree/ot-dump.h \
	src/ostree/ot-dump.c \
	src/ostree/ot-editor.c \
	src/ostree/ot-editor.h \
	src/ostree/parse-datetime.h \
	$(NULL)

nodist_ostree_SOURCES = \
	src/ostree/parse-datetime.c \
	$(NULL)

if USE_GPGME
ostree_SOURCES += \
	src/ostree/ot-builtin-gpg-sign.c \
	$(NULL)
endif

# Admin subcommand
ostree_SOURCES += \
	src/ostree/ot-admin-builtin-init-fs.c \
	src/ostree/ot-admin-builtin-diff.c \
	src/ostree/ot-admin-builtin-deploy.c \
	src/ostree/ot-admin-builtin-finalize-staged.c \
	src/ostree/ot-admin-builtin-boot-complete.c \
	src/ostree/ot-admin-builtin-undeploy.c \
	src/ostree/ot-admin-builtin-instutil.c \
	src/ostree/ot-admin-builtin-cleanup.c \
	src/ostree/ot-admin-builtin-os-init.c \
	src/ostree/ot-admin-builtin-set-origin.c \
	src/ostree/ot-admin-builtin-status.c \
	src/ostree/ot-admin-builtin-switch.c \
	src/ostree/ot-admin-builtin-pin.c \
	src/ostree/ot-admin-builtin-upgrade.c \
	src/ostree/ot-admin-builtin-unlock.c \
	src/ostree/ot-admin-builtins.h \
	src/ostree/ot-admin-instutil-builtin-selinux-ensure-labeled.c \
	src/ostree/ot-admin-instutil-builtin-set-kargs.c \
	src/ostree/ot-admin-instutil-builtin-grub2-generate.c \
	src/ostree/ot-admin-instutil-builtins.h \
	src/ostree/ot-admin-functions.h \
	src/ostree/ot-admin-functions.c \
	$(NULL)

# Remote subcommand
ostree_SOURCES += \
	src/ostree/ot-remote-builtins.h \
	src/ostree/ot-remote-builtin-add.c \
	src/ostree/ot-remote-builtin-delete.c \
	src/ostree/ot-remote-builtin-list.c \
	src/ostree/ot-remote-builtin-show-url.c \
	src/ostree/ot-remote-builtin-refs.c \
	src/ostree/ot-remote-builtin-summary.c \
	$(NULL)

if USE_GPGME
ostree_SOURCES += \
	src/ostree/ot-remote-builtin-gpg-import.c \
	src/ostree/ot-remote-builtin-gpg-list-keys.c \
	$(NULL)
endif

if USE_CURL_OR_SOUP
ostree_SOURCES += src/ostree/ot-remote-builtin-add-cookie.c \
  src/ostree/ot-remote-builtin-delete-cookie.c \
  src/ostree/ot-remote-builtin-list-cookies.c \
  src/ostree/ot-remote-cookie-util.h \
  src/ostree/ot-remote-cookie-util.c \
  $(NULL)
endif

src/ostree/parse-datetime.c: src/ostree/parse-datetime.y Makefile
	mkdir -p src/ostree/
	$(AM_V_GEN) $(YACC) $< -o $@

EXTRA_DIST += src/ostree/parse-datetime.y
CLEANFILES += src/ostree/parse-datetime.c

ostree_bin_shared_cflags = $(AM_CFLAGS) -I$(srcdir)/src/libotutil -I$(srcdir)/src/libostree \
	-I$(builddir)/src/libostree -I$(srcdir)/src/ostree -I$(srcdir)/libglnx $(OT_INTERNAL_GIO_UNIX_CFLAGS) \
	-DPKGLIBEXECDIR=\"$(pkglibexecdir)\"
ostree_bin_shared_ldadd = $(AM_LDFLAGS) libglnx.la libotutil.la libostree-1.la \
	$(OT_INTERNAL_GIO_UNIX_LIBS)

ostree_CFLAGS = $(ostree_bin_shared_cflags)
ostree_LDADD = $(ostree_bin_shared_ldadd) libbsdiff.la $(LIBSYSTEMD_LIBS)


if USE_CURL_OR_SOUP
ostree_SOURCES += src/ostree/ot-builtin-pull.c
endif

if USE_LIBSOUP
# Eventually once we stop things from using this, we should support disabling this
ostree_SOURCES += src/ostree/ot-builtin-trivial-httpd.c
pkglibexec_PROGRAMS += ostree-trivial-httpd
ostree_trivial_httpd_SOURCES = src/ostree/ostree-trivial-httpd.c
ostree_trivial_httpd_CFLAGS = $(ostree_bin_shared_cflags) $(OT_INTERNAL_SOUP_CFLAGS)
ostree_trivial_httpd_LDADD = $(ostree_bin_shared_ldadd) $(OT_INTERNAL_SOUP_LIBS)

if !USE_CURL
# This is necessary for the cookie jar bits
ostree_CFLAGS += $(OT_INTERNAL_SOUP_CFLAGS)
ostree_LDADD += $(OT_INTERNAL_SOUP_LIBS)
endif
endif

if USE_LIBARCHIVE
ostree_CFLAGS += $(OT_DEP_LIBARCHIVE_CFLAGS)
ostree_LDADD += $(OT_DEP_LIBARCHIVE_LIBS)
endif

if USE_LIBSODIUM
ostree_CFLAGS += $(OT_DEP_LIBSODIUM_CFLAGS)
ostree_LDADD += $(OT_DEP_LIBSODIUM_LIBS)
endif # USE_LIBSODIUM
