Browse Source

add Makefile, move install part in Makefile

Johann 5 năm trước cách đây
mục cha
commit
f22f54357e
5 tập tin đã thay đổi với 153 bổ sung38 xóa
  1. 93 0
      Makefile
  2. 15 38
      lazpaint/release/debian/makedeb.sh
  3. 17 0
      winmake/copyfile.bat
  4. 14 0
      winmake/remove.bat
  5. 14 0
      winmake/removedir.bat

+ 93 - 0
Makefile

@@ -0,0 +1,93 @@
+prefix = /usr/local
+USER_DIR = $(DESTDIR)$(prefix)
+BIN_DIR = $(USER_DIR)/bin
+SHARE_DIR=$(USER_DIR)/share
+RESOURCE_DIR=$(SHARE_DIR)/lazpaint
+SOURCE_BIN_DIR=lazpaint/release/bin
+SOURCE_SCRIPT_DIR=resources/scripts
+SOURCE_DEBIAN_DIR=lazpaint/release/debian
+PO_FILES:=$(shell find "$(SOURCE_BIN_DIR)/i18n" -maxdepth 1 -type f -name *.po -printf "\"%f\" ")
+MODEL_FILES:=$(shell find "$(SOURCE_BIN_DIR)/models" -maxdepth 1 -type f -printf "\"%f\" ")
+SCRIPT_FILES:=$(shell find "$(SOURCE_SCRIPT_DIR)" -maxdepth 1 -type f -name *.py -printf "\"%f\" ")
+SCRIPT_RUNTIME_FILES:=$(shell find "$(SOURCE_SCRIPT_DIR)/lazpaint" -maxdepth 1 -type f -name *.py -printf "\"%f\" ")
+
+ifeq ($(OS),Windows_NT)     # true for Windows_NT or later
+  COPY := winmake\copyfile
+  REMOVE := winmake\remove
+  REMOVEDIR := winmake\removedir
+  THEN := &
+  RUN :=
+else
+  COPY := cp
+  REMOVE := rm -f
+  REMOVEDIR := rm -rf
+  THEN := ;
+  RUN := ./
+endif
+
+all: compile
+
+install: 
+ifeq ($(OS),Windows_NT)     # true for Windows_NT or later
+	echo Under Windows, use installation generated by InnoSetup with lazpaint/release/windows/lazpaint.iss
+else ifeq ($(shell uname),Linux)
+	install -D "$(SOURCE_BIN_DIR)/lazpaint" "$(BIN_DIR)/lazpaint"
+	for f in $(PO_FILES); do install -D "$(SOURCE_BIN_DIR)/i18n/$$f" "${RESOURCE_DIR}/i18n/$$f"; done
+	for f in $(MODEL_FILES); do install -D "$(SOURCE_BIN_DIR)/models/$$f" "${RESOURCE_DIR}/models/$$f"; done
+	for f in $(SCRIPT_FILES); do install -D "$(SOURCE_SCRIPT_DIR)/$$f" "${RESOURCE_DIR}/scripts/$$f"; done
+	for f in $(SCRIPT_RUNTIME_FILES); do install -D "$(SOURCE_SCRIPT_DIR)/lazpaint/$$f" "${RESOURCE_DIR}/scripts/lazpaint/$$f"; done
+	install -D "$(SOURCE_DEBIAN_DIR)/applications/lazpaint.desktop" "$(SHARE_DIR)/applications/lazpaint.desktop"
+	install -D "$(SOURCE_DEBIAN_DIR)/pixmaps/lazpaint.png" "$(SHARE_DIR)/pixmaps/lazpaint.png"
+	install -d "$(SHARE_DIR)/man/man1"
+	gzip -9 -n -c "$(SOURCE_DEBIAN_DIR)/man/man1/lazpaint.1" >"$(SHARE_DIR)/man/man1/lazpaint.1.gz"
+	chmod 0644 "$(SHARE_DIR)/man/man1/lazpaint.1.gz"
+else
+	echo Unhandled OS
+endif
+
+uninstall: 
+ifeq ($(OS),Windows_NT)     # true for Windows_NT or later
+	echo Under Windows, go to Add/Remove programs
+else ifeq ($(shell uname),Linux)
+	$(REMOVE) $(BIN_DIR)/lazpaint
+	$(REMOVEDIR) $(RESOURCE_DIR)
+	$(REMOVE) "$(SHARE_DIR)/applications/lazpaint.desktop"
+	$(REMOVE) "$(SHARE_DIR)/pixmaps/lazpaint.png"
+	$(REMOVE) "$(SHARE_DIR)/man/man1/lazpaint.1.gz"
+else
+	echo Unhandled OS
+endif
+
+clean: clean_lazpaintcontrols clean_vectoredit clean_lazpaint
+
+clean_lazpaintcontrols:
+	$(REMOVEDIR) "lazpaintcontrols/lib"
+	$(REMOVEDIR) "lazpaintcontrols/backup"
+
+clean_vectoredit:
+	$(REMOVEDIR) "vectoredit/lib"
+	$(REMOVEDIR) "vectoredit/backup"
+
+clean_lazpaint:
+	$(REMOVEDIR) "lazpaint/debug"
+	$(REMOVEDIR) "lazpaint/release/lib"
+	$(REMOVE) "lazpaint/release/bin/lazpaint"
+	$(REMOVE) "lazpaint/release/bin/lazpaint32.exe"
+	$(REMOVE) "lazpaint/release/bin/lazpaint_x64.exe"
+	$(REMOVEDIR) "lazpaint/backup"
+	$(REMOVEDIR) "lazpaint/dialog/backup"
+	$(REMOVEDIR) "lazpaint/image/backup"
+	$(REMOVEDIR) "lazpaint/tablet/backup"
+	$(REMOVEDIR) "lazpaint/test_embedded/backup"
+	$(REMOVEDIR) "lazpaint/tools/backup"
+
+compile: lazpaintcontrols vectoredit lazpaint
+lazbuild:
+	#lazbuild will determine what to recompile
+lazpaintcontrols: lazbuild lazpaintcontrols/lazpaintcontrols.lpk
+	lazbuild lazpaintcontrols/lazpaintcontrols.lpk
+vectoredit: lazbuild vectoredit/vectoredit.lpi
+	lazbuild vectoredit/vectoredit.lpi
+lazpaint: lazbuild lazpaint/lazpaint.lpi
+	lazbuild lazpaint/lazpaint.lpi
+

