cmake_minimum_required(VERSION 3.17) set(CMAKE_C_STANDARD 99) set(CMAKE_CXX_STANDARD 14) set(ZP_OBJECT_BS_TRP "source/any/bs/trp.c") set(ZP_OBJECT_BS_SYSCL "source/any/bs/syscl.c") set(ZP_OBJECT_MEM_MEMCPY "source/any/mem/memcpy.cc") set(ZP_OBJECT_MEM_MEMEQU "source/any/mem/memequ.cc") set(ZP_OBJECT_MEM_MEMFIL "source/any/mem/memfil.cc") set(ZP_OBJECT_MEM_MEMSRH "source/any/mem/memsrh.cc") set(ZP_OBJECT_MTH_ABS "source/any/mth/abs.cc") set(ZP_OBJECT_MTH_DIVMOD "source/any/mth/divmod.cc") set(ZP_OBJECT_MTH_DOT "source/any/mth/dot.cc") set(ZP_OBJECT_MTH_VADD "source/any/mth/vadd.cc") set(ZP_OBJECT_MTH_VSUB "source/any/mth/vsub.cc") set(ZP_OBJECT_STR_FMT "source/any/str/fmt.cc") set(ZP_OBJECT_STR_FMTLEN "source/any/str/fmtlen.cc") set(ZP_OBJECT_STR_STRCPY "source/any/str/strcpy.cc") set(ZP_OBJECT_STR_STREQU "source/any/str/strequ.cc") set(ZP_OBJECT_STR_STRLEN "source/any/str/strlen.cc") set(ZP_OBJECT_STR_STRSRH "source/any/str/strsrh.cc") set(ZP_OBJECT_STR_UTF16DEC "source/any/str/utf16dec.cc") set(ZP_OBJECT_STR_UTF16DECLEN "source/any/str/utf16declen.cc") set(ZP_OBJECT_STR_UTF16ENC "source/any/str/utf16enc.cc") set(ZP_OBJECT_STR_UTF16ENCLEN "source/any/str/utf16enclen.cc") set(ZP_OBJECT_STR_UTF32CPY "source/any/str/utf32cpy.cc") set(ZP_OBJECT_STR_UTF32EQU "source/any/str/utf32equ.cc") set(ZP_OBJECT_STR_UTF32LEN "source/any/str/utf32len.cc") set(ZP_OBJECT_STR_UTF32SRH "source/any/str/utf32srh.cc") set(ZP_OBJECT_STR_UTF8DEC "source/any/str/utf8dec.cc") set(ZP_OBJECT_STR_UTF8DECLEN "source/any/str/utf8declen.cc") set(ZP_OBJECT_STR_UTF8ENC "source/any/str/utf8enc.cc") set(ZP_OBJECT_STR_UTF8ENCLEN "source/any/str/utf8enclen.cc") set(ZP_OBJECT_STR_WIN1252DEC "source/any/str/win1252dec.cc") set(ZP_OBJECT_STR_WIN1252ENC "source/any/str/win1252enc.cc") set(ZP_OBJECT_STR_WSTRCPY "source/any/str/wstrcpy.cc") set(ZP_OBJECT_STR_WSTREQU "source/any/str/wstrequ.cc") set(ZP_OBJECT_STR_WSTRLEN "source/any/str/wstrlen.cc") set(ZP_OBJECT_STR_WSTRSRH "source/any/str/wstrsrh.cc") if("${ZP_TARGET_}" STREQUAL "Amd64") set(ZP_OBJECT_BS_SYSCL "source/amd64/bs/syscl.s") set(ZP_OBJECT_BS_TRP "source/amd64/bs/trp.s") set(ZP_OBJECT_MEM_MEMCPY "source/amd64/mem/memcpy.s") set(ZP_OBJECT_MEM_MEMFIL "source/amd64/mem/memfil.s") endif() if("${ZP_TARGET_}" STREQUAL "Arm") set(ZP_OBJECT_BS_SYSCL "source/arm/bs/syscl.s") set(ZP_OBJECT_MEM_MEMCPY "source/arm/mem/memcpy.s") endif() if("${ZP_TARGET_}" STREQUAL "Arm64") set(ZP_OBJECT_BS_SYSCL "source/arm64/bs/syscl.s") set(ZP_OBJECT_MEM_MEMCPY "source/arm64/mem/memcpy.s") endif() if("${ZP_TARGET_}" STREQUAL "Ia32") set(ZP_OBJECT_BS_SYSCL "source/ia32/bs/syscl.s") endif() if(NOT ${ZP_ENABLE_SYSTEM_CALLS}) set(ZP_OBJECT_BS_SYSCL "") endif() add_library( zp ${ZP_LIBRARY_TYPE_VALUE} "${ZP_OBJECT_BS_TRP}" "${ZP_OBJECT_BS_SYSCL}" "${ZP_OBJECT_MEM_MEMCPY}" "${ZP_OBJECT_MEM_MEMEQU}" "${ZP_OBJECT_MEM_MEMFIL}" "${ZP_OBJECT_MEM_MEMSRH}" "${ZP_OBJECT_MTH_ABS}" "${ZP_OBJECT_MTH_DIVMOD}" "${ZP_OBJECT_MTH_DOT}" "${ZP_OBJECT_MTH_VADD}" "${ZP_OBJECT_MTH_VSUB}" "${ZP_OBJECT_STR_FMT}" "${ZP_OBJECT_STR_FMTLEN}" "${ZP_OBJECT_STR_STRCPY}" "${ZP_OBJECT_STR_STREQU}" "${ZP_OBJECT_STR_STRLEN}" "${ZP_OBJECT_STR_STRSRH}" "${ZP_OBJECT_STR_UTF16DEC}" "${ZP_OBJECT_STR_UTF16DECLEN}" "${ZP_OBJECT_STR_UTF16ENC}" "${ZP_OBJECT_STR_UTF16ENCLEN}" "${ZP_OBJECT_STR_UTF32CPY}" "${ZP_OBJECT_STR_UTF32EQU}" "${ZP_OBJECT_STR_UTF32LEN}" "${ZP_OBJECT_STR_UTF32SRH}" "${ZP_OBJECT_STR_UTF8DEC}" "${ZP_OBJECT_STR_UTF8DECLEN}" "${ZP_OBJECT_STR_UTF8ENC}" "${ZP_OBJECT_STR_UTF8ENCLEN}" "${ZP_OBJECT_STR_WIN1252DEC}" "${ZP_OBJECT_STR_WIN1252ENC}" "${ZP_OBJECT_STR_WSTRCPY}" "${ZP_OBJECT_STR_WSTREQU}" "${ZP_OBJECT_STR_WSTRLEN}" "${ZP_OBJECT_STR_WSTRSRH}" ) target_include_directories( zp PUBLIC "include" ) target_compile_definitions( zp PRIVATE zp_priv_nconsteval ) if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang|GNU") target_compile_options( zp PRIVATE $,-Og,-Oz> -Wall -Wextra -Wmissing-prototypes -Wpedantic -fdiagnostics-color=always -ffreestanding -fno-exceptions -fshort-enums $,-g,> -nostdlib ) elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") target_compile_options( zp PRIVATE /O2 /W4 $,$,/Zo>> ) endif()