Mercurial > mxe-octave
view binary-dist-rules.mk @ 5572:3588be46d1d9
don't use LLVM_BUILD_LLVM_DYLIB or LLVM_LINK_LLVM_DYLIB for Windows builds
* llvm.mk: The LLVM_BUILD_LLVM_DYLIB and LLVM_LINK_LLVM_DYLIB options
are documented to be unsupported for Windows builds of LLVM. Without
these options, the Windows build still creates an LLVM.dll file, but
also creates .a files for the components. Update comments.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 30 Oct 2020 10:11:58 -0400 |
parents | b54b1a7533ac |
children | 6805ab42c8aa |
line wrap: on
line source
ifeq ($(MXE_WINDOWS_BUILD),yes) ifeq ($(ENABLE_WINDOWS_64),yes) ifeq ($(ENABLE_FORTRAN_INT64),yes) OCTAVE_PLATFORM_SUFFIX := -w64-64 else OCTAVE_PLATFORM_SUFFIX := -w64 endif else OCTAVE_PLATFORM_SUFFIX := -w32 endif endif ifeq ($(OCTAVE_TARGET),release-octave) OCTAVE_DIST_NAME := octave-$($(OCTAVE_TARGET)_VERSION)$(OCTAVE_PLATFORM_SUFFIX) else OCTAVE_DIST_NAME := octave-$(DATE)$(OCTAVE_PLATFORM_SUFFIX) endif OCTAVE_DIST_DIR := $(TOP_BUILD_DIR)/dist/$(OCTAVE_DIST_NAME) OCTAVE_NSI_FILE := $(TOP_BUILD_DIR)/dist/octave.nsi OCTAVE_ADD_PATH := / ifeq ($(MXE_WINDOWS_BUILD),yes) TAR_H_OPTION := -h WINDOWS_BINARY_DIST_DEPS := \ win7appid blas_switch ifeq ($(USE_MSYS2),yes) WINDOWS_BINARY_DIST_DEPS += \ msys2 \ msys2-sources ifeq ($(ENABLE_WINDOWS_64),yes) OCTAVE_ADD_PATH := /mingw64 else OCTAVE_ADD_PATH := /mingw32 endif else WINDOWS_BINARY_DIST_DEPS += \ msys-base \ msys-base-sources endif ifeq ($(MXE_NATIVE_BUILD),no) WINDOWS_BINARY_DIST_DEPS += \ native-binutils \ native-gcc \ npp endif # other packages we want to include WINDOWS_BINARY_DIST_DEPS += \ biosig endif BINARY_DIST_DEPS := \ $(OCTAVE_TARGET) \ blas-packages \ octave-forge-packages \ devel-packages \ units \ transfig \ $(WINDOWS_BINARY_DIST_DEPS) define delete-dist-directory echo "deleting previous dist directory..." rm -rf $(TOP_BUILD_DIR)/dist endef define make-dist-directory echo "creating dist directory..." mkdir -p $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH) endef define copy-dist-files echo "copying files..." echo " octave and dependencies..." cd $(HOST_PREFIX) \ && tar -c $(TAR_H_OPTION) -f - . | ( cd $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH) ; tar xpf - ) echo " octaverc file..." cp $(TOP_DIR)/octaverc $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/share/octave/site/m/startup/octaverc if [ $(ENABLE_BINARY_PACKAGES) = no ]; then \ echo " build_packages.m..."; \ cp $(TOP_DIR)/build_packages.m $(OCTAVE_DIST_DIR)/src; \ fi endef ifeq ($(MXE_WINDOWS_BUILD),yes) ifeq ($(MXE_NATIVE_BUILD),no) define copy-windows-dist-files echo " DLL files..." cp $(BUILD_TOOLS_PREFIX)/lib/gcc/$(TARGET)/*.dll $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin cp $(BUILD_TOOLS_PREFIX)/lib/gcc/$(TARGET)/*.dll $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin cp $(BUILD_TOOLS_PREFIX)/lib/gcc/$(TARGET)/$(build-gcc_VERSION)/*.dll $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin if [ "$(USE_MSYS2)" = "yes" ]; then \ echo " msys2 files..."; \ cd $(TOP_BUILD_DIR)/msys2 \ && tar -c $(TAR_H_OPTION) -f - . | ( cd $(OCTAVE_DIST_DIR) ; tar xpf - ); \ else \ echo " msys base files..."; \ cd $(TOP_BUILD_DIR)/msys-base \ && tar -c $(TAR_H_OPTION) -f - . | ( cd $(OCTAVE_DIST_DIR) ; tar xpf - ); \ echo " msys extension files..."; \ cd $(TOP_BUILD_DIR)/msys-extension \ && tar -c $(TAR_H_OPTION) -f - . | ( cd $(OCTAVE_DIST_DIR) ; tar xpf - ); \ fi echo " notepad++..." cd $(TOP_BUILD_DIR) \ && tar -c $(TAR_H_OPTION) -f - notepad++ | ( cd $(OCTAVE_DIST_DIR) ; tar xpf - ) echo " README.html..." cp $(TOP_DIR)/installer-files/README.html $(OCTAVE_DIST_DIR)/ echo " refblas..." cp $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin/libblas.dll $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin/librefblas.dll echo " octave.vbs..." cp $(TOP_DIR)/installer-files/octave.vbs $(OCTAVE_DIST_DIR)/ cp $(TOP_DIR)/installer-files/octave-firsttime.vbs $(OCTAVE_DIST_DIR)/ cp $(TOP_DIR)/installer-files/fc_update.bat $(OCTAVE_DIST_DIR)/ cp $(TOP_DIR)/installer-files/post-install.bat $(OCTAVE_DIST_DIR)/ cp $(TOP_BUILD_DIR)/HG-ID $(OCTAVE_DIST_DIR)/ echo " updating octave .exe to script files..." rm -f $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin/octave.exe rm -f $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin/octave-$($(OCTAVE_TARGET)_VERSION).exe cp $(TOP_DIR)/installer-files/octave.bat $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin/octave.bat cp $(TOP_DIR)/installer-files/octave.bat $(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin/octave-$($(OCTAVE_TARGET)_VERSION).bat echo " updating libtool references..." find '$(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/' -type f -name "*.la" \ -exec $(SED) -i 's|$(HOST_PREFIX)|/usr|g;s|$(BUILD_TOOLS_PREFIX)|/usr|g' {} \; ; echo " updating pkg-config .pc references..." find '$(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/lib/pkgconfig' -type f -name "*.pc" \ -exec $(SED) -i 's|$(HOST_PREFIX)|/usr|g;s|$(BUILD_TOOLS_PREFIX)|/usr|g' {} \; ; if [ "$(ENABLE_DEVEL_TOOLS)" = "yes" ]; then \ cp $(TOP_DIR)/installer-files/cmdshell.bat $(OCTAVE_DIST_DIR)/; \ fi echo " updating script tool references..." #find '$(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin' -type f ! -name "*.*" \ # -exec $(SED) -i 's|$(HOST_PREFIX)|/$(OCTAVE_ADD_PATH)|g;s|$(BUILD_TOOLS_PREFIX)|/$(OCTAVE_ADD_PATH)|g' {} \; ; find '$(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin' -type f ! -name "*.*" \ -exec sh -c 'test `head -c2 {}` = "#!" && $(SED) -i "s|$(HOST_PREFIX)|$(OCTAVE_ADD_PATH)|g;s|$(BUILD_TOOLS_PREFIX)|$(OCTAVE_ADD_PATH)|g" {}' \; ; # some additional script files to fix $(SED) -i "s|datadir = '/usr/share'|datadir = '$(OCTAVE_ADD_PATH)/share'|g" '$(OCTAVE_DIST_DIR)$(OCTAVE_ADD_PATH)/bin/makeinfo' endef else define copy-windows-dist-files echo " DLL files..." cp /mingw/bin/*.dll $(OCTAVE_DIST_DIR)/bin echo " README.html..." cp $(TOP_DIR)/installer-files/README.html $(OCTAVE_DIST_DIR)/ echo " refblas..." cp $(OCTAVE_DIST_DIR)/bin/libblas.dll $(OCTAVE_DIST_DIR)/bin/librefblas.dll echo " octave.vbs..." cp $(TOP_DIR)/installer-files/octave.vbs $(OCTAVE_DIST_DIR)/ cp $(TOP_DIR)/installer-files/octave-firsttime.vbs $(OCTAVE_DIST_DIR)/ cp $(TOP_DIR)/installer-files/fc_update.bat $(OCTAVE_DIST_DIR)/ cp $(TOP_DIR)/installer-files/post-install.bat $(OCTAVE_DIST_DIR)/ echo " updating octave .exe to script files..." rm -f $(OCTAVE_DIST_DIR)/bin/octave.exe rm -f $(OCTAVE_DIST_DIR)/bin/octave-$($(OCTAVE_TARGET)_VERSION).exe cp $(TOP_DIR)/installer-files/octave.bat $(OCTAVE_DIST_DIR)/bin/octave.bat cp $(TOP_DIR)/installer-files/octave.bat $(OCTAVE_DIST_DIR)/bin/octave-$($(OCTAVE_TARGET)_VERSION).bat endef endif endif define make-dist-files-writable echo "making all dist files writable by user..." chmod -R u+w $(OCTAVE_DIST_DIR) endef ifeq ($(STRIP_DIST_FILES),yes) ifeq ($(MXE_WINDOWS_BUILD),yes) define strip-dist-files echo "stripping files..." for f in `find $(OCTAVE_DIST_DIR) -name '*.dll' -o -name '*.exe' -o -name '*.oct' | $(GREP) -v "notepad++" | $(GREP) -v "msys-2.0.dll"`; do \ if [ "$$(head -n1 $$f | cut -c1-2)" != "#!" ]; then \ $(MXE_STRIP) $$f; \ fi; \ done endef else define strip-dist-files echo "stripping files..." for f in `find $(OCTAVE_DIST_DIR) -type f -a -perm /a+x`; do \ case "`file $$f`" in \ *script*) \ ;; \ *executable* | *archive* | *"shared object"*) \ $(MXE_STRIP) $$f; \ ;; \ esac; \ done endef endif else define strip-dist-files echo "not stripping files..." endef endif OCTAVE_WRAPPER_SCRIPTS = octave octave-cli octave-config ifeq ($(MXE_SYSTEM), gnu-linux) define install-octave-wrapper-scripts echo "installing octave wrapper scripts..." for f in $(OCTAVE_WRAPPER_SCRIPTS); do \ mv $(OCTAVE_DIST_DIR)/bin/$$f-$($(OCTAVE_TARGET)_VERSION) \ $(OCTAVE_DIST_DIR)/bin/$$f-$($(OCTAVE_TARGET)_VERSION).real; \ $(SED) < $(TOP_DIR)/octave-wrapper.in \ -e "s|@GCC_VERSION@|$(native-gcc_VERSION)|" \ -e "s|@GCC_ARCH@|$(TARGET)|" \ -e "s|@OCTAVE_VERSION@|$($(OCTAVE_TARGET)_VERSION)|" \ -e "s|@GNUPLOT_MAJOR_MINOR_VERSION@|$(shell echo $(gnuplot_VERSION) | $(SED) -e 's/\(^[0-9][0-9]*\.[0-9][0-9]*\)\..*/\1/')|" \ -e "s|@PROGRAM_NAME@|$$f|" > $$f-t \ && $(INSTALL) -m 755 $$f-t $(OCTAVE_DIST_DIR)/bin/$$f-$($(OCTAVE_TARGET)_VERSION); \ rm -f $(OCTAVE_DIST_DIR)/bin/$$f; \ ln -s $$f-$($(OCTAVE_TARGET)_VERSION) $(OCTAVE_DIST_DIR)/bin/$$f; \ done endef else define install-octave-wrapper-scripts echo "no octave wrapper scripts to install for this system..." endef endif .PHONY: binary-dist-files binary-dist-files: $(BINARY_DIST_DEPS) @$(delete-dist-directory) @$(make-dist-directory) @$(copy-dist-files) @$(copy-windows-dist-files) @$(make-dist-files-writable) @$(strip-dist-files) @$(install-octave-wrapper-scripts) define make-installer-file if [ -f $(OCTAVE_NSI_FILE) ]; then \ echo "deleting previous installer script..."; \ rm -f $(OCTAVE_NSI_FILE); \ fi echo "generating installer script..." $(TOP_BUILD_DIR)/tools/makeinst-script.sh $(OCTAVE_DIST_DIR) $(OCTAVE_DIST_NAME)-installer.exe $(OCTAVE_NSI_FILE) echo "generating installer..." $(TARGET)-makensis $(OCTAVE_NSI_FILE) > $(TOP_BUILD_DIR)/dist/nsis.log endef $(OCTAVE_DIST_NAME)-installer.exe: nsis binary-dist-files @$(make-installer-file) .PHONY: nsis-installer nsis-installer: $(OCTAVE_DIST_NAME)-installer.exe define make-7z-dist echo "generating 7z file..." cd $(TOP_BUILD_DIR)/dist && p7zip -k $(OCTAVE_DIST_NAME) endef .PHONY: 7z-dist 7z-dist: binary-dist-files @$(make-7z-dist) define make-zip-dist echo "generating zip file..." cd $(TOP_BUILD_DIR)/dist \ && zip -q -9 -r $(OCTAVE_DIST_NAME).zip $(OCTAVE_DIST_NAME) endef .PHONY: zip-dist zip-dist: binary-dist-files @$(make-zip-dist) define make-tar-dist echo "generating tar file..." cd $(TOP_BUILD_DIR)/dist \ && tar -c -z -f $(OCTAVE_DIST_NAME).tgz $(OCTAVE_DIST_NAME) endef .PHONY: tar-dist tar-dist: binary-dist-files @$(make-tar-dist)