.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