# fss-0001
#
# Modes:
#   - android:           Compile on an android system (using Termux; may need modification depending on the android system).
#   - clang:             Use CLang rather than the default, which is generally GCC.
#   - coverage:          Compile for building coverage.
#   - debug:             Enable debugging, such as compile time debug options.
#   - fanalyzer:         Compile using GCC's -fanalyzer compile time option.
#   - flex_arrays:       Use GCC strict flex arrays (supported by GCC version 13 or greater).
#   - gcc:               Use GCC specific settings.
#   - individual:        Compile using per project (individual) libraries, does not handle thread or threadless cases.
#   - individual_thread: This is required when compiling in individual mode with "thread" mode.
#   - level:             Compile using per level libraries.
#   - monolithic:        Compile using per monolithic libraries.
#   - pinephone:         Compile on a pinephone system.
#   - test:              Compile for a test, such as unit testing.
#   - thread:            Compile with thread support.
#   - threadless:        Compile without thread support.
#

build_name controller

version_major 0
version_minor 7
version_micro 4
version_file micro
version_target minor

modes android clang coverage debug fanalyzer flex_arrays gcc individual individual_thread level monolithic pinephone test thread threadless
modes_default debug gcc monolithic thread

build_compiler gcc
build_compiler-clang clang
build_indexer ar
build_indexer_arguments rcs
build_language c

build_libraries_shared -lc -lcap
build_libraries_shared-individual -lfll_control_group -lfll_error -lfll_execute -lfll_fss -lfll_print -lfll_program
build_libraries_shared-individual_thread -lf_thread
build_libraries_shared-individual -lfl_control_group -lfl_conversion -lfl_directory -lfl_environment -lfl_fss -lfl_iki -lfl_path -lfl_print
build_libraries_shared-individual -lf_abstruse -lf_account -lf_capability -lf_color -lf_compare -lf_console -lf_control_group -lf_conversion -lf_directory -lf_environment -lf_execute -lf_file -lf_fss -lf_iki -lf_limit -lf_memory -lf_parse -lf_path -lf_pipe -lf_print -lf_rip -lf_signal -lf_socket -lf_string -lf_time -lf_type_array -lf_utf
build_libraries_shared-individual_thread -lf_thread
build_libraries_shared-level -lfll_2 -lfll_1 -lfll_0
build_libraries_shared-monolithic -lfll

build_libraries_static -l:libc.a
build_libraries_static-individual -l:libfll_control_group.a -l:libfll_error.a -l:libfll_execute.a -l:libfll_fss.a -l:libfll_print.a -l:libfll_program.a
build_libraries_static-individual_thread -l:libf_thread.a
build_libraries_static-individual -l:libfl_control_group.a -l:libfl_conversion.a -l:libfl_directory.a -l:libfl_environment.a -l:libfl_fss.a -l:libfl_iki.a -l:libfl_path.a -l:libfl_print.a
build_libraries_static-individual -l:libf_abstruse.a -l:libf_account.a -l:libf_capability.a -l:libf_color.a -l:libf_compare.a -l:libf_console.a -l:libf_control_group.a -l:libf_conversion.a -l:libf_directory.a -l:libf_environment.a -l:libf_execute.a -l:libf_file.a -l:libf_fss.a -l:libf_iki.a -l:libf_limit.a -l:libf_memory.a -l:libf_parse.a -l:libf_path.a -l:libf_pipe.a -l:libf_print.a -l:libf_rip.a -l:libf_signal.a -l:libf_socket.a -l:libf_string.a -l:libf_time.a -l:libf_type_array.a -l:libf_utf.a
build_libraries_static-individual -l:libcap.a
build_libraries_static-individual_thread -l:libf_thread.a
build_libraries_static-level -l:libfll_2.a -l:libfll_1.a -l:libfll_0.a -l:libcap.a
build_libraries_static-monolithic -l:libfll.a -l:libcap.a

build_sources_headers common.h controller.h common/define.h common/enumeration.h common/string.h common/thread.h common/type.h
build_sources_headers common/define/control.h common/define/entry.h common/define/instance.h common/define/rule.h common/define/thread.h
build_sources_headers common/enumeration/control.h common/enumeration/entry.h common/enumeration/instance.h common/enumeration/process.h common/enumeration/rule.h common/enumeration/thread.h
build_sources_headers common/string/general.h common/string/rule.h
build_sources_headers common/type/cache.h common/type/control.h common/type/defs.h common/type/entry.h common/type/execute.h common/type/instance.h common/type/interrupt.h common/type/lock.h common/type/process.h common/type/rule.h common/type/thread.h
build_sources_headers convert.h instance.h instance/prepare.h instance/wait.h
build_sources_headers entry.h entry/action.h entry/preprocess.h entry/process.h entry/setting.h
build_sources_headers file.h lock.h mutex.h path.h process.h
build_sources_headers rule.h rule/action.h rule/execute.h rule/expand.h rule/instance.h rule/is.h rule/item.h rule/parameter.h rule/read.h rule/setting.h rule/wait.h
build_sources_headers perform.h
build_sources_headers print/debug.h print/debug/rule/action.h print/debug/rule/execute.h print/debug/rule/instance.h print/debug/perform/control.h print/debug/perform/pid.h
build_sources_headers print/error.h
build_sources_headers print/error/entry.h print/error/entry/action.h print/error/entry/item.h print/error/entry/setting.h
build_sources_headers print/error/perform/pid.h
build_sources_headers print/error/rule.h print/error/rule/action.h print/error/rule/instance.h print/error/rule/item.h print/error/rule/setting.h
build_sources_headers print/lock.h print/error/lock.h
build_sources_headers print/output/entry/setting.h print/output/rule/execute.h print/output/rule/setting.h print/output/rule/validate.h
build_sources_headers print/message.h print/message/entry.h print/message/entry/action.h print/message/entry/item.h
build_sources_headers print/warning/entry/action.h print/warning/entry/item.h print/warning/entry/setting.h print/warning/rule/action.h print/warning/rule/item.h print/warning/rule/setting.h
build_sources_headers signal.h status.h time.h
build_sources_headers thread.h thread/cleanup.h thread/control.h thread/enable.h thread/entry.h thread/instance.h thread/is.h thread/rule.h thread/signal.h
build_sources_headers validate.h

