diff --git a/build/makefile_base.mak b/build/makefile_base.mak index 66fa33ea..87252228 100644 --- a/build/makefile_base.mak +++ b/build/makefile_base.mak @@ -39,6 +39,7 @@ include $(SRC)/make/utility.mk include $(SRC)/make/rules-source.mk include $(SRC)/make/rules-common.mk include $(SRC)/make/rules-meson.mk +include $(SRC)/make/rules-cmake.mk # If CC is coming from make's defaults or nowhere, use our own default. Otherwise respect environment. ifeq ($(ENABLE_CCACHE),1) diff --git a/make/rules-cmake.mk b/make/rules-cmake.mk new file mode 100644 index 00000000..4c61951f --- /dev/null +++ b/make/rules-cmake.mk @@ -0,0 +1,34 @@ +# parameters: +# $(1): lowercase package name +# $(2): uppercase package name +# $(3): 32/64, build type +# +define create-rules-cmake +$(call create-rules-common,$(1),$(2),$(3)) + +ifeq ($(CONTAINER),1) +$$(OBJ)/.$(1)-configure$(3): $$($(2)_SRC)/CMakeLists.txt + @echo ":: configuring $(3)bit $(1)..." >&2 + rm -rf "$$($(2)_OBJ$(3))/CMakeCache.txt" + + cd "$$($(2)_OBJ$(3))" && env $$($(2)_ENV$(3)) \ + cmake "$$($(2)_SRC)" \ + -DCMAKE_INSTALL_PREFIX="$$($(2)_DST$(3))" \ + -DCMAKE_INSTALL_LIBDIR="lib$(subst 32,,$(3))" \ + -DCMAKE_BUILD_TYPE=plain \ + $$($(2)_CMAKE_ARGS) \ + $$($(2)_CMAKE_ARGS$(3)) + + touch $$@ + +$$(OBJ)/.$(1)-build$(3): + @echo ":: building $(3)bit $(1)..." >&2 + cd "$$($(2)_OBJ$(3))" && env $$($(2)_ENV$(3)) \ + $$(MAKE) + cd "$$($(2)_OBJ$(3))" && env $$($(2)_ENV$(3)) \ + $$(MAKE) install + touch $$@ +endif +endef + +rules-cmake = $(call create-rules-cmake,$(1),$(call toupper,$(1)),$(2))