+ 15 - 38
lazpaint/release/debian/makedeb.sh

@@ -1,13 +1,12 @@
 #!/bin/bash
-STAGING_DIR="./staging"
+STAGING_RELATIVEDIR="./staging"
+STAGING_DIR=$(readlink --canonicalize "${STAGING_RELATIVEDIR}")
 USER_DIR="${STAGING_DIR}/usr"
-BIN_DIR="${STAGING_DIR}/usr/bin"
-SHARE_PARENT_DIR="${STAGING_DIR}/usr/share"
-SHARE_DIR="${STAGING_DIR}/usr/share/lazpaint"
-DOC_PARENT_DIR="${STAGING_DIR}/usr/share/doc"
-DOC_DIR="${STAGING_DIR}/usr/share/doc/lazpaint"
-SCRIPT_DIR="${SHARE_DIR}/scripts"
-SOURCE_SCRIPT_DIR="../../../resources/scripts"
+BIN_DIR="${USER_DIR}/bin"
+SHARE_DIR="${USER_DIR}/share"
+RESOURCE_DIR="${SHARE_DIR}/lazpaint"
+DOC_PARENT_DIR="${SHARE_DIR}/doc"
+DOC_DIR="${DOC_PARENT_DIR}/lazpaint"
 SOURCE_BIN="../bin"
 TARGET_ARCHITECTURE="$(dpkg --print-architecture)"
 VERSION="$(sed -n 's/^Version: //p' debian/control)"
@@ -33,15 +32,14 @@ echo "Creating package..."
 
 rm -rf "${STAGING_DIR}"
 mkdir "${STAGING_DIR}"
+pushd ../../..
+make install prefix=/usr "DESTDIR=$STAGING_DIR"
+popd
 
 mkdir "${STAGING_DIR}/DEBIAN"
 cp "debian/control" "${STAGING_DIR}/DEBIAN"
 sed -i -e "s/Architecture: any/Architecture: ${TARGET_ARCHITECTURE}/" "${STAGING_DIR}/DEBIAN/control"
 
-mkdir "${USER_DIR}"
-
-mkdir "${BIN_DIR}" 
-cp "${SOURCE_BIN}/lazpaint" "${BIN_DIR}"
 echo "Determining dependencies..."
 dpkg-shlibdeps "${BIN_DIR}/lazpaint"
 DEPENDENCIES="$(sed -n 's/^shlibs:Depends=//p' debian/substvars)"
@@ -49,32 +47,12 @@ sed -i -e "s/\\\${shlibs:Depends}/${DEPENDENCIES}/" "${STAGING_DIR}/DEBIAN/contr
 rm "debian/substvars"
 echo "Done determining dependencies."
 