build_sources_library common.c common/define.c common/enumeration.c common/string.c common/type.c
build_sources_library common/type/cache.c common/type/control.c common/type/entry.c common/type/execute.c common/type/instance.c common/type/interrupt.c common/type/lock.c common/type/process.c common/type/rule.c common/type/thread.c
build_sources_library common/string/general.c common/string/rule.c
build_sources_library convert.c instance.c instance/prepare.c instance/wait.c
build_sources_library entry.c entry/action.c entry/preprocess.c entry/process.c entry/setting.c
build_sources_library file.c lock.c mutex.c path.c process.c
build_sources_library rule.c rule/action.c rule/execute.c rule/expand.c rule/instance.c rule/is.c rule/item.c rule/parameter.c rule/read.c rule/setting.c rule/wait.c
build_sources_library perform.c
build_sources_library print/debug.c print/debug/rule/action.c print/debug/rule/execute.c print/debug/rule/instance.c print/debug/perform/control.c print/debug/perform/pid.c
build_sources_library print/error.c
build_sources_library print/error/entry.c print/error/entry/action.c print/error/entry/item.c print/error/entry/setting.c
build_sources_library print/error/perform/pid.c
build_sources_library print/error/rule.c print/error/rule/action.c print/error/rule/instance.c print/error/rule/item.c print/error/rule/setting.c
build_sources_library print/lock.c print/error/lock.c
build_sources_library print/output/entry/setting.c print/output/rule/execute.c print/output/rule/setting.c print/output/rule/validate.c
build_sources_library print/message.c print/message/entry.c print/message/entry/action.c print/message/entry/item.c
build_sources_library print/warning/entry/action.c print/warning/entry/item.c print/warning/entry/setting.c print/warning/rule/action.c print/warning/rule/item.c print/warning/rule/setting.c
build_sources_library signal.c status.c time.c
build_sources_library thread.c thread/cleanup.c thread/control.c thread/enable.c thread/entry.c thread/instance.c thread/is.c thread/rule.c thread/signal.c
build_sources_library validate.c

build_sources_documentation man

build_static no

path_headers program/controller/main
path_sources sources/c/program/controller/main

has_path_standard no

environment PATH LD_LIBRARY_PATH
environment LANG LC_ALL LC_COLLATE LC_CTYPE LC_FASTMSG LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME LOCPATH NLSPATH

#defines -D_di_libcap_
defines -D_libcap_legacy_only_
defines -D_support_controller_controlfile_
defines-android -D_di_f_thread_attribute_affinity_get_ -D_di_f_thread_attribute_affinity_set_ -D_di_f_thread_attribute_concurrency_get_ -D_di_f_thread_attribute_concurrency_set_ -D_di_f_thread_attribute_default_get_ -D_di_f_thread_attribute_default_set_ -D_di_f_thread_cancel_test_ -D_di_f_thread_join_try_ -D_di_f_thread_join_timed_ -D_pthread_mutex_prioceiling_unsupported_ -D_di_f_thread_semaphore_file_close_ -D_di_f_thread_semaphore_file_open_ -D_di_f_thread_semaphore_file_delete_ -D_di_f_thread_cancel_type_set_  -D_di_f_thread_mutex_consistent_ -D_di_f_thread_mutex_attribute_robust_get_ -D_di_f_thread_mutex_attribute_robust_set_ -D_pthread_kill_as_pthread_cancel_
defines-clang -D_clang_not_a_compile_time_constant_workaround_
defines-debug -D_en_f_status_debug_
defines-pinephone -D_di_f_thread_mutex_priority_ceiling_get_ -D_di_f_thread_mutex_priority_ceiling_set_ -D_di_f_thread_mutex_attribute_priority_ceiling_get_ -D_di_f_thread_mutex_attribute_priority_ceiling_set_
defines-thread -D_pthread_attr_unsupported_ -D_pthread_sigqueue_unsupported_
defines-threadless -D_di_thread_support_

flags -O2 -g -fdiagnostics-color=always -Wno-logical-not-parentheses -Wno-parentheses -Wno-missing-braces
flags -fstack-clash-protection -fno-delete-null-pointer-checks
flags -Wl,-z,nodlopen -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now
flags-android -Wno-implicit-function-declaration -Wl,-z,norelro
flags-clang -Wno-logical-op-parentheses
flags-coverage -O0 --coverage -fprofile-abs-path -fprofile-dir=build/coverage/
flags-fanalyzer -fanalyzer
flags-flex_arrays -fstrict-flex-arrays=3
flags-test -O0 -fstack-protector-strong -Wall
flags-thread -pthread

flags_library -fPIC
flags_object -fPIC
flags_program -fPIE
flags_program-android -fPIE -Wl,-z,relro
