nuttx-apps/examples/tlpi/Makefile
zhengyu16 9cda1fbb60 fs: rename PSEUDOFS_SOFTLINKS to FS_LINKS
The link support is no longer limited to the pseudo file system and now
covers both soft (symbolic) links and hard links across the VFS.  Update
all references to the renamed configuration option PSEUDOFS_SOFTLINKS,
which has been renamed to FS_LINKS in the NuttX kernel, so that nshlib,
the interpreters, adb, tlpi and the test suites keep building.

This must be merged together with the corresponding NuttX change that
performs the actual kernel-side rename.

Signed-off-by: zhengyu16 <zhengyu16@xiaomi.com>
2026-08-27 13:31:34 +08:00

494 lines
19 KiB
Makefile

############################################################################
# apps/examples/tlpi/Makefile
#
# SPDX-License-Identifier: Apache-2.0
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
############################################################################
include $(APPDIR)/Make.defs
PRIORITY = $(CONFIG_EXAMPLES_TLPI_PRIORITY)
STACKSIZE = $(CONFIG_EXAMPLES_TLPI_STACKSIZE)
MODULE = $(CONFIG_EXAMPLES_TLPI)
TLPI_DOWNLOAD_URL = https://github.com/bradfa/tlpi-dist/archive/refs/heads
TLPI_UNPACK = tlpi
TLPIDIR = $(APPDIR)/examples/tlpi/tlpi
#CFLAGS += ${INCDIR_PREFIX}$(TLPIDIR)/cap
CFLAGS += ${INCDIR_PREFIX}$(TLPIDIR)/daemons
CFLAGS += ${INCDIR_PREFIX}$(TLPIDIR)/filelock
CFLAGS += ${INCDIR_PREFIX}$(TLPIDIR)/files
CFLAGS += ${INCDIR_PREFIX}$(TLPIDIR)/lib
CFLAGS += ${INCDIR_PREFIX}$(TLPIDIR)/namespaces
CFLAGS += ${INCDIR_PREFIX}$(TLPIDIR)/pipes
CFLAGS += ${INCDIR_PREFIX}$(TLPIDIR)/procexec
CFLAGS += ${INCDIR_PREFIX}$(TLPIDIR)/procres
CFLAGS += ${INCDIR_PREFIX}$(TLPIDIR)/pty
CFLAGS += ${INCDIR_PREFIX}$(TLPIDIR)/seccomp
CFLAGS += ${INCDIR_PREFIX}$(TLPIDIR)/signals
CFLAGS += ${INCDIR_PREFIX}$(TLPIDIR)/sockets
CFLAGS += ${INCDIR_PREFIX}$(TLPIDIR)/svmsg
CFLAGS += ${INCDIR_PREFIX}$(TLPIDIR)/svsem
CFLAGS += ${INCDIR_PREFIX}$(TLPIDIR)/time
CFLAGS += ${INCDIR_PREFIX}$(TLPIDIR)/timers
CFLAGS += ${INCDIR_PREFIX}$(TLPIDIR)/tty
CFLAGS += ${INCDIR_PREFIX}$(TLPIDIR)/users_groups
CFLAGS += -Wno-strict-prototypes -Wno-unused-variable -Wno-unused-function \
-Wno-unused-but-set-variable -Wno-uninitialized
#CSRCS += $(TLPIDIR)/cap/cap_functions.c \
# $(TLPIDIR)/daemons/become_daemon.c
CSRCS += $(TLPIDIR)/filelock/create_pid_file.c \
$(TLPIDIR)/filelock/region_locking.c \
$(TLPIDIR)/files/file_perms.c \
$(TLPIDIR)/lib/alt_functions.c \
$(TLPIDIR)/lib/error_functions.c \
$(TLPIDIR)/lib/get_num.c
# $(TLPIDIR)/namespaces/userns_functions.c
CSRCS += $(TLPIDIR)/procexec/print_wait_status.c \
$(TLPIDIR)/procres/print_rlimit.c
# $(TLPIDIR)/procres/print_rusage.c \
# $(TLPIDIR)/pty/pty_fork.c
CSRCS += $(TLPIDIR)/pty/pty_master_open.c
# $(TLPIDIR)/pty/pty_master_open_bsd.c \
# $(TLPIDIR)/seccomp/seccomp_functions.c
CSRCS += $(TLPIDIR)/signals/signal.c \
$(TLPIDIR)/signals/signal_functions.c \
$(TLPIDIR)/sockets/inet_sockets.c \
$(TLPIDIR)/sockets/rdwrn.c \
$(TLPIDIR)/sockets/read_line.c \
$(TLPIDIR)/sockets/read_line_buf.c \
$(TLPIDIR)/sockets/scm_functions.c \
$(TLPIDIR)/sockets/sendfile.c \
$(TLPIDIR)/sockets/unix_sockets.c
# $(TLPIDIR)/svsem/binary_sems.c \
# $(TLPIDIR)/svsem/event_flags.c \
# $(TLPIDIR)/threads/strerror.c \
# $(TLPIDIR)/threads/strerror_tls.c \
# $(TLPIDIR)/threads/strerror_tsd.c
CSRCS += $(TLPIDIR)/time/curr_time.c \
$(TLPIDIR)/timers/itimerspec_from_str.c \
$(TLPIDIR)/tty/tty_functions.c \
$(TLPIDIR)/users_groups/ugid_functions.c
# acl
#MAINSRC += $(TLPIDIR)/acl/acl_update.c \
# $(TLPIDIR)/acl/acl_view.c
# altio
MAINSRC += $(TLPIDIR)/altio/demo_sigio.c \
$(TLPIDIR)/altio/epoll_flags_fork.c \
$(TLPIDIR)/altio/epoll_input.c \
$(TLPIDIR)/altio/multithread_epoll_wait.c \
$(TLPIDIR)/altio/poll_pipes.c \
$(TLPIDIR)/altio/select_mq.c \
$(TLPIDIR)/altio/self_pipe.c \
$(TLPIDIR)/altio/t_select.c
# cap
#MAINSRC += $(TLPIDIR)/cap/cap_launcher.c \
# $(TLPIDIR)/cap/cap_text.c \
# $(TLPIDIR)/cap/check_password_caps.c \
# $(TLPIDIR)/cap/demo_file_caps.c \
# $(TLPIDIR)/cap/show_secbits.c \
# $(TLPIDIR)/cap/t_cap_get_file.c \
# $(TLPIDIR)/cap/t_cap_get_pid.c \
# $(TLPIDIR)/cap/t_cap_set_file.c \
# $(TLPIDIR)/cap/view_cap_xattr.c
# cgroups
#MAINSRC += $(TLPIDIR)/cgroups/alloc_mem.c
MAINSRC += $(TLPIDIR)/cgroups/fork_bomb.c
# $(TLPIDIR)/cgroups/fork_bomb_simple.c
# daemons
#MAINSRC += $(TLPIDIR)/daemons/daemon_SIGHUP.c
MAINSRC += $(TLPIDIR)/daemons/t_syslog.c
# $(TLPIDIR)/daemons/test_become_daemon.c
# dirs_links
MAINSRC += $(TLPIDIR)/dirs_links/file_type_stats.c \
$(TLPIDIR)/dirs_links/list_files.c \
$(TLPIDIR)/dirs_links/list_files_readdir_r.c \
$(TLPIDIR)/dirs_links/nftw_dir_tree.c \
$(TLPIDIR)/dirs_links/t_unlink.c \
$(TLPIDIR)/dirs_links/t_dirbasename.c
ifneq ($(CONFIG_FS_LINKS),)
MAINSRC += $(TLPIDIR)/dirs_links/bad_symlink.c \
$(TLPIDIR)/dirs_links/view_symlink.c
endif
# filebuff
MAINSRC += $(TLPIDIR)/filebuff/direct_read.c \
$(TLPIDIR)/filebuff/mix23_linebuff.c \
$(TLPIDIR)/filebuff/mix23io.c \
$(TLPIDIR)/filebuff/write_bytes.c
# fileio
MAINSRC += $(TLPIDIR)/fileio/atomic_append.c \
$(TLPIDIR)/fileio/bad_exclusive_open.c \
$(TLPIDIR)/fileio/copy.c \
$(TLPIDIR)/fileio/large_file.c \
$(TLPIDIR)/fileio/multi_descriptors.c \
$(TLPIDIR)/fileio/seek_io.c \
$(TLPIDIR)/fileio/t_readv.c \
$(TLPIDIR)/fileio/t_truncate.c
# filelock
MAINSRC += $(TLPIDIR)/filelock/i_fcntl_locking.c
# $(TLPIDIR)/filelock/t_flock.c
# files
# $(TLPIDIR)/files/chiflag.c
MAINSRC += $(TLPIDIR)/files/t_chown.c \
$(TLPIDIR)/files/t_stat.c \
$(TLPIDIR)/files/t_umask.c \
$(TLPIDIR)/files/t_utime.c \
$(TLPIDIR)/files/t_utimes.c
# filesys
#MAINSRC += $(TLPIDIR)/filesys/t_mount.c \
# $(TLPIDIR)/filesys/t_statfs.c
MAINSRC += $(TLPIDIR)/filesys/t_statvfs.c \
$(TLPIDIR)/filesys/t_umount.c
# getopt
MAINSRC += $(TLPIDIR)/getopt/t_getopt.c
ifneq ($(CONFIG_FS_NOTIFY),)
# inotify
MAINSRC += $(TLPIDIR)/inotify/demo_inotify.c
# $(TLPIDIR)/inotify/dnotify.c \
# $(TLPIDIR)/inotify/inotify_dtree.c
endif
MAINSRC += $(TLPIDIR)/inotify/rand_dtree.c
# loginacct
#MAINSRC += $(TLPIDIR)/loginacct/dump_utmpx.c \
# $(TLPIDIR)/loginacct/utmpx_login.c \
# $(TLPIDIR)/loginacct/view_lastlog.c
# memalloc
ifneq ($(CONFIG_BUILD_KERNEL),)
MAINSRC += $(TLPIDIR)/memalloc/free_and_sbrk.c
endif
# mmap
MAINSRC += $(TLPIDIR)/mmap/anon_mmap.c \
$(TLPIDIR)/mmap/mmcat.c \
$(TLPIDIR)/mmap/mmcopy.c \
$(TLPIDIR)/mmap/t_mmap.c
# $(TLPIDIR)/mmap/t_remap_file_pages.c
# namespaces
#MAINSRC += $(TLPIDIR)/namespaces/cred_launcher.c \
# $(TLPIDIR)/namespaces/demo_userns.c \
# $(TLPIDIR)/namespaces/demo_uts_namespaces.c
MAINSRC += $(TLPIDIR)/namespaces/hostname.c
# $(TLPIDIR)/namespaces/make_orphans.c \
# $(TLPIDIR)/namespaces/multi_pidns.c \
# $(TLPIDIR)/namespaces/ns_capable.c \
# $(TLPIDIR)/namespaces/ns_child_exec.c \
# $(TLPIDIR)/namespaces/ns_exec.c \
# $(TLPIDIR)/namespaces/ns_run.c \
# $(TLPIDIR)/namespaces/orphan.c \
# $(TLPIDIR)/namespaces/pidns_init_sleep.c \
# $(TLPIDIR)/namespaces/show_creds.c \
# $(TLPIDIR)/namespaces/simple_init.c \
# $(TLPIDIR)/namespaces/t_setns_userns.c \
# $(TLPIDIR)/namespaces/unshare.c \
# $(TLPIDIR)/namespaces/userns_child_exec.c \
# $(TLPIDIR)/namespaces/userns_setns_test.c
# pgsjc
#MAINSRC += $(TLPIDIR)/pgsjc/catch_SIGHUP.c \
# $(TLPIDIR)/pgsjc/disc_SIGHUP.c
MAINSRC += $(TLPIDIR)/pgsjc/handling_SIGTSTP.c
# $(TLPIDIR)/pgsjc/job_mon.c \
# $(TLPIDIR)/pgsjc/orphaned_pgrp_SIGHUP.c \
# $(TLPIDIR)/pgsjc/t_setsid.c
# pipes
MAINSRC += $(TLPIDIR)/pipes/change_case.c \
$(TLPIDIR)/pipes/fifo_seqnum_client.c \
$(TLPIDIR)/pipes/fifo_seqnum_server.c
# $(TLPIDIR)/pipes/popen_glob.c
ifneq ($(CONFIG_LIBC_EXECFUNCS),)
MAINSRC += $(TLPIDIR)/pipes/pipe_ls_wc.c
endif
MAINSRC += $(TLPIDIR)/pipes/pipe_sync.c \
$(TLPIDIR)/pipes/simple_pipe.c
# pmsg
MAINSRC += $(TLPIDIR)/pmsg/mq_notify_sig.c \
$(TLPIDIR)/pmsg/mq_notify_siginfo.c
# $(TLPIDIR)/pmsg/mq_notify_sigwaitinfo.c \
# $(TLPIDIR)/pmsg/mq_notify_thread.c
MAINSRC += $(TLPIDIR)/pmsg/mq_notify_via_signal.c
# $(TLPIDIR)/pmsg/mq_notify_via_thread.c
MAINSRC += $(TLPIDIR)/pmsg/pmsg_create.c
# $(TLPIDIR)/pmsg/pmsg_getattr.c
MAINSRC += $(TLPIDIR)/pmsg/pmsg_receive.c \
$(TLPIDIR)/pmsg/pmsg_send.c \
$(TLPIDIR)/pmsg/pmsg_unlink.c
# proc
MAINSRC += $(TLPIDIR)/proc/bad_longjmp.c \
$(TLPIDIR)/proc/display_env.c \
$(TLPIDIR)/proc/longjmp.c \
$(TLPIDIR)/proc/mem_segments.c \
$(TLPIDIR)/proc/modify_env.c \
$(TLPIDIR)/proc/necho.c \
$(TLPIDIR)/proc/setenv.c \
$(TLPIDIR)/proc/setjmp_vars.c \
$(TLPIDIR)/proc/t_getenv.c
# proccred
#MAINSRC += $(TLPIDIR)/proccred/idshow.c
# procexec
#MAINSRC += $(TLPIDIR)/procexec/acct_on.c \
# $(TLPIDIR)/procexec/acct_view.c \
# $(TLPIDIR)/procexec/acct_v3_view.c \
# $(TLPIDIR)/procexec/demo_clone.c
MAINSRC += $(TLPIDIR)/procexec/child_status.c \
$(TLPIDIR)/procexec/envargs.c \
$(TLPIDIR)/procexec/exit_handlers.c
ifneq ($(CONFIG_BUILD_KERNEL),)
MAINSRC += $(TLPIDIR)/procexec/footprint.c
endif
MAINSRC += $(TLPIDIR)/procexec/fork_file_sharing.c \
$(TLPIDIR)/procexec/fork_stdio_buf.c \
$(TLPIDIR)/procexec/fork_sig_sync.c \
$(TLPIDIR)/procexec/fork_whos_on_first.c \
$(TLPIDIR)/procexec/make_zombie.c \
$(TLPIDIR)/procexec/multi_SIGCHLD.c \
$(TLPIDIR)/procexec/multi_wait.c \
$(TLPIDIR)/procexec/orphan.c
# $(TLPIDIR)/procexec/pdeath_signal.c
# $(TLPIDIR)/procexec/t_clone.c
ifneq ($(CONFIG_LIBC_EXECFUNCS),)
MAINSRC += $(TLPIDIR)/procexec/closeonexec.c \
$(TLPIDIR)/procexec/t_execl.c \
$(TLPIDIR)/procexec/t_execle.c \
$(TLPIDIR)/procexec/t_execlp.c \
$(TLPIDIR)/procexec/t_execve.c
endif
MAINSRC += $(TLPIDIR)/procexec/t_fork.c \
$(TLPIDIR)/procexec/t_system.c \
$(TLPIDIR)/procexec/t_vfork.c \
$(TLPIDIR)/procexec/vfork_fd_test.c
# procpri
MAINSRC += $(TLPIDIR)/procpri/demo_sched_fifo.c \
$(TLPIDIR)/procpri/sched_set.c \
$(TLPIDIR)/procpri/sched_view.c \
$(TLPIDIR)/procpri/t_sched_getaffinity.c \
$(TLPIDIR)/procpri/t_sched_setaffinity.c \
$(TLPIDIR)/procpri/t_setpriority.c
# procres
#MAINSRC += $(TLPIDIR)/procres/rlimit_nproc.c \
# $(TLPIDIR)/procres/rusage.c
MAINSRC += $(TLPIDIR)/procres/rusage_wait.c
# progconc
MAINSRC += $(TLPIDIR)/progconc/syscall_speed.c
ifneq ($(CONFIG_FS_NAMED_SEMAPHORES),)
# psem
MAINSRC += $(TLPIDIR)/psem/psem_create.c \
$(TLPIDIR)/psem/psem_getvalue.c \
$(TLPIDIR)/psem/psem_timedwait.c \
$(TLPIDIR)/psem/psem_trywait.c \
$(TLPIDIR)/psem/psem_post.c \
$(TLPIDIR)/psem/psem_unlink.c \
$(TLPIDIR)/psem/psem_wait.c
endif
MAINSRC += $(TLPIDIR)/psem/thread_incr_psem.c
# pshm
MAINSRC += $(TLPIDIR)/pshm/pshm_create.c \
$(TLPIDIR)/pshm/pshm_read.c \
$(TLPIDIR)/pshm/pshm_unlink.c \
$(TLPIDIR)/pshm/pshm_write.c
# pty
#MAINSRC += $(TLPIDIR)/pty/script.c \
# $(TLPIDIR)/pty/unbuffer.c
# shlibs
#MAINSRC += $(TLPIDIR)/seccomp/dump_seccomp_filter.c \
# $(TLPIDIR)/seccomp/libseccomp_demo.c \
# $(TLPIDIR)/seccomp/seccomp_arg64.c \
# $(TLPIDIR)/seccomp/seccomp_bench.c \
# $(TLPIDIR)/seccomp/seccomp_control_open.c \
# $(TLPIDIR)/seccomp/seccomp_deny_open.c \
# $(TLPIDIR)/seccomp/seccomp_deny_syscall.c \
# $(TLPIDIR)/seccomp/seccomp_launch.c \
# $(TLPIDIR)/seccomp/seccomp_logging.c \
# $(TLPIDIR)/seccomp/seccomp_multiarch.c \
# $(TLPIDIR)/seccomp/seccomp_perf.c \
# $(TLPIDIR)/seccomp/seccomp_trap_sigsys.c \
# $(TLPIDIR)/seccomp/seccomp_unotify_mkdir.c \
# $(TLPIDIR)/seccomp/seccomp_unotify_openat.c
ifneq ($(CONFIG_LIBC_DLFCN),)
# shlibs
MAINSRC += $(TLPIDIR)/shlibs/dynload.c
endif
# signals
#MAINSRC += $(TLPIDIR)/signals/catch_rtsigs.c
MAINSRC += $(TLPIDIR)/signals/demo_SIGFPE.c \
$(TLPIDIR)/signals/ignore_pending_sig.c \
$(TLPIDIR)/signals/intquit.c
# $(TLPIDIR)/signals/nonreentrant.c
MAINSRC += $(TLPIDIR)/signals/ouch.c \
$(TLPIDIR)/signals/sig_receiver.c \
$(TLPIDIR)/signals/sig_sender.c \
$(TLPIDIR)/signals/sig_speed_sigsuspend.c \
$(TLPIDIR)/signals/sigmask_longjmp.c \
$(TLPIDIR)/signals/signalfd_sigval.c \
$(TLPIDIR)/signals/t_kill.c
# $(TLPIDIR)/signals/t_sigaltstack.c
MAINSRC += $(TLPIDIR)/signals/t_sigqueue.c \
$(TLPIDIR)/signals/t_sigsuspend.c
# $(TLPIDIR)/signals/t_sigwaitinfo.c
# sockets
MAINSRC += $(TLPIDIR)/sockets/id_echo_cl.c
# $(TLPIDIR)/sockets/id_echo_sv.c
MAINSRC += $(TLPIDIR)/sockets/is_echo_cl.c \
$(TLPIDIR)/sockets/is_echo_inetd_sv.c
# $(TLPIDIR)/sockets/is_echo_sv.c \
# $(TLPIDIR)/sockets/is_echo_v2_sv.c
MAINSRC += $(TLPIDIR)/sockets/is_seqnum_cl.c \
$(TLPIDIR)/sockets/is_seqnum_sv.c \
$(TLPIDIR)/sockets/is_seqnum_v2_cl.c \
$(TLPIDIR)/sockets/is_seqnum_v2_sv.c \
$(TLPIDIR)/sockets/i6d_ucase_cl.c \
$(TLPIDIR)/sockets/i6d_ucase_sv.c \
$(TLPIDIR)/sockets/list_host_addresses.c
# $(TLPIDIR)/sockets/scm_cred_recv.c
MAINSRC += $(TLPIDIR)/sockets/scm_cred_send.c
# $(TLPIDIR)/sockets/scm_multi_recv.c
MAINSRC += $(TLPIDIR)/sockets/scm_multi_send.c \
$(TLPIDIR)/sockets/scm_rights_recv.c \
$(TLPIDIR)/sockets/scm_rights_send.c \
$(TLPIDIR)/sockets/socknames.c
# $(TLPIDIR)/sockets/t_gethostbyname.c
MAINSRC += $(TLPIDIR)/sockets/t_getservbyname.c \
$(TLPIDIR)/sockets/ud_ucase_cl.c \
$(TLPIDIR)/sockets/ud_ucase_sv.c \
$(TLPIDIR)/sockets/us_abstract_bind.c \
$(TLPIDIR)/sockets/us_xfr_cl.c \
$(TLPIDIR)/sockets/us_xfr_sv.c \
$(TLPIDIR)/sockets/us_xfr_v2_cl.c \
$(TLPIDIR)/sockets/us_xfr_v2_sv.c
# sysinfo
MAINSRC += $(TLPIDIR)/sysinfo/procfs_pidmax.c \
$(TLPIDIR)/sysinfo/procfs_user_exe.c \
$(TLPIDIR)/sysinfo/t_uname.c
# svipc
MAINSRC += $(TLPIDIR)/svipc/svmsg_demo_server.c \
$(TLPIDIR)/svipc/t_ftok.c
# svmsg
MAINSRC += $(TLPIDIR)/svmsg/svmsg_chqbytes.c \
$(TLPIDIR)/svmsg/svmsg_create.c \
$(TLPIDIR)/svmsg/svmsg_file_client.c \
$(TLPIDIR)/svmsg/svmsg_file_server.c
# $(TLPIDIR)/svmsg/svmsg_info.c \
# $(TLPIDIR)/svmsg/svmsg_ls.c
MAINSRC += $(TLPIDIR)/svmsg/svmsg_receive.c \
$(TLPIDIR)/svmsg/svmsg_rm.c \
$(TLPIDIR)/svmsg/svmsg_send.c
# svsem
#MAINSRC += $(TLPIDIR)/svsem/svsem_bad_init.c \
# $(TLPIDIR)/svsem/svsem_create.c \
# $(TLPIDIR)/svsem/svsem_demo.c \
# $(TLPIDIR)/svsem/svsem_good_init.c \
# $(TLPIDIR)/svsem/svsem_info.c \
# $(TLPIDIR)/svsem/svsem_mon.c \
# $(TLPIDIR)/svsem/svsem_op.c \
# $(TLPIDIR)/svsem/svsem_rm.c \
# $(TLPIDIR)/svsem/svsem_setall.c
# svshm
ifneq ($(CONFIG_MM_SHM),)
MAINSRC += $(TLPIDIR)/svshm/svshm_attach.c \
$(TLPIDIR)/svshm/svshm_create.c
# $(TLPIDIR)/svshm/svshm_info.c \
# $(TLPIDIR)/svshm/svshm_lock.c
MAINSRC += $(TLPIDIR)/svshm/svshm_mon.c \
$(TLPIDIR)/svshm/svshm_rm.c
# $(TLPIDIR)/svshm/svshm_unlock.c \
# $(TLPIDIR)/svshm/svshm_xfr_reader.c \
# $(TLPIDIR)/svshm/svshm_xfr_writer.c
# syslim
MAINSRC += $(TLPIDIR)/syslim/t_fpathconf.c
# $(TLPIDIR)/syslim/t_sysconf.c
endif
# threads
ifneq ($(CONFIG_PTHREAD_SPINLOCKS),)
MAINSRC += $(TLPIDIR)/threads/detached_attrib.c \
$(TLPIDIR)/threads/one_time_init.c \
$(TLPIDIR)/threads/prod_condvar.c \
$(TLPIDIR)/threads/prod_no_condvar.c \
$(TLPIDIR)/threads/pthread_barrier_demo.c \
$(TLPIDIR)/threads/simple_thread.c \
$(TLPIDIR)/threads/strerror_test.c \
$(TLPIDIR)/threads/thread_cancel.c \
$(TLPIDIR)/threads/thread_cleanup.c \
$(TLPIDIR)/threads/thread_incr.c \
$(TLPIDIR)/threads/thread_incr_mutex.c \
$(TLPIDIR)/threads/thread_incr_rwlock.c \
$(TLPIDIR)/threads/thread_incr_spinlock.c \
$(TLPIDIR)/threads/thread_lock_speed.c \
$(TLPIDIR)/threads/thread_multijoin.c
endif
# time
MAINSRC += $(TLPIDIR)/time/calendar_time.c \
$(TLPIDIR)/time/process_time.c \
$(TLPIDIR)/time/show_time.c \
$(TLPIDIR)/time/strtime.c
# timers
MAINSRC += $(TLPIDIR)/timers/cpu_burner.c \
$(TLPIDIR)/timers/cpu_multi_burner.c
# $(TLPIDIR)/timers/cpu_multithread_burner.c
MAINSRC += $(TLPIDIR)/timers/demo_timerfd.c \
$(TLPIDIR)/timers/ptmr_null_evp.c \
$(TLPIDIR)/timers/ptmr_sigev_signal.c \
$(TLPIDIR)/timers/ptmr_sigev_thread.c \
$(TLPIDIR)/timers/real_timer.c \
$(TLPIDIR)/timers/timed_read.c \
$(TLPIDIR)/timers/t_clock_nanosleep.c \
$(TLPIDIR)/timers/t_nanosleep.c
# tty
MAINSRC += $(TLPIDIR)/tty/demo_SIGWINCH.c \
$(TLPIDIR)/tty/new_intr.c \
$(TLPIDIR)/tty/no_echo.c \
$(TLPIDIR)/tty/test_tty_functions.c
# users_groups
ifneq ($(CONFIG_CRYPTO),)
MAINSRC += $(TLPIDIR)/users_groups/check_password.c
endif
MAINSRC += $(TLPIDIR)/users_groups/t_getpwent.c \
$(TLPIDIR)/users_groups/t_getpwnam_r.c
# vdso
MAINSRC += $(TLPIDIR)/vdso/gettimeofday.c
# vmem
MAINSRC += $(TLPIDIR)/vmem/madvise_dontneed.c
# $(TLPIDIR)/vmem/memlock.c
MAINSRC += $(TLPIDIR)/vmem/t_mprotect.c
# xattr
#MAINSRC += $(TLPIDIR)/xattr/t_setxattr.c \
# $(TLPIDIR)/xattr/xattr_view.c
PROGNAME := $(notdir $(patsubst %.c,%, $(MAINSRC)))
$(TLPI_UNPACK).zip:
$(call DOWNLOAD,$(TLPI_DOWNLOAD_URL),master.zip,tlpi.zip)
$(Q) unzip -o tlpi.zip
$(Q) rm -f tlpi.zip
$(Q) mv tlpi-dist-master $(TLPI_UNPACK)
$(Q) patch -d $(TLPI_UNPACK) -p1 < 0001-add-ename.c.inc.patch
$(Q) patch -d $(TLPI_UNPACK) -p1 < 0002-fix-setenv-compilation-error.patch
$(Q) patch -d $(TLPI_UNPACK) -p1 < 0003-fix-memoryleak-in-check_password.patch
$(Q) patch -d $(TLPI_UNPACK) -p1 < 0004-fix-compilation-error.patch
$(TLPI_UNPACK): $(TLPI_UNPACK).zip
# Download and unpack tarball if no git repo found
ifeq ($(wildcard $(TLPI_UNPACK)/.git),)
context:: $(TLPI_UNPACK)
distclean::
$(Q) rm -rf $(TLPI_UNPACK)
endif
include $(APPDIR)/Application.mk