diff --git a/Makefile b/Makefile index d18e4c0e..132bd11a 100644 --- a/Makefile +++ b/Makefile @@ -329,10 +329,13 @@ define CHECK_REQUIREMENT_VERSION fi endef -$(shell [ -d '$(PREFIX)/installed' ] || mkdir -p '$(PREFIX)/installed') + +%/.gitkeep: + +@mkdir -p '$(dir $@)' + @touch '$@' check-requirements: $(PREFIX)/installed/check-requirements -$(PREFIX)/installed/check-requirements: $(MAKEFILE) +$(PREFIX)/installed/check-requirements: $(MAKEFILE) | $(PREFIX)/installed/.gitkeep @echo '[check requirements]' $(foreach REQUIREMENT,$(REQUIREMENTS),$(call CHECK_REQUIREMENT,$(REQUIREMENT))) $(call CHECK_REQUIREMENT_VERSION,autoconf,2\.6[8-9]\|2\.[7-9][0-9]) @@ -349,7 +352,7 @@ $(PREFIX)/installed/check-requirements: $(MAKEFILE) .PHONY: print-git-oneline print-git-oneline: $(PREFIX)/installed/print-git-oneline-$(GIT_HEAD) -$(PREFIX)/installed/print-git-oneline-$(GIT_HEAD): +$(PREFIX)/installed/print-git-oneline-$(GIT_HEAD): | $(PREFIX)/installed/.gitkeep @git log --pretty=tformat:'[git-log] %h %s' -1 | cat @rm -f '$(PREFIX)/installed/print-git-oneline-'* @touch '$@' @@ -449,9 +452,7 @@ else NONET_CFLAGS := -arch i386 -arch x86_64 endif -$(shell [ -d '$(PREFIX)/$(BUILD)/lib' ] || mkdir -p '$(PREFIX)/$(BUILD)/lib') - -$(NONET_LIB): $(TOP_DIR)/tools/nonetwork.c +$(NONET_LIB): $(TOP_DIR)/tools/nonetwork.c | $(PREFIX)/$(BUILD)/lib/.gitkeep @echo '[build nonetwork lib]' @$(BUILD_CC) -shared -fPIC $(NONET_CFLAGS) -o $@ $< @@ -467,6 +468,7 @@ $(PREFIX)/$(3)/installed/$(1): $(PKG_MAKEFILES) \ $(if $(value $(call LOOKUP_PKG_RULE,$(1),URL,$(3))),download-only-$(1)) \ $(addprefix $(PREFIX)/$(3)/installed/,$(if $(call set_is_not_member,$(1),$(MXE_CONF_PKGS)),$(MXE_CONF_PKGS))) \ $(NONET_LIB) \ + $(PREFIX)/$(3)/installed/.gitkeep \ print-git-oneline @[ -d '$(LOG_DIR)/$(TIMESTAMP)' ] || mkdir -p '$(LOG_DIR)/$(TIMESTAMP)' $(if $(value $(call LOOKUP_PKG_RULE,$(1),BUILD,$(3))), @@ -529,7 +531,6 @@ build-only-$(1)_$(3): touch '$(PREFIX)/$(3)/installed/$(1)' endef $(foreach TARGET,$(MXE_TARGETS), \ - $(shell [ -d '$(PREFIX)/$(TARGET)/installed' ] || mkdir -p '$(PREFIX)/$(TARGET)/installed') \ $(foreach PKG,$($(TARGET)_PKGS), \ $(eval $(call PKG_TARGET_RULE,$(PKG),$(call TMP_DIR,$(PKG)-$(TARGET)),$(TARGET))))) @@ -615,6 +616,7 @@ BUILD_PKG_TMP_FILES := *-*.list mxe-*.tar.xz mxe-*.deb* wheezy jessie .PHONY: clean clean: + -chmod 0755 "$$WINEPREFIX" rm -rf $(call TMP_DIR,*) $(PREFIX) \ $(addprefix $(TOP_DIR)/, $(BUILD_PKG_TMP_FILES)) diff --git a/src/mxe-conf.mk b/src/mxe-conf.mk index 89ce4fbb..11e49d8b 100644 --- a/src/mxe-conf.mk +++ b/src/mxe-conf.mk @@ -7,15 +7,20 @@ $(PKG)_UPDATE := echo 1 $(PKG)_TARGETS := $(BUILD) $(MXE_TARGETS) define $(PKG)_BUILD + # create basic non-empty directory hierarchy + for d in bin include lib share; do \ + mkdir -p "$(PREFIX)/$(TARGET)/$$d" && \ + touch "$(PREFIX)/$(TARGET)/$$d/.gitkeep" ; \ + done + # install target-specific autotools config file - $(INSTALL) -d '$(PREFIX)/$(TARGET)/share' # setting ac_cv_build bypasses the config.guess check in every package echo "ac_cv_build=$(BUILD)" > '$(PREFIX)/$(TARGET)/share/config.site' # create the CMake toolchain file # individual packages (e.g. hdf5) should add their # own files under CMAKE_TOOLCHAIN_DIR - [ -d '$(CMAKE_TOOLCHAIN_DIR)' ] || mkdir -p '$(CMAKE_TOOLCHAIN_DIR)' + mkdir -p '$(CMAKE_TOOLCHAIN_DIR)' touch '$(CMAKE_TOOLCHAIN_DIR)/.gitkeep' (echo 'set(CMAKE_SYSTEM_NAME Windows)'; \ echo 'set(MSYS 1)'; \ @@ -67,7 +72,7 @@ define $(PKG)_BUILD chmod 0755 '$(PREFIX)/bin/$(TARGET)-cmake' # create pkg-config files for OpenGL/GLU - $(INSTALL) -d '$(PREFIX)/$(TARGET)/lib/pkgconfig' + mkdir -p '$(PREFIX)/$(TARGET)/lib/pkgconfig' (echo 'Name: gl'; \ echo 'Version: 0'; \ echo 'Description: OpenGL'; \ @@ -83,11 +88,11 @@ endef define $(PKG)_BUILD_$(BUILD) # install config.guess for general use - $(INSTALL) -d '$(PREFIX)/bin' + mkdir -p '$(PREFIX)/bin' $(INSTALL) -m755 '$(EXT_DIR)/config.guess' '$(PREFIX)/bin/' # install cmake modules - $(INSTALL) -d '$(PREFIX)/share/cmake/modules' + mkdir -p '$(PREFIX)/share/cmake/modules' $(INSTALL) -m644 '$(PWD)/src/cmake/modules/'* '$(PREFIX)/share/cmake/modules' # fail early if autotools can't autoreconf @@ -103,7 +108,9 @@ define $(PKG)_BUILD_$(BUILD) cd '$(1)' && ./configure #create readonly directory to force wine to fail - $(INSTALL) -m444 -d "$$WINEPREFIX" + mkdir -p "$$WINEPREFIX" + touch "$$WINEPREFIX/.gitkeep" + chmod 0555 "$$WINEPREFIX" #create script "wine" in a directory which is in PATH mkdir -p '$(PREFIX)/$(BUILD)/bin/'