The unpac monorepo manager self-hosting as a monorepo using unpac
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Use macros to generate installation commands

make install works as it did before. All the commands in the install
targets now go through a macro call which allows the semantic intent of
each command to be more clearly specified.

+304 -249
+154 -180
Makefile
··· 2776 2776 # future. 2777 2777 2778 2778 ifeq "$(NATIVE_COMPILER)" "true" 2779 - install: full-installoptopt ; 2779 + install: full-installoptopt 2780 + $(call INSTALL_END) 2780 2781 else 2781 - install: common-install ; 2782 + install: common-install 2783 + $(call INSTALL_END) 2782 2784 endif 2783 2785 2784 2786 # These three targets are the slightly esoteric special sauce that avoid ··· 2807 2809 2808 2810 .PHONY: common-install 2809 2811 common-install:: 2810 - $(MKDIR) "$(INSTALL_BINDIR)" 2811 - $(MKDIR) "$(INSTALL_LIBDIR)" 2812 - ifeq "$(SUPPORTS_SHARED_LIBRARIES)" "true" 2813 - $(MKDIR) "$(INSTALL_STUBLIBDIR)" 2814 - endif 2815 - $(MKDIR) "$(INSTALL_LIBDIR_COMPILERLIBS)" 2816 - $(MKDIR) "$(INSTALL_DOCDIR)" 2817 - $(MKDIR) "$(INSTALL_LIBDIR_CAML)" 2818 - $(MKDIR) "$(INSTALL_LIBDIR_PROFILING)" 2812 + $(call INSTALL_BEGIN) 2819 2813 2820 2814 ifeq "$(SUFFIXING)" "true" 2821 2815 MANGLE_RUNTIME_NAME = $(TARGET)-$(1)-$(BYTECODE_RUNTIME_ID)$(EXE) ··· 2827 2821 2828 2822 define INSTALL_RUNTIME 2829 2823 common-install:: 2830 - $(INSTALL_PROG) \ 2831 - runtime/$(1)$(EXE) \ 2832 - "$(INSTALL_BINDIR)/$(call MANGLE_RUNTIME_NAME,$(1))" 2833 - ifeq "$(SUFFIXING)" "true" 2834 - cd "$(INSTALL_BINDIR)" && \ 2835 - $(LN) "$(TARGET)-$(1)-$(BYTECODE_RUNTIME_ID)$(EXE)" "$(1)$(EXE)" 2836 - cd "$(INSTALL_BINDIR)" && \ 2837 - $(LN) "$(TARGET)-$(1)-$(BYTECODE_RUNTIME_ID)$(EXE)" \ 2838 - "$(1)-$(ZINC_RUNTIME_ID)$(EXE)" 2839 - endif 2824 + $$(call INSTALL_ITEM, runtime/$(1)$(EXE), bin, , \ 2825 + $(call MANGLE_RUNTIME_NAME,$(1)), $(if $(filter true, $(SUFFIXING)), \ 2826 + $(1)$(EXE) $(1)-$(ZINC_RUNTIME_ID)$(EXE))) 2840 2827 endef 2841 2828 define INSTALL_RUNTIME_LIB 2842 2829 ifeq "$(2)" "BYTECODE" ··· 2844 2831 else 2845 2832 full-installopt native-install:: 2846 2833 endif 2847 - $(INSTALL_PROG) \ 2848 - runtime/lib$(1)_shared$(EXT_DLL) \ 2849 - "$(INSTALL_LIBDIR)/$(call MANGLE_RUNTIME_DLL_NAME,$(1),$(2))" 2850 - ifeq "$(SUFFIXING)" "true" 2851 - cd "$(INSTALL_LIBDIR)" && \ 2852 - $(LN) "$(call MANGLE_RUNTIME_DLL_NAME,$(1),$(2))" \ 2853 - "lib$(1)_shared$(EXT_DLL)" 2854 - endif 2834 + $$(call INSTALL_ITEM, runtime/lib$(1)_shared$(EXT_DLL), libexec, , \ 2835 + $(call MANGLE_RUNTIME_DLL_NAME,$(1),$(2)), \ 2836 + $(if $(filter true, $(SUFFIXING)), lib$(1)_shared$(EXT_DLL))) 2855 2837 endef 2856 2838 2857 2839 $(foreach runtime, $(runtime_PROGRAMS), \ 2858 2840 $(eval $(call INSTALL_RUNTIME,$(runtime)))) 2859 2841 2860 2842 common-install:: 2861 - $(INSTALL_DATA) runtime/ld.conf $(runtime_BYTECODE_STATIC_LIBRARIES) \ 2862 - "$(INSTALL_LIBDIR)" 2843 + $(call INSTALL_ITEMS, runtime/ld.conf $(runtime_BYTECODE_STATIC_LIBRARIES), \ 2844 + lib) 2863 2845 2864 2846 $(foreach shared_runtime, $(runtime_BYTECODE_SHARED_LIBRARIES), \ 2865 2847 $(eval $(call INSTALL_RUNTIME_LIB,$(shared_runtime),BYTECODE))) 2866 2848 2867 2849 common-install:: 2868 - $(INSTALL_DATA) runtime/caml/domain_state.tbl runtime/caml/*.h \ 2869 - "$(INSTALL_LIBDIR_CAML)" 2870 - $(INSTALL_PROG) ocaml$(EXE) "$(INSTALL_BINDIR)" 2850 + $(call INSTALL_ITEMS, \ 2851 + runtime/caml/domain_state.tbl runtime/caml/*.h, \ 2852 + lib, $(INSTALL_LIBDIR_CAML)) 2853 + $(call INSTALL_ITEMS, ocaml$(EXE), bin) 2871 2854 ifeq "$(INSTALL_BYTECODE_PROGRAMS)" "true" 2872 2855 $(call STRIP_BYTE_PROG, ocamlc$(EXE)) 2873 - $(INSTALL_PROG) ocamlc$(EXE).stripped "$(INSTALL_BINDIR)/ocamlc.byte$(EXE)" 2856 + ifeq "$(NATIVE_COMPILER)" "true" 2857 + $(call INSTALL_ITEM, \ 2858 + ocamlc$(EXE).stripped, bin, , ocamlc.byte$(EXE)) 2859 + else 2860 + $(call INSTALL_ITEM, \ 2861 + ocamlc$(EXE).stripped, bin, , ocamlc.byte$(EXE), ocamlc$(EXE)) 2862 + endif 2874 2863 endif 2875 2864 $(MAKE) -C stdlib install 2876 2865 2877 2866 define INSTALL_ONE_NAT_TOOL 2878 2867 common-install:: 2868 + ifeq "$(NATIVE_COMPILER)" "true" 2879 2869 ifeq "$(INSTALL_BYTECODE_PROGRAMS)" "true" 2880 - $(INSTALL_PROG) "tools/$(1)$(EXE)" "$(INSTALL_BINDIR)/$(1).byte$(EXE)" 2870 + $$(call INSTALL_ITEM, tools/$(1)$(EXE), bin, , $(1).byte$(EXE)) 2881 2871 endif 2882 - ifeq "$(NATIVE_COMPILER)" "true" 2883 - $(INSTALL_PROG) "tools/$(1).opt$(EXE)" "$(INSTALL_BINDIR)" 2872 + $$(call INSTALL_ITEM, tools/$(1).opt$(EXE), bin, , , $(1)$(EXE)) 2873 + else 2874 + $$(call INSTALL_ITEM, tools/$(1)$(EXE), bin, , $(1).byte$(EXE), $(1)$(EXE)) 2884 2875 endif 2885 - (cd "$(INSTALL_BINDIR)" && \ 2886 - $(LN) "$(1).$(if $(filter true, $(NATIVE_COMPILER)),opt,byte)$(EXE)" \ 2887 - "$(1)$(EXE)") 2888 2876 endef 2889 2877 2890 2878 ifeq "$(INSTALL_BYTECODE_PROGRAMS)" "true" 2891 2879 common-install:: 2892 - $(INSTALL_PROG) lex/ocamllex$(EXE) \ 2893 - "$(INSTALL_BINDIR)/ocamllex.byte$(EXE)" 2880 + ifeq "$(NATIVE_COMPILER)" "true" 2881 + $(call INSTALL_ITEM, \ 2882 + lex/ocamllex$(EXE), bin, , ocamllex.byte$(EXE)) 2883 + else 2884 + $(call INSTALL_ITEM, \ 2885 + lex/ocamllex$(EXE), bin, , ocamllex.byte$(EXE), ocamllex$(EXE)) 2886 + endif 2894 2887 endif 2895 2888 2896 2889 $(foreach tool, $(TOOLS_TO_INSTALL_NAT), \ ··· 2898 2891 2899 2892 define INSTALL_ONE_BYT_TOOL 2900 2893 common-install:: 2901 - $(INSTALL_PROG) "tools/$(1)$(EXE)" "$(INSTALL_BINDIR)" 2894 + $$(call INSTALL_ITEMS, tools/$(1)$(EXE), bin) 2902 2895 endef 2903 2896 2904 2897 $(foreach tool, $(TOOLS_TO_INSTALL_BYT), \ 2905 2898 $(eval $(call INSTALL_ONE_BYT_TOOL,$(tool)))) 2906 2899 2907 2900 common-install:: 2908 - $(INSTALL_PROG) $(ocamlyacc_PROGRAM)$(EXE) "$(INSTALL_BINDIR)" 2909 - $(INSTALL_DATA) \ 2910 - $(call COMPILER_ARTEFACT_DIRS, *.cmi) \ 2911 - "$(INSTALL_LIBDIR_COMPILERLIBS)" 2901 + $(call INSTALL_ITEMS, $(ocamlyacc_PROGRAM)$(EXE), bin) 2902 + $(call INSTALL_ITEMS, \ 2903 + $(call COMPILER_ARTEFACT_DIRS, *.cmi), \ 2904 + lib, $(INSTALL_LIBDIR_COMPILERLIBS)) 2912 2905 ifeq "$(INSTALL_SOURCE_ARTIFACTS)" "true" 2913 - $(INSTALL_DATA) \ 2914 - $(call COMPILER_ARTEFACT_DIRS, *.cmt *.cmti *.mli) \ 2915 - "$(INSTALL_LIBDIR_COMPILERLIBS)" 2916 - $(INSTALL_DATA) \ 2917 - toplevel/byte/*.cmt \ 2918 - "$(INSTALL_LIBDIR_COMPILERLIBS)" 2919 - $(INSTALL_DATA) \ 2920 - tools/profiling.cmt tools/profiling.cmti \ 2921 - "$(INSTALL_LIBDIR_PROFILING)" 2906 + $(call INSTALL_ITEMS, \ 2907 + $(call COMPILER_ARTEFACT_DIRS, *.cmt *.cmti *.mli), \ 2908 + lib, $(INSTALL_LIBDIR_COMPILERLIBS)) 2909 + $(call INSTALL_ITEMS, toplevel/byte/*.cmt, \ 2910 + lib, $(INSTALL_LIBDIR_COMPILERLIBS)) 2911 + $(call INSTALL_ITEMS, tools/profiling.cmt tools/profiling.cmti, \ 2912 + lib, $(INSTALL_LIBDIR_PROFILING)) 2922 2913 endif 2923 - $(INSTALL_DATA) \ 2924 - compilerlibs/*.cma compilerlibs/META \ 2925 - "$(INSTALL_LIBDIR_COMPILERLIBS)" 2926 - $(INSTALL_DATA) \ 2927 - $(ocamlc_CMO_FILES) $(ocaml_CMO_FILES) \ 2928 - "$(INSTALL_LIBDIR_COMPILERLIBS)" 2929 - $(INSTALL_PROG) $(expunge) "$(INSTALL_LIBDIR)" 2914 + $(call INSTALL_ITEMS, compilerlibs/*.cma compilerlibs/META, \ 2915 + lib, $(INSTALL_LIBDIR_COMPILERLIBS)) 2916 + $(call INSTALL_ITEMS, $(ocamlc_CMO_FILES) $(ocaml_CMO_FILES), \ 2917 + lib, $(INSTALL_LIBDIR_COMPILERLIBS)) 2918 + $(call INSTALL_ITEMS, $(expunge), libexec) 2930 2919 # If installing over a previous OCaml version, ensure some modules are removed 2931 2920 # from the previous installation. 2932 - rm -f "$(INSTALL_LIBDIR)"/topdirs.cm* "$(INSTALL_LIBDIR)/topdirs.mli" 2933 - rm -f "$(INSTALL_LIBDIR)"/profiling.cm* "$(INSTALL_LIBDIR)/profiling.$(O)" 2934 - $(INSTALL_DATA) \ 2935 - tools/profiling.cmi tools/profiling.cmo \ 2936 - "$(INSTALL_LIBDIR_PROFILING)" 2921 + $(call INSTALL_RM, \ 2922 + "$(INSTALL_LIBDIR)"/topdirs.cm* "$(INSTALL_LIBDIR)/topdirs.mli") 2923 + $(call INSTALL_RM, \ 2924 + "$(INSTALL_LIBDIR)"/profiling.cm* "$(INSTALL_LIBDIR)/profiling.$(O)") 2925 + $(call INSTALL_ITEMS, tools/profiling.cmi tools/profiling.cmo, \ 2926 + lib, $(INSTALL_LIBDIR_PROFILING)) 2937 2927 ifeq "$(UNIX_OR_WIN32)" "unix" # Install manual pages only on Unix 2938 2928 $(MAKE) -C man install 2939 2929 endif 2940 2930 # For dynlink, if installing over a previous OCaml version, ensure 2941 2931 # dynlink is removed from the previous installation. 2942 - rm -f "$(INSTALL_LIBDIR)"/dynlink.cm* "$(INSTALL_LIBDIR)/dynlink.mli" \ 2943 - "$(INSTALL_LIBDIR)/dynlink.$(A)" \ 2944 - $(addprefix "$(INSTALL_LIBDIR)/", $(notdir $(dynlink_CMX_FILES))) 2945 - $(MKDIR) "$(INSTALL_LIBDIR_DYNLINK)" 2946 - $(INSTALL_DATA) \ 2947 - otherlibs/dynlink/dynlink.cmi otherlibs/dynlink/dynlink.cma \ 2948 - otherlibs/dynlink/META \ 2949 - "$(INSTALL_LIBDIR_DYNLINK)" 2932 + $(call INSTALL_RM, \ 2933 + "$(INSTALL_LIBDIR)"/dynlink.cm* \ 2934 + "$(INSTALL_LIBDIR)/dynlink.mli" \ 2935 + "$(INSTALL_LIBDIR)/dynlink.$(A)" \ 2936 + $(addprefix "$(INSTALL_LIBDIR)/", $(notdir $(dynlink_CMX_FILES)))) 2937 + $(call INSTALL_ITEMS, \ 2938 + otherlibs/dynlink/dynlink.cmi otherlibs/dynlink/dynlink.cma \ 2939 + otherlibs/dynlink/META, \ 2940 + lib, $(INSTALL_LIBDIR_DYNLINK)) 2950 2941 ifeq "$(INSTALL_SOURCE_ARTIFACTS)" "true" 2951 - $(INSTALL_DATA) \ 2952 - otherlibs/dynlink/dynlink.cmti otherlibs/dynlink/dynlink.mli \ 2953 - "$(INSTALL_LIBDIR_DYNLINK)" 2942 + $(call INSTALL_ITEMS, \ 2943 + otherlibs/dynlink/dynlink.cmti otherlibs/dynlink/dynlink.mli, \ 2944 + lib, $(INSTALL_LIBDIR_DYNLINK)) 2954 2945 endif 2955 2946 for i in $(OTHERLIBS); do \ 2956 2947 $(MAKE) -C otherlibs/$$i install || exit $$?; \ 2957 2948 done 2958 2949 ifeq "$(build_ocamldoc)" "true" 2959 - $(MKDIR) "$(INSTALL_LIBDIR_OCAMLDOC)" 2960 - $(INSTALL_PROG) ocamldoc/ocamldoc$(EXE) "$(INSTALL_BINDIR)" 2961 - $(INSTALL_DATA) \ 2962 - ocamldoc/ocamldoc.hva ocamldoc/*.cmi ocamldoc/odoc_info.cma \ 2963 - ocamldoc/META \ 2964 - "$(INSTALL_LIBDIR_OCAMLDOC)" 2950 + $(call INSTALL_ITEMS, ocamldoc/ocamldoc$(EXE), bin) 2951 + $(call INSTALL_ITEMS, \ 2952 + ocamldoc/ocamldoc.hva ocamldoc/*.cmi ocamldoc/odoc_info.cma \ 2953 + ocamldoc/META, \ 2954 + lib, $(INSTALL_LIBDIR_OCAMLDOC)) 2965 2955 ifeq "$(INSTALL_SOURCE_ARTIFACTS)" "true" 2966 - $(INSTALL_DATA) \ 2967 - $(OCAMLDOC_LIBMLIS) $(OCAMLDOC_LIBCMTS) \ 2968 - "$(INSTALL_LIBDIR_OCAMLDOC)" 2956 + $(call INSTALL_ITEMS, $(OCAMLDOC_LIBMLIS) $(OCAMLDOC_LIBCMTS), \ 2957 + lib, $(INSTALL_LIBDIR_OCAMLDOC)) 2969 2958 endif 2970 2959 endif 2971 2960 ifeq "$(build_libraries_manpages)" "true" 2972 2961 $(MAKE) -C api_docgen install 2973 2962 endif 2974 2963 ifneq "$(WITH_DEBUGGER)" "" 2975 - $(INSTALL_PROG) debugger/ocamldebug$(EXE) "$(INSTALL_BINDIR)" 2964 + $(call INSTALL_ITEMS, debugger/ocamldebug$(EXE), bin) 2976 2965 endif 2977 2966 ifeq "$(BOOTSTRAPPING_FLEXDLL)" "true" 2978 2967 ifeq "$(TOOLCHAIN)" "msvc" 2979 - $(INSTALL_DATA) $(FLEXDLL_SOURCE_DIR)/$(FLEXDLL_MANIFEST) \ 2980 - "$(INSTALL_BINDIR)/" 2968 + # Technically this should not be installed with "executable" 2969 + # permissions, but in practice that request will be ignored. 2970 + $(call INSTALL_ITEMS, $(FLEXDLL_SOURCE_DIR)/$(FLEXDLL_MANIFEST), bin) 2981 2971 endif 2982 2972 ifeq "$(INSTALL_BYTECODE_PROGRAMS)" "true" 2983 - $(INSTALL_PROG) \ 2984 - flexlink.byte$(EXE) "$(INSTALL_BINDIR)" 2973 + ifeq "$(NATIVE_COMPILER)" "true" 2974 + $(call INSTALL_ITEMS, flexlink.byte$(EXE), bin) 2975 + else 2976 + $(call INSTALL_ITEM, flexlink.byte$(EXE), bin, , , flexlink$(EXE)) 2977 + endif 2985 2978 endif # ifeq "$(INSTALL_BYTECODE_PROGRAMS)" "true" 2986 - $(MKDIR) "$(INSTALL_LIBDIR_FLEXDLL)" 2987 - $(INSTALL_DATA) $(FLEXDLL_OBJECTS) "$(INSTALL_LIBDIR_FLEXDLL)" 2979 + $(call INSTALL_ITEMS, $(FLEXDLL_OBJECTS), lib, $(INSTALL_LIBDIR_FLEXDLL)) 2988 2980 endif # ifeq "$(BOOTSTRAPPING_FLEXDLL)" "true" 2989 - $(INSTALL_DATA) Makefile.config "$(INSTALL_LIBDIR)" 2990 - $(INSTALL_DATA) $(DOC_FILES) "$(INSTALL_DOCDIR)" 2991 - ifeq "$(NATIVE_COMPILER)-$(INSTALL_BYTECODE_PROGRAMS)" "false-true" 2992 - cd "$(INSTALL_BINDIR)"; \ 2993 - $(LN) ocamlc.byte$(EXE) ocamlc$(EXE); \ 2994 - $(LN) ocamllex.byte$(EXE) ocamllex$(EXE); \ 2995 - (test -f flexlink.byte$(EXE) && \ 2996 - $(LN) flexlink.byte$(EXE) flexlink$(EXE)) || true 2997 - endif 2981 + $(call INSTALL_ITEMS, Makefile.config, lib) 2982 + $(call INSTALL_ITEMS, $(DOC_FILES), doc) 2998 2983 2999 2984 # Installation of the native-code compiler 3000 2985 .PHONY: full-installopt native-install 3001 2986 full-installopt native-install:: 3002 - $(INSTALL_DATA) $(runtime_NATIVE_STATIC_LIBRARIES) "$(INSTALL_LIBDIR)" 2987 + $(call INSTALL_ITEMS, $(runtime_NATIVE_STATIC_LIBRARIES), lib) 3003 2988 3004 2989 $(foreach shared_runtime, $(runtime_NATIVE_SHARED_LIBRARIES), \ 3005 2990 $(eval $(call INSTALL_RUNTIME_LIB,$(shared_runtime),NATIVE))) ··· 3007 2992 full-installopt native-install:: 3008 2993 ifeq "$(INSTALL_BYTECODE_PROGRAMS)" "true" 3009 2994 $(call STRIP_BYTE_PROG, ocamlopt$(EXE)) 3010 - $(INSTALL_PROG) \ 3011 - ocamlopt$(EXE).stripped "$(INSTALL_BINDIR)/ocamlopt.byte$(EXE)" 2995 + $(call INSTALL_ITEM, ocamlopt$(EXE).stripped, bin, , ocamlopt.byte$(EXE)) 3012 2996 endif 3013 2997 $(MAKE) -C stdlib installopt 3014 - $(INSTALL_DATA) \ 3015 - middle_end/*.cmi \ 3016 - "$(INSTALL_LIBDIR_COMPILERLIBS)" 3017 - $(INSTALL_DATA) \ 3018 - middle_end/closure/*.cmi \ 3019 - "$(INSTALL_LIBDIR_COMPILERLIBS)" 3020 - $(INSTALL_DATA) \ 3021 - middle_end/flambda/*.cmi \ 3022 - "$(INSTALL_LIBDIR_COMPILERLIBS)" 3023 - $(INSTALL_DATA) \ 3024 - middle_end/flambda/base_types/*.cmi \ 3025 - "$(INSTALL_LIBDIR_COMPILERLIBS)" 3026 - $(INSTALL_DATA) \ 3027 - asmcomp/*.cmi \ 3028 - "$(INSTALL_LIBDIR_COMPILERLIBS)" 2998 + $(call INSTALL_ITEMS, \ 2999 + middle_end/*.cmi, \ 3000 + lib, $(INSTALL_LIBDIR_COMPILERLIBS)) 3001 + $(call INSTALL_ITEMS, \ 3002 + middle_end/closure/*.cmi, \ 3003 + lib, $(INSTALL_LIBDIR_COMPILERLIBS)) 3004 + $(call INSTALL_ITEMS, \ 3005 + middle_end/flambda/*.cmi, \ 3006 + lib, $(INSTALL_LIBDIR_COMPILERLIBS)) 3007 + $(call INSTALL_ITEMS, \ 3008 + middle_end/flambda/base_types/*.cmi, \ 3009 + lib, $(INSTALL_LIBDIR_COMPILERLIBS)) 3010 + $(call INSTALL_ITEMS, \ 3011 + asmcomp/*.cmi, \ 3012 + lib, $(INSTALL_LIBDIR_COMPILERLIBS)) 3029 3013 ifeq "$(INSTALL_SOURCE_ARTIFACTS)" "true" 3030 - $(INSTALL_DATA) \ 3031 - $(addprefix middle_end/, *.cmt *.cmti *.mli) \ 3032 - "$(INSTALL_LIBDIR_COMPILERLIBS)" 3033 - $(INSTALL_DATA) \ 3034 - $(addprefix middle_end/closure/, *.cmt *.cmti *.mli) \ 3035 - "$(INSTALL_LIBDIR_COMPILERLIBS)" 3036 - $(INSTALL_DATA) \ 3037 - $(addprefix middle_end/flambda/, *.cmt *.cmti *.mli) \ 3038 - "$(INSTALL_LIBDIR_COMPILERLIBS)" 3039 - $(INSTALL_DATA) \ 3040 - $(addprefix middle_end/flambda/base_types/, *.cmt *.cmti *.mli) \ 3041 - "$(INSTALL_LIBDIR_COMPILERLIBS)" 3042 - $(INSTALL_DATA) \ 3043 - $(addprefix asmcomp/, *.cmt *.cmti *.mli) \ 3044 - "$(INSTALL_LIBDIR_COMPILERLIBS)" 3014 + $(call INSTALL_ITEMS, \ 3015 + $(addprefix middle_end/, *.cmt *.cmti *.mli), \ 3016 + lib, $(INSTALL_LIBDIR_COMPILERLIBS)) 3017 + $(call INSTALL_ITEMS, \ 3018 + $(addprefix middle_end/closure/, *.cmt *.cmti *.mli), \ 3019 + lib, $(INSTALL_LIBDIR_COMPILERLIBS)) 3020 + $(call INSTALL_ITEMS, \ 3021 + $(addprefix middle_end/flambda/, *.cmt *.cmti *.mli), \ 3022 + lib, $(INSTALL_LIBDIR_COMPILERLIBS)) 3023 + $(call INSTALL_ITEMS, \ 3024 + $(addprefix middle_end/flambda/base_types/, *.cmt *.cmti *.mli), \ 3025 + lib, $(INSTALL_LIBDIR_COMPILERLIBS)) 3026 + $(call INSTALL_ITEMS, \ 3027 + $(addprefix asmcomp/, *.cmt *.cmti *.mli), \ 3028 + lib, $(INSTALL_LIBDIR_COMPILERLIBS)) 3045 3029 endif 3046 - $(INSTALL_DATA) \ 3047 - $(ocamlopt_CMO_FILES) \ 3048 - "$(INSTALL_LIBDIR_COMPILERLIBS)" 3030 + $(call INSTALL_ITEMS, $(ocamlopt_CMO_FILES), \ 3031 + lib, $(INSTALL_LIBDIR_COMPILERLIBS)) 3049 3032 ifeq "$(build_ocamldoc)" "true" 3050 - $(INSTALL_PROG) ocamldoc/ocamldoc.opt$(EXE) "$(INSTALL_BINDIR)" 3051 - $(INSTALL_DATA) \ 3052 - ocamldoc/*.cmx ocamldoc/odoc_info.$(A) \ 3053 - ocamldoc/odoc_info.cmxa \ 3054 - "$(INSTALL_LIBDIR_OCAMLDOC)" 3033 + $(call INSTALL_ITEMS, ocamldoc/ocamldoc.opt$(EXE), bin) 3034 + $(call INSTALL_ITEMS, \ 3035 + ocamldoc/*.cmx ocamldoc/odoc_info.$(A) ocamldoc/odoc_info.cmxa, \ 3036 + lib, $(INSTALL_LIBDIR_OCAMLDOC)) 3055 3037 endif 3056 3038 ifeq "$(strip $(NATDYNLINK))" "true" 3057 - $(INSTALL_DATA) \ 3058 - $(dynlink_CMX_FILES) otherlibs/dynlink/dynlink.cmxa \ 3059 - otherlibs/dynlink/dynlink.$(A) \ 3060 - "$(INSTALL_LIBDIR_DYNLINK)" 3039 + $(call INSTALL_ITEMS, \ 3040 + $(dynlink_CMX_FILES) otherlibs/dynlink/dynlink.cmxa \ 3041 + otherlibs/dynlink/dynlink.$(A), \ 3042 + lib, $(INSTALL_LIBDIR_DYNLINK)) 3061 3043 endif 3062 3044 for i in $(OTHERLIBS); do \ 3063 3045 $(MAKE) -C otherlibs/$$i installopt || exit $$?; \ 3064 3046 done 3065 - $(INSTALL_DATA) \ 3066 - tools/profiling.cmx tools/profiling.$(O) \ 3067 - "$(INSTALL_LIBDIR_PROFILING)" 3047 + $(call INSTALL_ITEMS, tools/profiling.cmx tools/profiling.$(O), \ 3048 + lib, $(INSTALL_LIBDIR_PROFILING)) 3068 3049 3069 3050 .PHONY: full-installoptopt installopt installoptopt 3070 3051 full-installoptopt installopt installoptopt: 3071 - $(INSTALL_PROG) ocamlc.opt$(EXE) "$(INSTALL_BINDIR)" 3072 - $(INSTALL_PROG) ocamlopt.opt$(EXE) "$(INSTALL_BINDIR)" 3073 - $(INSTALL_PROG) lex/ocamllex.opt$(EXE) "$(INSTALL_BINDIR)" 3074 - cd "$(INSTALL_BINDIR)"; \ 3075 - $(LN) ocamlc.opt$(EXE) ocamlc$(EXE); \ 3076 - $(LN) ocamlopt.opt$(EXE) ocamlopt$(EXE); \ 3077 - $(LN) ocamllex.opt$(EXE) ocamllex$(EXE) 3052 + $(call INSTALL_ITEM, ocamlc.opt$(EXE), bin, , , ocamlc$(EXE)) 3053 + $(call INSTALL_ITEM, ocamlopt.opt$(EXE), bin, , , ocamlopt$(EXE)) 3054 + $(call INSTALL_ITEM, lex/ocamllex.opt$(EXE), bin, , , ocamllex$(EXE)) 3078 3055 ifeq "$(BOOTSTRAPPING_FLEXDLL)" "true" 3079 - $(INSTALL_PROG) flexlink.opt$(EXE) "$(INSTALL_BINDIR)" 3080 - cd "$(INSTALL_BINDIR)"; \ 3081 - $(LN) flexlink.opt$(EXE) flexlink$(EXE) 3056 + $(call INSTALL_ITEM, flexlink.opt$(EXE), bin, , , flexlink$(EXE)) 3082 3057 endif 3083 - $(INSTALL_DATA) \ 3084 - $(call COMPILER_ARTEFACT_DIRS, *.cmx, $(NATIVE_ARTEFACT_DIRS)) \ 3085 - toplevel/native/tophooks.cmi \ 3086 - "$(INSTALL_LIBDIR_COMPILERLIBS)" 3087 - $(INSTALL_DATA) \ 3088 - compilerlibs/*.cmxa compilerlibs/*.$(A) \ 3089 - "$(INSTALL_LIBDIR_COMPILERLIBS)" 3090 - $(INSTALL_DATA) \ 3091 - $(ocamlc_CMX_FILES:.cmx=.$(O)) \ 3092 - $(ocamlopt_CMX_FILES:.cmx=.$(O)) \ 3093 - $(ocamlnat_CMX_FILES:.cmx=.$(O)) \ 3094 - "$(INSTALL_LIBDIR_COMPILERLIBS)" 3058 + $(call INSTALL_ITEMS, \ 3059 + $(call COMPILER_ARTEFACT_DIRS, *.cmx, $(NATIVE_ARTEFACT_DIRS)) \ 3060 + toplevel/native/tophooks.cmi, \ 3061 + lib, $(INSTALL_LIBDIR_COMPILERLIBS)) 3062 + $(call INSTALL_ITEMS, compilerlibs/*.cmxa compilerlibs/*.$(A), \ 3063 + lib, $(INSTALL_LIBDIR_COMPILERLIBS)) 3064 + $(call INSTALL_ITEMS, \ 3065 + $(ocamlc_CMX_FILES:.cmx=.$(O)) \ 3066 + $(ocamlopt_CMX_FILES:.cmx=.$(O)) \ 3067 + $(ocamlnat_CMX_FILES:.cmx=.$(O)), \ 3068 + lib, $(INSTALL_LIBDIR_COMPILERLIBS)) 3095 3069 ifeq "$(INSTALL_OCAMLNAT)" "true" 3096 - $(INSTALL_PROG) ocamlnat$(EXE) "$(INSTALL_BINDIR)" 3070 + $(call INSTALL_ITEMS, ocamlnat$(EXE), bin) 3097 3071 endif 3098 3072 3099 3073 # Installation of the *.ml sources of compiler-libs 3100 3074 .PHONY: install-compiler-sources 3101 3075 install-compiler-sources: 3102 3076 ifeq "$(INSTALL_SOURCE_ARTIFACTS)" "true" 3103 - $(INSTALL_DATA) \ 3104 - $(call COMPILER_ARTEFACT_DIRS, *.ml, $(NATIVE_ARTEFACT_DIRS)) \ 3105 - toplevel/byte/*.ml \ 3106 - "$(INSTALL_LIBDIR_COMPILERLIBS)" 3077 + $(call INSTALL_ITEMS, \ 3078 + $(call COMPILER_ARTEFACT_DIRS, *.ml, $(NATIVE_ARTEFACT_DIRS)) \ 3079 + toplevel/byte/*.ml, \ 3080 + lib, $(INSTALL_LIBDIR_COMPILERLIBS)) 3107 3081 endif 3108 3082 3109 3083 include .depend
+114 -10
Makefile.common
··· 99 99 100 100 # Library subdirectories. The compiler distribution does make assumptions about 101 101 # these, and they cannot be freely overridden by the user. 102 - INSTALL_LIBDIR_CAML = $(INSTALL_LIBDIR)/caml 103 - INSTALL_LIBDIR_COMPILERLIBS = $(INSTALL_LIBDIR)/compiler-libs 104 - INSTALL_LIBDIR_DYNLINK = $(INSTALL_LIBDIR)/dynlink 105 - INSTALL_LIBDIR_FLEXDLL = $(INSTALL_LIBDIR)/flexdll 106 - INSTALL_LIBDIR_OCAMLDOC = $(INSTALL_LIBDIR)/ocamldoc 107 - INSTALL_LIBDIR_PROFILING = $(INSTALL_LIBDIR)/profiling 108 - INSTALL_LIBDIR_STDLIB = $(INSTALL_LIBDIR)/stdlib 109 - INSTALL_LIBDIR_SYSTHREADS = $(INSTALL_LIBDIR)/threads 102 + INSTALL_LIBDIR_CAML = caml 103 + INSTALL_LIBDIR_COMPILERLIBS = compiler-libs 104 + INSTALL_LIBDIR_DYNLINK = dynlink 105 + INSTALL_LIBDIR_FLEXDLL = flexdll 106 + INSTALL_LIBDIR_OCAMLDOC = ocamldoc 107 + INSTALL_LIBDIR_PROFILING = profiling 108 + INSTALL_LIBDIR_STDLIB = stdlib 109 + INSTALL_LIBDIR_SYSTHREADS = threads 110 + 111 + INSTALL_MANDIR_PROGRAMS = man1 112 + INSTALL_MANDIR_LIBRARIES = man3 113 + 114 + INSTALL_MODE ?= install 110 115 111 - INSTALL_MANDIR_PROGRAMS = $(INSTALL_MANDIR)/man1 112 - INSTALL_MANDIR_LIBRARIES = $(INSTALL_MANDIR)/man3 116 + # INSTALL_ITEM installs a single file, possibly with a different name and 117 + # possibly creating additional symlinks/copies 118 + # $1 = source file (may include directories) 119 + # $2 = section (bin, doc, lib, libexec, man, stublibs) 120 + # $3 = directory within section (may be empty) 121 + # $4 = target basename (may be empty) 122 + # $5 = additional basenames (either symlinked or copied, depending on what the 123 + # platform supports) 124 + # The $(origin n) dance is necessary to suppress warnings about undefined 125 + # variables. 126 + INSTALL_ITEM = \ 127 + $(INSTALL_$(INSTALL_MODE)_PREFIX)$(call INSTALL_ENSURE_DIR,$\ 128 + $(strip $(2)),$(if $(filter-out undefined,$(origin 3)),$(strip $(3))))$\ 129 + $(call INSTALL_DESPATCH_$(INSTALL_MODE)_ITEM,$\ 130 + $(strip $(1)),$\ 131 + $(strip $(2)),$\ 132 + $(if $(filter-out undefined,$(origin 3)),$(strip $(3))),$\ 133 + $(if $(filter-out undefined,$(origin 4)),$(strip $(4))),$\ 134 + $(if $(filter-out undefined,$(origin 5)),$(strip $(5)))) 135 + 136 + # INSTALL_ITEMS installs a series of files to a single directory 137 + # $1 = source file(s) (may include directories and glob patterns) 138 + # $2 = section (as for INSTALL_ITEM) 139 + # $3 = directory within section (may be omitted) 140 + # INSTALL_ITEMS is sometimes an alias for INSTALL_ITEM. For simplicity with 141 + # undefined variable warnings, INSTALL_DESPATCH_foo_ITEMS is passed 5 parameters 142 + # but $4 and $5 are always empty. 143 + INSTALL_ITEMS = \ 144 + $(INSTALL_$(INSTALL_MODE)_PREFIX)$(call INSTALL_ENSURE_DIR,$\ 145 + $(strip $(2)),$(if $(filter-out undefined,$(origin 3)),$(strip $(3))))$\ 146 + $(call INSTALL_DESPATCH_$(INSTALL_MODE)_ITEMS,$\ 147 + $(strip $(1)),$\ 148 + $(strip $(2)),$\ 149 + $(if $(filter-out undefined,$(origin 3)),$(strip $(3))),,) 150 + 151 + # INSTALL_ITEMS_OPT is INSTALL_ITEMS, but does nothing if the source file(s) do 152 + # not exist 153 + INSTALL_ITEMS_OPT = \ 154 + $(if $(wildcard $(1)),$(call INSTALL_ITEMS, \ 155 + $(1), $(2), $(if $(filter-out undefined,$(origin 3)), $(3)))) 156 + 157 + INSTALL_ENSURE_DIR = \ 158 + $(if $(filter undefined,$(origin DIR_CREATED_$(subst exec,,$(1))_$(2))),$\ 159 + $(eval DIR_CREATED_$(subst exec,,$(1))_$(2):=)$\ 160 + $(call INSTALL_DESPATCH_$(INSTALL_MODE)_MKDIR,$\ 161 + $(subst exec,,$(1)),$(2))) 162 + 163 + # INSTALL_RM takes a single argument which may include glob patterns of files to 164 + # be removed when performing a physical install. 165 + INSTALL_RM = $(call INSTALL_DESPATCH_$(INSTALL_MODE)_RM,$(strip $(1))) 166 + 167 + # INSTALL_BEGIN and INSTALL_END are used in the root Makefile's install target 168 + INSTALL_BEGIN = $(INSTALL_DESPATCH_$(INSTALL_MODE)_BEGIN) 169 + INSTALL_END = $(INSTALL_DESPATCH_$(INSTALL_MODE)_END) 170 + 171 + # Normal installation 172 + INSTALL_CMD_bin = $(INSTALL_PROG) 173 + INSTALL_CMD_doc = $(INSTALL_DATA) 174 + INSTALL_CMD_lib = $(INSTALL_DATA) 175 + INSTALL_CMD_libexec = $(INSTALL_PROG) 176 + INSTALL_CMD_man = $(INSTALL_DATA) 177 + INSTALL_CMD_stublibs = $(INSTALL_PROG) 178 + 179 + INSTALL_SECTION_bin = $(INSTALL_BINDIR) 180 + INSTALL_SECTION_doc = $(INSTALL_DOCDIR) 181 + INSTALL_SECTION_lib = $(INSTALL_LIBDIR) 182 + INSTALL_SECTION_libexec = $(INSTALL_LIBDIR) 183 + INSTALL_SECTION_man = $(INSTALL_MANDIR) 184 + INSTALL_SECTION_stublibs = $(INSTALL_STUBLIBDIR) 185 + 186 + QUOTE_SINGLE = '$(subst ','\'',$(1))' 187 + 188 + define NEWLINE 189 + 190 + 191 + endef 192 + SH_AND = && \$(NEWLINE) 193 + 194 + INSTALL_install_PREFIX = 195 + 196 + INSTALL_DESPATCH_install_RM = rm -f $(1) 197 + 198 + INSTALL_DESPATCH_install_MKDIR = \ 199 + $(MKDIR) $(call QUOTE_SINGLE,$(INSTALL_SECTION_$(1))$(addprefix /,$(2))) \ 200 + $(SH_AND) 201 + 202 + MK_LINK = \ 203 + (cd "$(INSTALL_SECTION_$(2))$(addprefix /,$(3))" && \ 204 + $(LN) $(call QUOTE_SINGLE,$(1)) $(call QUOTE_SINGLE,$(4))) 205 + 206 + INSTALL_DESPATCH_install_ITEM = \ 207 + $(INSTALL_CMD_$(2)) $(1) \ 208 + $(call QUOTE_SINGLE,$\ 209 + $(INSTALL_SECTION_$(2))$(addprefix /,$(3))$(addprefix /,$(4))) \ 210 + $(foreach link, $(5),$(SH_AND)$\ 211 + $(call MK_LINK,$(if $(4),$(4),$(notdir $(1))),$(2),$(3),$(link))) 212 + 213 + INSTALL_DESPATCH_install_ITEMS = $(INSTALL_DESPATCH_install_ITEM) 214 + 215 + INSTALL_DESPATCH_install_BEGIN = @ 216 + INSTALL_DESPATCH_install_END = @ 113 217 114 218 FLEXDLL_SUBMODULE_PRESENT := $(wildcard $(ROOTDIR)/flexdll/Makefile) 115 219
+1 -3
api_docgen/ocamldoc/Makefile
··· 122 122 123 123 .PHONY: install 124 124 install: 125 - $(MKDIR) "$(INSTALL_MANDIR_LIBRARIES)" 126 - $(if $(wildcard build/man), \ 127 - $(INSTALL_DATA) build/man/*.3o "$(INSTALL_MANDIR_LIBRARIES)") 125 + $(call INSTALL_ITEMS_OPT, build/man/*.3o, man, $(INSTALL_MANDIR_LIBRARIES))
+4 -5
api_docgen/odoc/Makefile
··· 192 192 # Man pages are the only installed documentation 193 193 .PHONY: install 194 194 install: 195 - $(MKDIR) "$(INSTALL_MANDIR_LIBRARIES)" 196 - $(if $(wildcard build/man/libref), \ 197 - $(INSTALL_DATA) build/man/libref/* "$(INSTALL_MANDIR_LIBRARIES)") 198 - $(if $(wildcard build/man/compilerlibref), \ 199 - $(INSTALL_DATA) build/man/libref/* "$(INSTALL_MANDIR_LIBRARIES)") 195 + $(call INSTALL_ITEMS_OPT, \ 196 + build/man/libref/*, man, $(INSTALL_MANDIR_LIBRARIES)) 197 + $(call INSTALL_ITEMS_OPT, \ 198 + build/man/compilerlibref/*, man, $(INSTALL_MANDIR_LIBRARIES)) 200 199 201 200 # Dependencies for stdlib modules. 202 201 # Use the same dependencies used for compiling .cmx files.
+1 -2
man/Makefile
··· 23 23 24 24 .PHONY: install 25 25 install: 26 - $(MKDIR) $(call QUOTE_SINGLE,$(INSTALL_MANDIR_PROGRAMS)) 27 - $(INSTALL_DATA) $(MANPAGES) $(call QUOTE_SINGLE,$(INSTALL_MANDIR_PROGRAMS)) 26 + $(call INSTALL_ITEMS, $(MANPAGES), man, $(INSTALL_MANDIR_PROGRAMS))
+16 -23
otherlibs/Makefile.otherlibs.common
··· 110 110 lib$(CLIBNAME_NATIVE).$(A): $(COBJS) 111 111 $(V_OCAMLMKLIB)$(MKLIB) -oc $(CLIBNAME_NATIVE) $(COBJS_NATIVE) $(LDOPTS) 112 112 113 - INSTALL_LIBDIR_LIBNAME = $(INSTALL_LIBDIR)/$(LIBNAME) 114 - 115 113 install:: 116 114 ifneq "$(STUBSLIB_BYTECODE)" "" 117 115 ifeq "$(SUPPORTS_SHARED_LIBRARIES)" "true" 118 - $(INSTALL_PROG) $(STUBSDLL) "$(INSTALL_STUBLIBDIR)" 116 + $(call INSTALL_ITEMS, $(STUBSDLL), stublibs) 119 117 endif 120 - $(INSTALL_DATA) $(STUBSLIB_BYTECODE) "$(INSTALL_LIBDIR)/" 118 + $(call INSTALL_ITEMS, $(STUBSLIB_BYTECODE), lib) 121 119 endif 122 120 # If installing over a previous OCaml version, ensure the library is removed 123 121 # from the previous installation. 124 - rm -f $(addprefix "$(INSTALL_LIBDIR)"/, \ 125 - $(LIBNAME).cma $(CMIFILES) \ 126 - $(CMIFILES:.cmi=.mli) $(CMIFILES:.cmi=.cmti) \ 127 - $(CAMLOBJS_NAT) $(LIBNAME).cmxa $(LIBNAME).cmxs $(LIBNAME).$(A)) 128 - $(MKDIR) "$(INSTALL_LIBDIR_LIBNAME)" 129 - $(INSTALL_DATA) \ 130 - $(LIBNAME).cma $(CMIFILES) META \ 131 - "$(INSTALL_LIBDIR_LIBNAME)/" 122 + $(call INSTALL_RM, \ 123 + $(addprefix "$(INSTALL_LIBDIR)"/, \ 124 + $(LIBNAME).cma $(CMIFILES) \ 125 + $(CMIFILES:.cmi=.mli) $(CMIFILES:.cmi=.cmti) \ 126 + $(CAMLOBJS_NAT) $(LIBNAME).cmxa $(LIBNAME).cmxs $(LIBNAME).$(A))) 127 + $(call INSTALL_ITEMS, $(LIBNAME).cma $(CMIFILES) META, lib, $(LIBNAME)) 132 128 ifeq "$(INSTALL_SOURCE_ARTIFACTS)" "true" 133 - $(INSTALL_DATA) \ 134 - $(CMIFILES:.cmi=.mli) \ 135 - $(CMIFILES:.cmi=.cmti) \ 136 - "$(INSTALL_LIBDIR_LIBNAME)/" 129 + $(call INSTALL_ITEMS, $(CMIFILES:.cmi=.mli) $(CMIFILES:.cmi=.cmti), \ 130 + lib, $(LIBNAME)) 137 131 endif 138 132 ifneq "$(HEADERS)" "" 139 - $(INSTALL_DATA) $(HEADERS) "$(INSTALL_LIBDIR_CAML)/" 133 + $(call INSTALL_ITEMS, $(HEADERS), lib, $(INSTALL_LIBDIR_CAML)) 140 134 endif 141 135 142 136 installopt: 143 - $(INSTALL_DATA) \ 144 - $(CAMLOBJS_NAT) $(LIBNAME).cmxa $(LIBNAME).$(A) \ 145 - "$(INSTALL_LIBDIR_LIBNAME)/" 137 + $(call INSTALL_ITEMS, \ 138 + $(CAMLOBJS_NAT) $(LIBNAME).cmxa $(LIBNAME).$(A), lib, $(LIBNAME)) 146 139 ifeq "$(SUPPORTS_SHARED_LIBRARIES)" "true" 147 - $(INSTALL_PROG) $(LIBNAME).cmxs "$(INSTALL_LIBDIR_LIBNAME)" 140 + $(call INSTALL_ITEMS, $(LIBNAME).cmxs, libexec, $(LIBNAME)) 148 141 ifeq "$(SUFFIXING)" "false" 149 - $(INSTALL_PROG) dll$(CLIBNAME_NATIVE)$(EXT_DLL) "$(INSTALL_STUBLIBDIR)" 142 + $(call INSTALL_ITEMS, dll$(CLIBNAME_NATIVE)$(EXT_DLL), stublibs) 150 143 endif 151 144 endif 152 145 ifneq "$(STUBSLIB_NATIVE)" "" 153 - $(INSTALL_DATA) $(STUBSLIB_NATIVE) "$(INSTALL_LIBDIR)/" 146 + $(call INSTALL_ITEMS, $(STUBSLIB_NATIVE), lib) 154 147 endif 155 148 156 149 partialclean:
+9 -15
otherlibs/systhreads/Makefile
··· 106 106 107 107 install: 108 108 ifeq "$(SUPPORTS_SHARED_LIBRARIES)" "true" 109 - $(INSTALL_PROG) $(DLLTHREADS) "$(INSTALL_STUBLIBDIR)" 109 + $(call INSTALL_ITEMS, $(DLLTHREADS), stublibs) 110 110 endif 111 - $(INSTALL_DATA) libthreads.$(A) "$(INSTALL_LIBDIR)" 112 - $(MKDIR) "$(INSTALL_LIBDIR_SYSTHREADS)" 113 - $(INSTALL_DATA) \ 114 - $(CMIFILES) threads.cma META \ 115 - "$(INSTALL_LIBDIR_SYSTHREADS)" 111 + $(call INSTALL_ITEMS, libthreads.$(A), lib) 112 + $(call INSTALL_ITEMS, $(CMIFILES) threads.cma META, lib, $(LIBNAME)) 116 113 ifeq "$(INSTALL_SOURCE_ARTIFACTS)" "true" 117 - $(INSTALL_DATA) \ 118 - $(CMIFILES:.cmi=.cmti) \ 119 - "$(INSTALL_LIBDIR_SYSTHREADS)" 120 - $(INSTALL_DATA) $(MLIFILES) "$(INSTALL_LIBDIR_SYSTHREADS)" 114 + $(call INSTALL_ITEMS, $(CMIFILES:.cmi=.cmti), lib, $(LIBNAME)) 115 + $(call INSTALL_ITEMS, $(MLIFILES), lib, $(LIBNAME)) 121 116 endif 122 - $(INSTALL_DATA) caml/threads.h "$(INSTALL_LIBDIR_CAML)" 117 + $(call INSTALL_ITEMS, caml/threads.h, lib, $(INSTALL_LIBDIR_CAML)) 123 118 124 119 installopt: 125 - $(INSTALL_DATA) libthreadsnat.$(A) "$(INSTALL_LIBDIR)" 126 - $(INSTALL_DATA) \ 127 - $(THREADS_NCOBJS) threads.cmxa threads.$(A) \ 128 - "$(INSTALL_LIBDIR_SYSTHREADS)" 120 + $(call INSTALL_ITEMS, libthreadsnat.$(A), lib) 121 + $(call INSTALL_ITEMS, $(THREADS_NCOBJS) threads.cmxa threads.$(A), \ 122 + lib, $(LIBNAME)) 129 123 130 124 %.cmi: %.mli 131 125 $(V_OCAMLC)$(CAMLC) -c $(COMPFLAGS) $<
+5 -11
stdlib/Makefile
··· 66 66 67 67 .PHONY: install 68 68 install:: 69 - $(INSTALL_DATA) \ 70 - stdlib.cma std_exit.cmo *.cmi "$(INSTALL_LIBDIR)" 71 - $(MKDIR) "$(INSTALL_LIBDIR_STDLIB)" 72 - $(INSTALL_DATA) META "$(INSTALL_LIBDIR_STDLIB)" 69 + $(call INSTALL_ITEMS, stdlib.cma std_exit.cmo *.cmi, lib) 70 + $(call INSTALL_ITEMS, META, lib, $(LIBNAME)) 73 71 ifeq "$(INSTALL_SOURCE_ARTIFACTS)" "true" 74 - $(INSTALL_DATA) \ 75 - *.cmt *.cmti *.mli *.ml *.ml.in \ 76 - "$(INSTALL_LIBDIR)" 72 + $(call INSTALL_ITEMS, *.cmt *.cmti *.mli *.ml *.ml.in, lib) 77 73 endif 78 - $(INSTALL_DATA) $(HEADER_NAME) "$(INSTALL_LIBDIR)/$(HEADER_NAME)" 74 + $(call INSTALL_ITEMS, $(HEADER_NAME), lib) 79 75 80 76 .PHONY: installopt 81 77 installopt: installopt-default 82 78 83 79 .PHONY: installopt-default 84 80 installopt-default: 85 - $(INSTALL_DATA) \ 86 - stdlib.cmxa stdlib.$(A) std_exit.$(O) *.cmx \ 87 - "$(INSTALL_LIBDIR)" 81 + $(call INSTALL_ITEMS, stdlib.cmxa stdlib.$(A) std_exit.$(O) *.cmx, lib) 88 82 89 83 MANGLING = $(filter true,$(SUFFIXING)) 90 84 runtime-launch-info: tmpheader.exe