blob: cc8953766656eed14ee150445b9e4de209063ac3 (
plain) (
tree)
|
|
# Copyright 2022-2023 Gabriel Jensen.
# This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
# If a copy of the MPL was not distributed with this file, You can obtain one at <https://mozilla.org/MPL/2.0>.
ifeq "$(tar)" ""
tar := $(shell ../getTarget.sh)
$(info Targeting $(tar)!)
endif
ifeq "$(tar)" "amd64"
AS := nasm -felf64
else ifeq "$(tar)" "ia32"
AS := nasm -felf32
endif
CXX := g++
ifeq "$(stdc)" ""
stdc := c90
endif
ifeq "$(stdcxx)" ""
stdcxx := c++98
endif
OBJ_ZP_TRP := source/any/zp/trp.o
OBJ_MEM_MEMCPY := source/any/mem/memcpy.o
OBJ_MEM_MEMEQU := source/any/mem/memequ.o
OBJ_MEM_MEMFIL := source/any/mem/memfil.o
OBJ_MEM_MEMSRH := source/any/mem/memsrh.o
#OBJ_MTH_ABS := source/any/mth/abs.o
#OBJ_MTH_DIVMOD := source/any/mth/divmod.o
#OBJ_MTH_DOT := source/any/mth/dot.o
OBJ_MTH_ISNAN := source/any/mth/isnan.o
#OBJ_MTH_VADD := source/any/mth/vadd.o
#OBJ_MTH_VSUB := source/any/mth/vsub.o
#OBJ_STR_FMT := source/any/str/fmt.o
OBJ_STR_STRCPY := source/any/str/strcpy.o
OBJ_STR_STREQU := source/any/str/strequ.o
OBJ_STR_STRFIL := source/any/str/strfil.o
OBJ_STR_STRLEN := source/any/str/strlen.o
OBJ_STR_STRSRH := source/any/str/strsrh.o
OBJ_STR_UTF16DEC := source/any/str/utf16dec.o
OBJ_STR_UTF16DECLEN := source/any/str/utf16declen.o
OBJ_STR_UTF16ENC := source/any/str/utf16enc.o
OBJ_STR_UTF16ENCLEN := source/any/str/utf16enclen.o
OBJ_STR_UTF32CPY := source/any/str/utf32cpy.o
OBJ_STR_UTF32EQU := source/any/str/utf32equ.o
OBJ_STR_UTF32FIL := source/any/str/utf32fil.o
OBJ_STR_UTF32LEN := source/any/str/utf32len.o
OBJ_STR_UTF32SRH := source/any/str/utf32srh.o
OBJ_STR_UTF8DEC := source/any/str/utf8dec.o
OBJ_STR_UTF8DECLEN := source/any/str/utf8declen.o
OBJ_STR_UTF8ENC := source/any/str/utf8enc.o
OBJ_STR_UTF8ENCLEN := source/any/str/utf8enclen.o
OBJ_STR_WIN1252DEC := source/any/str/win1252dec.o
OBJ_STR_WIN1252ENC := source/any/str/win1252enc.o
OBJ_STR_WSTRCPY := source/any/str/wstrcpy.o
OBJ_STR_WSTREQU := source/any/str/wstrequ.o
OBJ_STR_WSTRFIL := source/any/str/wstrfil.o
OBJ_STR_WSTRLEN := source/any/str/wstrlen.o
OBJ_STR_WSTRSRH := source/any/str/wstrsrh.o
OBJ_ZP_SYSCAL := source/any/zp/syscal.o
ifeq "$(tar)" "amd64"
OBJ_ZP_SYSCAL := source/amd64/zp/syscal.o
OBJ_ZP_TRP := source/amd64/zp/trp.o
OBJ_MEM_MEMCPY := source/amd64/mem/memcpy.o
OBJ_MEM_MEMFIL := source/amd64/mem/memfil.o
else ifeq "$(tar)" "arm"
OBJ_ZP_SYSCAL := source/arm/zp/syscal.o
OBJ_MEM_MEMCPY := source/arm/mem/memcpy.o
else ifeq "$(tar)" "arm64"
OBJ_ZP_SYSCAL := source/arm64/zp/syscal.o
OBJ_MEM_MEMCPY := source/arm64/mem/memcpy.o
else ifeq "$(tar)" "ia32"
OBJ_ZP_SYSCAL := source/ia32/zp/syscal.o
endif
OBJS := \
$(OBJ_MEM_MEMCPY) \
$(OBJ_MEM_MEMEQU) \
$(OBJ_MEM_MEMFIL) \
$(OBJ_MEM_MEMSRH) \
\
$(OBJ_MTH_ABS) \
$(OBJ_MTH_DIVMOD) \
$(OBJ_MTH_DOT) \
$(OBJ_MTH_ISNAN) \
$(OBJ_MTH_VADD) \
$(OBJ_MTH_VSUB) \
\
$(OBJ_STR_FMT) \
$(OBJ_STR_FMTLEN) \
$(OBJ_STR_STRCPY) \
$(OBJ_STR_STREQU) \
$(OBJ_STR_STRFIL) \
$(OBJ_STR_STRLEN) \
$(OBJ_STR_STRSRH) \
$(OBJ_STR_UTF16DEC) \
$(OBJ_STR_UTF16DECLEN) \
$(OBJ_STR_UTF16ENC) \
$(OBJ_STR_UTF16ENCLEN) \
$(OBJ_STR_UTF32CPY) \
$(OBJ_STR_UTF32EQU) \
$(OBJ_STR_UTF32FIL) \
$(OBJ_STR_UTF32LEN) \
$(OBJ_STR_UTF32SRH) \
$(OBJ_STR_UTF8DEC) \
$(OBJ_STR_UTF8DECLEN) \
$(OBJ_STR_UTF8ENC) \
$(OBJ_STR_UTF8ENCLEN) \
$(OBJ_STR_WIN1252DEC) \
$(OBJ_STR_WIN1252ENC) \
$(OBJ_STR_WSTRCPY) \
$(OBJ_STR_WSTREQU) \
$(OBJ_STR_WSTRFIL) \
$(OBJ_STR_WSTRLEN) \
$(OBJ_STR_WSTRSRH) \
\
$(OBJ_ZP_TRP)
ifneq "$(nosyscal)" "true"
OBJS := \
$(OBJS) \
$(OBJ_ZP_SYSCAL)
endif
ifeq "$(shrlib)" "true"
LIB := libzp.so
else
LIB := libzp.a
endif
HDRS := \
include/zp/mem \
include/zp/mem.h \
include/zp/mth \
include/zp/mth.h \
include/zp/str \
include/zp/str.h \
include/zp/zp \
include/zp/zp.h \
include/zp/det/mem.ii \
include/zp/det/mth.ii \
include/zp/det/str.ii \
include/zp/det/zp.ii \
include/zp/prv/arc.h \
include/zp/prv/chr.h \
include/zp/prv/flt.h \
include/zp/prv/imp.h \
include/zp/prv/int.h \
include/zp/prv/std.h \
include/zp/prv/sys.h \
include-private/zp/prv/fmt \
include-private/zp/prv/str
CFLAGS := \
-Iinclude \
-Iinclude-private \
-Wall \
-Wextra \
-Wpedantic \
-ffreestanding \
-fshort-enums \
-nostdlib \
-pipe \
-std=$(stdc)
CXXFLAGS := \
-Iinclude \
-Iinclude-private \
-Wall \
-Wextra \
-Wpedantic \
-ffreestanding \
-fno-exceptions \
-fshort-enums \
-nostdlib \
-pipe \
-std=$(stdcxx)
ifeq "$(shrlib)" "true"
CFLAGS := \
$(CFLAGS) \
-O3 \
-fpic \
-g
CXXFLAGS := \
$(CXXFLAGS) \
-O3 \
-fpic \
-g
LDFLAGS := \
$(LDFLAGS) \
-shared
else
CFLAGS := \
$(CFLAGS) \
-Oz
CXXFLAGS := \
$(CXXFLAGS) \
-Oz
endif
.PHONY: clean install purge
ifeq "$(shrlib)" "true"
$(LIB): $(OBJS)
$(CC) $(LDFLAGS) -o$(@) $(^)
else
$(LIB): $(OBJS)
$(AR) r $(@) $(^)
endif
$(OBJS): $(HDRS)
install: $(LIB)
mkdir -pvm755 "$(HDRDIR)/zp/det"
mkdir -pvm755 "$(HDRDIR)/zp/prv"
mkdir -pvm755 "$(LIBDIR)"
install -vm644 "include/zp/"{"mem","mth","str","zp"}{"",".h"} "$(HDRDIR)/zp"
install -vm644 "include/zp/det/"{"mem","mth","str","zp"}".ii" "$(HDRDIR)/zp/det"
install -vm644 "include/zp/prv/"{"arc","chr","flt","imp","int","std","sys"}".h" "$(HDRDIR)/zp/prv"
install -vm755 "$(LIB)" "$(LIBDIR)"
clean:
$(RM) $(OBJS)
purge: clean
$(RM) $(LIB)
|