diff options
| author | Mattias Andrée <m@maandree.se> | 2025-12-04 19:25:47 +0100 |
|---|---|---|
| committer | Mattias Andrée <m@maandree.se> | 2025-12-04 19:25:47 +0100 |
| commit | 2bf851de6dd3a64f91a72a9afba2b3637dbbe154 (patch) | |
| tree | 5326b90653cb19bbe3749522c95d33ac736167bf /Makefile | |
| download | libj2-2bf851de6dd3a64f91a72a9afba2b3637dbbe154.tar.gz libj2-2bf851de6dd3a64f91a72a9afba2b3637dbbe154.tar.bz2 libj2-2bf851de6dd3a64f91a72a9afba2b3637dbbe154.tar.xz | |
First commit
Signed-off-by: Mattias Andrée <m@maandree.se>
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 300 |
1 files changed, 300 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..482e2b3 --- /dev/null +++ b/Makefile @@ -0,0 +1,300 @@ +.POSIX: + +CONFIGFILE = config.mk +include $(CONFIGFILE) + +OS = linux +# Linux: linux +# Mac OS: macos +# Windows: windows +include mk/$(OS).mk + + +LIB_MAJOR = 1 +LIB_MINOR = 0 +LIB_VERSION = $(LIB_MAJOR).$(LIB_MINOR) +LIB_NAME = j2 + + +OBJ =\ + libj2_j2u_add_j2u.o\ + libj2_j2u_add_j2u_overflow.o\ + libj2_j2u_add_j2u_to_j2u.o\ + libj2_j2u_add_j2u_to_j2u_overflow.o\ + libj2_j2u_add_ju.o\ + libj2_j2u_add_ju_overflow.o\ + libj2_j2u_add_ju_to_j2u.o\ + libj2_j2u_add_ju_to_j2u_overflow.o\ + libj2_j2u_and_j2u.o\ + libj2_j2u_and_j2u_to_j2u.o\ + libj2_j2u_and_ju.o\ + libj2_j2u_and_ju_to_j2u.o\ + libj2_j2u_cmp_j2u.o\ + libj2_j2u_cmp_ju.o\ + libj2_j2u_div_j2u.o\ + libj2_j2u_div_j2u_return.o\ + libj2_j2u_div_j2u_to_j2u.o\ + libj2_j2u_div_ju.o\ + libj2_j2u_div_ju_return.o\ + libj2_j2u_div_ju_to_j2u.o\ + libj2_j2u_divmod_j2u.o\ + libj2_j2u_divmod_j2u_to_j2u.o\ + libj2_j2u_divmod_j2u_to_j2u_j2u.o\ + libj2_j2u_divmod_ju.o\ + libj2_j2u_divmod_ju_to_j2u.o\ + libj2_j2u_divmod_ju_to_j2u_j2u.o\ + libj2_j2u_eq_j2u.o\ + libj2_j2u_eq_ju.o\ + libj2_j2u_ge_j2u.o\ + libj2_j2u_ge_ju.o\ + libj2_j2u_gt_j2u.o\ + libj2_j2u_gt_ju.o\ + libj2_j2u_if_j2u.o\ + libj2_j2u_if_j2u_to_j2u.o\ + libj2_j2u_if_ju.o\ + libj2_j2u_if_ju_to_j2u.o\ + libj2_j2u_imply_j2u.o\ + libj2_j2u_imply_j2u_to_j2u.o\ + libj2_j2u_imply_ju.o\ + libj2_j2u_imply_ju_to_j2u.o\ + libj2_j2u_is_max.o\ + libj2_j2u_is_min.o\ + libj2_j2u_is_positive.o\ + libj2_j2u_is_zero.o\ + libj2_j2u_le_j2u.o\ + libj2_j2u_le_ju.o\ + libj2_j2u_lrot.o\ + libj2_j2u_lrot_to_j2u.o\ + libj2_j2u_lsh.o\ + libj2_j2u_lsh_overflow.o\ + libj2_j2u_lsh_to_j2u.o\ + libj2_j2u_lsh_to_j2u_overflow.o\ + libj2_j2u_lt_j2u.o\ + libj2_j2u_lt_ju.o\ + libj2_j2u_max.o\ + libj2_j2u_max_j2u.o\ + libj2_j2u_max_j2u_to_j2u.o\ + libj2_j2u_max_ju.o\ + libj2_j2u_max_ju_to_j2u.o\ + libj2_j2u_min.o\ + libj2_j2u_min_j2u.o\ + libj2_j2u_min_j2u_to_j2u.o\ + libj2_j2u_min_ju.o\ + libj2_j2u_min_ju_to_j2u.o\ + libj2_j2u_mod_j2u.o\ + libj2_j2u_mod_j2u_to_j2u.o\ + libj2_j2u_mod_ju.o\ + libj2_j2u_mod_ju_to_j2u.o\ + libj2_j2u_mul_j2u.o\ + libj2_j2u_mul_j2u_destructive.o\ + libj2_j2u_mul_j2u_overflow.o\ + libj2_j2u_mul_j2u_overflow_destructive.o\ + libj2_j2u_mul_j2u_to_j2u.o\ + libj2_j2u_mul_j2u_to_j2u_overflow.o\ + libj2_j2u_mul_ju.o\ + libj2_j2u_mul_ju_overflow.o\ + libj2_j2u_mul_ju_to_j2u.o\ + libj2_j2u_mul_ju_to_j2u_overflow.o\ + libj2_j2u_nand_j2u.o\ + libj2_j2u_nand_j2u_to_j2u.o\ + libj2_j2u_nand_ju.o\ + libj2_j2u_nand_ju_to_j2u.o\ + libj2_j2u_ne_j2u.o\ + libj2_j2u_ne_ju.o\ + libj2_j2u_nif_j2u.o\ + libj2_j2u_nif_j2u_to_j2u.o\ + libj2_j2u_nif_ju.o\ + libj2_j2u_nif_ju_to_j2u.o\ + libj2_j2u_nimply_j2u.o\ + libj2_j2u_nimply_j2u_to_j2u.o\ + libj2_j2u_nimply_ju.o\ + libj2_j2u_nimply_ju_to_j2u.o\ + libj2_j2u_nor_j2u.o\ + libj2_j2u_nor_j2u_to_j2u.o\ + libj2_j2u_nor_ju.o\ + libj2_j2u_nor_ju_to_j2u.o\ + libj2_j2u_or_j2u.o\ + libj2_j2u_or_j2u_to_j2u.o\ + libj2_j2u_or_ju.o\ + libj2_j2u_or_ju_to_j2u.o\ + libj2_j2u_rdiv_j2u.o\ + libj2_j2u_rdivmod_j2u.o\ + libj2_j2u_rdivmod_j2u_to_j2u.o\ + libj2_j2u_rmod_j2u.o\ + libj2_j2u_rrot.o\ + libj2_j2u_rrot_to_j2u.o\ + libj2_j2u_rsh.o\ + libj2_j2u_rsh_to_j2u.o\ + libj2_j2u_rsh_to_j2u_underflow.o\ + libj2_j2u_rsh_underflow.o\ + libj2_j2u_rsub_j2u.o\ + libj2_j2u_rsub_j2u_overflow.o\ + libj2_j2u_rsub_ju.o\ + libj2_j2u_rsub_ju_overflow.o\ + libj2_j2u_sub_j2u.o\ + libj2_j2u_sub_j2u_overflow.o\ + libj2_j2u_sub_j2u_to_j2u.o\ + libj2_j2u_sub_j2u_to_j2u_overflow.o\ + libj2_j2u_sub_ju.o\ + libj2_j2u_sub_ju_overflow.o\ + libj2_j2u_sub_ju_to_j2u.o\ + libj2_j2u_sub_ju_to_j2u_overflow.o\ + libj2_j2u_test_bit.o\ + libj2_j2u_test_high_ju.o\ + libj2_j2u_test_j2u.o\ + libj2_j2u_test_ju.o\ + libj2_j2u_xnor_j2u.o\ + libj2_j2u_xnor_j2u_to_j2u.o\ + libj2_j2u_xnor_ju.o\ + libj2_j2u_xnor_ju_to_j2u.o\ + libj2_j2u_xor_j2u.o\ + libj2_j2u_xor_j2u_to_j2u.o\ + libj2_j2u_xor_ju.o\ + libj2_j2u_xor_ju_to_j2u.o\ + libj2_j2u_zero.o\ + libj2_ju_add_j2u_to_j2u.o\ + libj2_ju_add_j2u_to_j2u_overflow.o\ + libj2_ju_add_ju_to_j2u.o\ + libj2_ju_and_j2u_to_j2u.o\ + libj2_ju_cmp_j2u.o\ + libj2_ju_eq_j2u.o\ + libj2_ju_ge_j2u.o\ + libj2_ju_gt_j2u.o\ + libj2_ju_if_j2u_to_j2u.o\ + libj2_ju_imply_j2u_to_j2u.o\ + libj2_ju_le_j2u.o\ + libj2_ju_lrot_to_j2u.o\ + libj2_ju_lsh_to_j2u.o\ + libj2_ju_lsh_to_j2u_overflow.o\ + libj2_ju_lt_j2u.o\ + libj2_ju_mul_j2u_to_j2u.o\ + libj2_ju_mul_j2u_to_j2u_overflow.o\ + libj2_ju_mul_ju_to_j2u.o\ + libj2_ju_nand_j2u_to_j2u.o\ + libj2_ju_ne_j2u.o\ + libj2_ju_nif_j2u_to_j2u.o\ + libj2_ju_nimply_j2u_to_j2u.o\ + libj2_ju_nor_j2u_to_j2u.o\ + libj2_ju_or_j2u_to_j2u.o\ + libj2_ju_rrot_to_j2u.o\ + libj2_ju_rsh_to_j2u.o\ + libj2_ju_rsh_to_j2u_underflow.o\ + libj2_ju_sub_j2u_to_j2u.o\ + libj2_ju_sub_j2u_to_j2u_overflow.o\ + libj2_ju_sub_ju_to_j2u.o\ + libj2_ju_sub_ju_to_j2u_overflow.o\ + libj2_ju_to_j2u.o\ + libj2_ju_xnor_j2u_to_j2u.o\ + libj2_ju_xor_j2u_to_j2u.o\ + libj2_max_j2u.o\ + libj2_max_j2u_return.o\ + libj2_max_j2u_to_j2u.o\ + libj2_min_j2u.o\ + libj2_min_j2u_return.o\ + libj2_min_j2u_to_j2u.o\ + libj2_minus_j2u.o\ + libj2_minus_j2u_to_j2u.o\ + libj2_not_j2u.o\ + libj2_not_j2u_to_j2u.o\ + libj2_not_ju_to_j2u.o\ + libj2_sgn_j2u.o\ + libj2_vmax_j2u.o\ + libj2_vmax_j2u_return.o\ + libj2_vmax_j2u_to_j2u.o\ + libj2_vmin_j2u.o\ + libj2_vmin_j2u_return.o\ + libj2_vmin_j2u_to_j2u.o + +SUBHDR =\ + libj2/constants.h\ + libj2/signum.h\ + libj2/constructors.h\ + libj2/unsigned-comparsion.h\ + libj2/bitwise-logic.h\ + libj2/bit-shifting.h\ + libj2/sign-shifting.h\ + libj2/addition.h\ + libj2/subtraction.h\ + libj2/multiplication.h\ + libj2/division.h + +HDR =\ + $(SUBHDR)\ + libj2.h\ + common.h + +LOBJ = $(OBJ:.o=.lo) +TOBJ = $(OBJ:.o=.to) +TEST = $(OBJ:.o=.t) + +MAN7 = libj2.7 + + +all: libj2.a libj2.$(LIBEXT) $(TEST) +$(OBJ): $(HDR) +$(LOBJ): $(HDR) +$(TOBJ): $(HDR) +$(TEST): libj2.a + +.c.o: + $(CC) -c -o $@ $< $(CFLAGS) $(CPPFLAGS) + +.c.to: + $(CC) -c -o $@ $< -DTEST $(CFLAGS) $(CPPFLAGS) + +.to.t: + $(CC) -o $@ $< libj2.a $(LDFLAGS) + +.c.t: + $(CC) -o $@ $< libj2.a -DTEST $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) + +.c.lo: + $(CC) -fPIC -c -o $@ $< $(CFLAGS) $(CPPFLAGS) + +libj2.a: $(OBJ) + @rm -f -- $@ + $(AR) rc $@ $(OBJ) + $(AR) ts $@ > /dev/null + +libj2.$(LIBEXT): $(LOBJ) + $(CC) $(LIBFLAGS) -o $@ $(LOBJ) $(LDFLAGS) + +check: $(TEST) + @set -e;\ + for t in $(TEST); do\ + printf '%s ' $(CHECK_PREFIX) "./$$t"; printf '\n';\ + $(CHECK_PREFIX) ./"$$t";\ + done + +install: libj2.a libj2.$(LIBEXT) + mkdir -p -- "$(DESTDIR)$(PREFIX)/lib" + mkdir -p -- "$(DESTDIR)$(PREFIX)/include/libj2" + mkdir -p -- "$(DESTDIR)$(MANPREFIX)/man7" + cp -- libj2.a "$(DESTDIR)$(PREFIX)/lib/" + cp -- libj2.$(LIBEXT) "$(DESTDIR)$(PREFIX)/lib/libj2.$(LIBMINOREXT)" + $(FIX_INSTALL_NAME) "$(DESTDIR)$(PREFIX)/lib/libj2.$(LIBMINOREXT)" + ln -sf -- libj2.$(LIBMINOREXT) "$(DESTDIR)$(PREFIX)/lib/libj2.$(LIBMAJOREXT)" + ln -sf -- libj2.$(LIBMAJOREXT) "$(DESTDIR)$(PREFIX)/lib/libj2.$(LIBEXT)" + cp -- libj2.h "$(DESTDIR)$(PREFIX)/include/" + cp -- $(SUBHDR) "$(DESTDIR)$(PREFIX)/include/libj2/" + cp -- $(MAN7) "$(DESTDIR)$(MANPREFIX)/man7/" + +uninstall: + -rm -f -- "$(DESTDIR)$(PREFIX)/lib/libj2.a" + -rm -f -- "$(DESTDIR)$(PREFIX)/lib/libj2.$(LIBMAJOREXT)" + -rm -f -- "$(DESTDIR)$(PREFIX)/lib/libj2.$(LIBMINOREXT)" + -rm -f -- "$(DESTDIR)$(PREFIX)/lib/libj2.$(LIBEXT)" + -rm -f -- "$(DESTDIR)$(PREFIX)/include/libj2.h" + -cd -- "$(DESTDIR)$(PREFIX)/include/" && rm -f -- $(SUBHDR) + -rmdir -- "$(DESTDIR)$(PREFIX)/include/libj2" + -cd -- "$(DESTDIR)$(MANPREFIX)/man7/" && rm -f -- $(MAN7) + +clean: + -rm -f -- *.o *.a *.lo *.su *.so *.so.* *.dll *.dylib + -rm -f -- *.gch *.gcov *.gcno *.gcda *.$(LIBEXT) + -rm -f -- *.to *.t + +.SUFFIXES: +.SUFFIXES: .lo .o .c .to .t + +.PHONY: all install uninstall clean |
