# 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 fake

version_major 0
version_minor 8
version_micro 1
version_file micro
version_target minor

process_pre process_pre.sh
process_post process_post.sh

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_error -lfll_execute -lfll_file -lfll_fss -lfll_print -lfll_program
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_status_string -lf_string  -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 -l:libcap.a
build_libraries_static-individual -l:libfll_error.a -l:libfll_execute.a -l:libfll_file.a -l:libfll_fss.a -l:libfll_print.a -l:libfll_program.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_status_string.a -l:libf_string.a  -l:libf_type_array.a -l:libf_utf.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
build_libraries_static-monolithic -l:libfll.a

build_sources_headers main/build.h main/clean.h main/common.h main/fake.h main/make.h main/print/common.h main/print/context.h main/print/debug.h main/print/error.h main/print/message.h main/print/operation.h main/print/warning.h main/print/verbose.h main/signal.h main/skeleton.h main/thread.h
build_sources_headers main/build/enumeration.h main/build/library.h main/build/load.h main/build/object.h main/build/print/compile.h main/build/print/error.h main/build/print/message.h main/build/print/verbose.h main/build/print/warning.h main/build/program.h main/build/skeleton.h main/build/string.h
build_sources_headers main/common/define.h main/common/enumeration.h main/common/print.h main/common/string.h main/common/type.h
build_sources_headers main/fake/path_generate.h main/fake/do.h
build_sources_headers main/make/load_fakefile.h main/make/load_parameters.h main/make/operate_block.h main/make/operate.h main/make/operate_process.h main/make/operate_process_type.h main/make/operate_validate.h main/make/operate_validate_type.h main/make/print/error.h main/make/print/message.h main/make/print/verbose.h main/make/print/warning.h

build_sources_library main/build.c main/clean.c main/common.c main/fake.c main/make.c main/print/common.c main/print/context.c main/print/debug.c main/print/error.c main/print/message.c main/print/operation.c main/print/warning.c main/print/verbose.c main/signal.c main/skeleton.c main/thread.c
build_sources_library main/build/enumeration.c main/build/library.c main/build/load.c main/build/object.c main/build/print/compile.c main/build/print/error.c main/build/print/message.c main/build/print/verbose.c main/build/print/warning.c main/build/program.c main/build/skeleton.c main/build/string.c
build_sources_library main/common/define.c main/common/enumeration.c main/common/print.c main/common/string.c main/common/type.c
build_sources_library main/fake/path_generate.c main/fake/do.c
build_sources_library main/make/load_fakefile.c main/make/load_parameters.c main/make/operate_block.c main/make/operate.c main/make/operate_process.c main/make/operate_process_type.c main/make/operate_validate.c main/make/operate_validate_type.c main/make/print/error.c main/make/print/message.c main/make/print/verbose.c main/make/print/warning.c

build_sources_program main/config.c main/main.c

build_sources_documentation man

build_static no

path_headers program/fake

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-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 -Wno-main
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
