diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 251 |
1 files changed, 251 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..30e8344 --- /dev/null +++ b/Makefile @@ -0,0 +1,251 @@ +.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 = normalform + + +OBJ_PUBLIC =\ + libnormalform_ref.o\ + libnormalform_free.o\ + libnormalform_clone.o\ + libnormalform_evaluate.o\ + libnormalform_express.o\ + libnormalform_to_string.o\ + libnormalform_from_string.o\ + libnormalform_variable.o\ + libnormalform_function.o\ + libnormalform_transformation.o\ + libnormalform_true.o\ + libnormalform_false.o\ + libnormalform_not.o\ + libnormalform_all.o\ + libnormalform_any.o\ + libnormalform_one.o\ + libnormalform_and.o\ + libnormalform_or.o\ + libnormalform_xor.o\ + libnormalform_if.o\ + libnormalform_imply.o\ + libnormalform_nand.o\ + libnormalform_nor.o\ + libnormalform_xnor.o\ + libnormalform_nif.o\ + libnormalform_nimply.o\ + libnormalform_exists.o\ + libnormalform_nexists.o\ + libnormalform_unique.o\ + libnormalform_existentially.o\ + libnormalform_universally.o\ + libnormalform_uniquely.o\ + libnormalform_empty.o\ + libnormalform_nonempty.o\ + libnormalform_singleton.o\ + libnormalform_and_checked.o\ + libnormalform_or_checked.o\ + libnormalform_xor_checked.o\ + libnormalform_if_checked.o\ + libnormalform_imply_checked.o\ + libnormalform_nand_checked.o\ + libnormalform_nor_checked.o\ + libnormalform_xnor_checked.o\ + libnormalform_nif_checked.o\ + libnormalform_nimply_checked.o\ + libnormalform_vand.o\ + libnormalform_vor.o\ + libnormalform_vxor.o\ + libnormalform_vif.o\ + libnormalform_vimply.o\ + libnormalform_vnand.o\ + libnormalform_vnor.o\ + libnormalform_vxnor.o\ + libnormalform_vnif.o\ + libnormalform_vnimply.o\ + libnormalform_andl.o\ + libnormalform_orl.o\ + libnormalform_xorl.o\ + libnormalform_ifl.o\ + libnormalform_implyl.o\ + libnormalform_nandl.o\ + libnormalform_norl.o\ + libnormalform_xnorl.o\ + libnormalform_nifl.o\ + libnormalform_nimplyl.o\ + libnormalform_vand_checked.o\ + libnormalform_vor_checked.o\ + libnormalform_vxor_checked.o\ + libnormalform_vif_checked.o\ + libnormalform_vimply_checked.o\ + libnormalform_vnand_checked.o\ + libnormalform_vnor_checked.o\ + libnormalform_vxnor_checked.o\ + libnormalform_vnif_checked.o\ + libnormalform_vnimply_checked.o\ + libnormalform_andl_checked.o\ + libnormalform_orl_checked.o\ + libnormalform_xorl_checked.o\ + libnormalform_ifl_checked.o\ + libnormalform_implyl_checked.o\ + libnormalform_nandl_checked.o\ + libnormalform_norl_checked.o\ + libnormalform_xnorl_checked.o\ + libnormalform_nifl_checked.o\ + libnormalform_nimplyl_checked.o\ + libnormalform_and2.o\ + libnormalform_or2.o\ + libnormalform_xor2.o\ + libnormalform_if2.o\ + libnormalform_imply2.o\ + libnormalform_nand2.o\ + libnormalform_nor2.o\ + libnormalform_xnor2.o\ + libnormalform_nif2.o\ + libnormalform_nimply2.o\ + +OBJ =\ + $(OBJ_PUBLIC)\ + libnormalform_and2__.o\ + libnormalform_or2__.o\ + libnormalform_xor2__.o\ + libnormalform_set_indices_and_counts__.o\ + libnormalform_reset_indices_and_counts__.o + +TOBJ = $(OBJ:.o=.to)\ + libnormalform_andl_macro_test.to\ + libnormalform_orl_macro_test.to\ + libnormalform_xorl_macro_test.to\ + libnormalform_ifl_macro_test.to\ + libnormalform_implyl_macro_test.to\ + libnormalform_nandl_macro_test.to\ + libnormalform_norl_macro_test.to\ + libnormalform_xnorl_macro_test.to\ + libnormalform_nifl_macro_test.to\ + libnormalform_nimplyl_macro_test.to + +HDR =\ + libnormalform.h + +MAN3 =\ + $(OBJ_PUBLIC:.o=.3)\ + LIBNORMALFORM_AND.3\ + LIBNORMALFORM_OR.3\ + LIBNORMALFORM_XOR.3\ + LIBNORMALFORM_IF.3\ + LIBNORMALFORM_IMPLY.3\ + LIBNORMALFORM_NAND.3\ + LIBNORMALFORM_NOR.3\ + LIBNORMALFORM_XNOR.3\ + LIBNORMALFORM_NIF.3\ + LIBNORMALFORM_NIMPLY.3\ + struct_libnormalform_map.3\ + libnormalform_map.3\ + struct_libnormalform_mapping.3\ + libnormalform_mapping.3\ + struct_libnormalform_representation_spec.3\ + libnormalform_representation_spec.3\ + struct_libnormalform_transformer.3\ + libnormalform_transformer.3\ + enum_libnormalform_builtin_transformer.3\ + libnormalform_builtin_transformer.3\ + struct_libnormalform_function.3\ + struct_libnormalform_variable.3\ + enum_libnormalform_value.3\ + libnormalform_value.3\ + LIBNORMALFORM_SENTENCE.3\ + struct_libnormalform_sentence.3\ + libnormalform_sentence.3 + +LOBJ = $(OBJ:.o=.lo) +TEST = $(TOBJ:.to=.t) + + +all: libnormalform.a libnormalform.$(LIBEXT) $(TEST) +$(OBJ): $(HDR) common.h +$(LOBJ): $(HDR) common.h +$(TOBJ): $(HDR) common.h +$(TEST): libnormalform.a $(MEMCHECK) +memcheck.to: memcheck.h + +L = libnormalform +C = checked + +$L_and2.to $L_andl.to $L_vand.to $L_and_$C.to $L_andl_$C.to $L_vand_$C.to $L_andl_macro_test.to : $L_and.c +$L_or2.to $L_orl.to $L_vor.to $L_or_$C.to $L_orl_$C.to $L_vor_$C.to $L_orl_macro_test.to : $L_or.c +$L_xor2.to $L_xorl.to $L_vxor.to $L_xor_$C.to $L_xorl_$C.to $L_vxor_$C.to $L_xorl_macro_test.to : $L_xor.c +$L_if2.to $L_ifl.to $L_vif.to $L_if_$C.to $L_ifl_$C.to $L_vif_$C.to $L_ifl_macro_test.to : $L_if.c +$L_imply2.to $L_implyl.to $L_vimply.to $L_imply_$C.to $L_implyl_$C.to $L_vimply_$C.to $L_implyl_macro_test.to : $L_imply.c +$L_nand2.to $L_nandl.to $L_vnand.to $L_nand_$C.to $L_nandl_$C.to $L_vnand_$C.to $L_nandl_macro_test.to : $L_nand.c +$L_nor2.to $L_norl.to $L_vnor.to $L_nor_$C.to $L_norl_$C.to $L_vnor_$C.to $L_norl_macro_test.to : $L_nor.c +$L_xnor2.to $L_xnorl.to $L_vxnor.to $L_xnor_$C.to $L_xnorl_$C.to $L_vxnor_$C.to $L_xnorl_macro_test.to : $L_xnor.c +$L_nif2.to $L_nifl.to $L_vnif.to $L_nif_$C.to $L_nifl_$C.to $L_vnif_$C.to $L_nifl_macro_test.to : $L_nif.c +$L_nimply2.to $L_nimplyl.to $L_vnimply.to $L_nimply_$C.to $L_nimplyl_$C.to $L_vnimply_$C.to $L_nimplyl_macro_test.to : $L_nimply.c + +.c.o: + $(CC) -c -o $@ $< $(CFLAGS) $(CPPFLAGS) + +.c.lo: + $(CC) -fPIC -c -o $@ $< $(CFLAGS) $(CPPFLAGS) + +.c.to: + $(CC) -DTEST -DTEST_TIMEOUT_SECONDS=$(TEST_TIMEOUT_SECONDS) -c -o $@ $< $(TEST_CFLAGS) $(TEST_CPPFLAGS) + +.to.t: + $(CC) -o $@ $< libnormalform.a $(MEMCHECK_OBJ) $(TEST_LDFLAGS) + +libnormalform.a: $(OBJ) + @rm -f -- $@ + $(AR) rc $@ $(OBJ) + $(AR) ts $@ > /dev/null + +libnormalform.$(LIBEXT): $(LOBJ) + $(CC) $(LIBFLAGS) -o $@ $(LOBJ) $(LDFLAGS) + +check: $(TEST) + set -e;\ + for t in $(TEST:.t=); do\ + printf 'Testing %s\n' "$$t" >&2;\ + $(CHECK_PREFIX) ./$$t.t;\ + done + +install: libnormalform.a libnormalform.$(LIBEXT) + mkdir -p -- "$(DESTDIR)$(PREFIX)/lib" + mkdir -p -- "$(DESTDIR)$(PREFIX)/include" + cp -- libnormalform.a "$(DESTDIR)$(PREFIX)/lib/" + cp -- libnormalform.$(LIBEXT) "$(DESTDIR)$(PREFIX)/lib/libnormalform.$(LIBMINOREXT)" + $(FIX_INSTALL_NAME) "$(DESTDIR)$(PREFIX)/lib/libnormalform.$(LIBMINOREXT)" + ln -sf -- libnormalform.$(LIBMINOREXT) "$(DESTDIR)$(PREFIX)/lib/libnormalform.$(LIBMAJOREXT)" + ln -sf -- libnormalform.$(LIBMAJOREXT) "$(DESTDIR)$(PREFIX)/lib/libnormalform.$(LIBEXT)" + cp -- libnormalform.h "$(DESTDIR)$(PREFIX)/include/" + mkdir -p -- "$(DESTDIR)$(MANPREFIX)/man7" + cp -- libnormalform.7 "$(DESTDIR)$(MANPREFIX)/man7/" + mkdir -p -- "$(DESTDIR)$(MANPREFIX)/man3" + cp -P -- $$(printf 'man3/%s\n' $(MAN3)) "$(DESTDIR)$(MANPREFIX)/man3/" + +uninstall: + -rm -f -- "$(DESTDIR)$(PREFIX)/lib/libnormalform.a" + -rm -f -- "$(DESTDIR)$(PREFIX)/lib/libnormalform.$(LIBMAJOREXT)" + -rm -f -- "$(DESTDIR)$(PREFIX)/lib/libnormalform.$(LIBMINOREXT)" + -rm -f -- "$(DESTDIR)$(PREFIX)/lib/libnormalform.$(LIBEXT)" + -rm -f -- "$(DESTDIR)$(PREFIX)/include/libnormalform.h" + -rm -f -- "$(DESTDIR)$(MANPREFIX)/man7/libnormalform.7" + -(cd -- "$(DESTDIR)$(MANPREFIX)/man3/" && rm -f -- $(MAN3)) + +clean: + -rm -f -- *.o *.a *.lo *.su *.so *.so.* *.dll *.dylib + -rm -f -- *.gch *.gcov *.gcno *.gcda *.$(LIBEXT) *.t *.to + +.SUFFIXES: +.SUFFIXES: .lo .o .c .t .to + +.PHONY: all check install uninstall clean |