-mkdir "${SHARE_PARENT_DIR}"
-
 mkdir "${DOC_PARENT_DIR}"
 mkdir "${DOC_DIR}"
 gzip -9 -n -c "debian/changelog" >"${DOC_DIR}/changelog.gz"
 cp "debian/copyright" "${DOC_DIR}"
 cp "${SOURCE_BIN}/readme.txt" "${DOC_DIR}/README"
 
-cp -r applications "${SHARE_PARENT_DIR}"
-cp -r pixmaps "${SHARE_PARENT_DIR}"
-cp -r "man" "${SHARE_PARENT_DIR}" 
-gzip -9 -n "${SHARE_PARENT_DIR}/man/man1/lazpaint.1" 
-
-mkdir "${SHARE_DIR}"
-cp "${SOURCE_BIN}/lazpaint_simplified.ini" "${SHARE_DIR}"
-
-mkdir "${SHARE_DIR}/i18n"
-find "${SOURCE_BIN}/i18n" -maxdepth 1 -name *.po -exec cp {} "${SHARE_DIR}/i18n" \;
-
-cp -r "${SOURCE_BIN}/models" "${SHARE_DIR}/models"
-
-mkdir "${SCRIPT_DIR}"
-find "${SOURCE_SCRIPT_DIR}" -maxdepth 1 -name *.py -exec cp {} "${SCRIPT_DIR}" \;
-mkdir "${SCRIPT_DIR}/lazpaint" 
-find "${SOURCE_SCRIPT_DIR}/lazpaint" -maxdepth 1 -name *.py -exec cp {} "${SCRIPT_DIR}/lazpaint" \;
-
 SIZE_IN_KB="$(du -s ${STAGING_DIR} | awk '{print $1;}')"
 echo "Installed-Size: ${SIZE_IN_KB}" >> "${STAGING_DIR}/DEBIAN/control"
 find "${STAGING_DIR}" -type d -exec chmod 0755 {} \;
@@ -86,12 +64,11 @@ fakeroot dpkg-deb --build "${STAGING_DIR}" "${PACKAGE_NAME}.deb"
 NO_INSTALL_ARCHIVE="${PACKAGE_NAME}_no_install.tar.gz"
 
 echo "Making ${NO_INSTALL_ARCHIVE}..."
-mv "${BIN_DIR}/lazpaint" "${SHARE_DIR}/lazpaint"
-mv "${DOC_DIR}/copyright" "${SHARE_DIR}/copyright"
-mv "${DOC_DIR}/README" "${SHARE_DIR}/README"
-cd "$SHARE_DIR"
-cd ..
+mv "${BIN_DIR}/lazpaint" "${RESOURCE_DIR}/lazpaint"
+mv "${DOC_DIR}/copyright" "${RESOURCE_DIR}/copyright"
+mv "${DOC_DIR}/README" "${RESOURCE_DIR}/README"
+pushd ${SHARE_DIR}
 tar -czf "../../../${NO_INSTALL_ARCHIVE}" "lazpaint"
-cd ../../..
+popd
 rm -rf "${STAGING_DIR}"
 

+ 17 - 0
winmake/copyfile.bat

@@ -0,0 +1,17 @@
+@echo off
+if "%~1" == "" goto argument
+if "%~2" == "" goto argument
+setlocal
+set FILENAME=%1
+set FILENAME=%FILENAME:/=\%
+set DESTINATION=%2
+set DESTINATION=%DESTINATION:/=\%
+copy /y %FILENAME% %DESTINATION%
+exit /b 0
+
+:argument
+echo Copies a file to the specified destination.
+echo Usage: copyfile [FILENAME] [DESTINATION]
+exit /b 1
+
+

+ 14 - 0
winmake/remove.bat

@@ -0,0 +1,14 @@
+@echo off
+if "%~1" == "" goto argument
+setlocal
+set FILENAME=%1
+set FILENAME=%FILENAME:/=\%
+if exist %FILENAME% del /f /q %FILENAME%
+exit /b 0
+
+:argument
+echo Removes a file if it exists.
+echo Usage: remove [FILENAME]
+exit /b 1
+
+

+ 14 - 0
winmake/removedir.bat

@@ -0,0 +1,14 @@
+@echo off
+if "%~1" == "" goto argument
+setlocal
+set DIRNAME=%1
+set DIRNAME=%DIRNAME:/=\%
+if exist %DIRNAME% rd /s /q %DIRNAME%
+exit /b 0
+
+:argument
+echo Removes a directory and all its content if it exists.
+echo Usage: removedir [DIRNAME]
+exit /b 1
+
+