Skip to content

Commit 9c79956

Browse files
committed
update to version 0.2
1 parent 2117dad commit 9c79956

3 files changed

Lines changed: 99 additions & 42 deletions

File tree

Makefile

Lines changed: 83 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
1-
.PHONY: clean all desktop osx linux pi windows current install run preosx prelinux prepi prewindows
1+
.PHONY: clean all desktop posix osx linux pi windows win32 win64 local install install-only run docker xclean
22

33
# needs to be defined before include
4-
default:current
4+
default:local
55

66
include config.mk
77

8-
DEST:=~/Works/System/arch
8+
DEST:=~/Works/System/bin/arch
99

10-
ALLNIMOPTS=-d:release -d:VERSION=$(VERSION) --opt:size $(NIMOPTS)
10+
ifeq ($(DEBUG),true)
11+
BASENIMOPTS=-d:VERSION=$(VERSION) --opt:size $(NIMOPTS)
12+
else
13+
ifeq ($(DEBUG),full)
14+
BASENIMOPTS=-d:VERSION=$(VERSION) --debuginfo --linedir:on $(NIMOPTS)
15+
else
16+
BASENIMOPTS=-d:release -d:VERSION=$(VERSION) --opt:size $(NIMOPTS)
17+
endif
18+
endif
1119

1220
ifeq ($(EXECNAME),)
1321
EXECNAME:=$(NAME)
@@ -25,8 +33,15 @@ ifeq ($(WINAPP),)
2533
WINAPP:=console
2634
endif
2735

36+
ifeq ($(ALLTARGETS),)
37+
ALLTARGETS:=desktop pi
38+
endif
39+
2840
ifneq ($(NIMBLE),)
29-
NIMBLE:=nimble -y install $(NIMBLE);
41+
NIMBLE:=nimble refresh ; nimble -y install $(NIMBLE);
42+
DOCKERNAME:=teras/nimcross:${NAME}
43+
else
44+
DOCKERNAME:=teras/nimcross
3045
endif
3146

3247
ifneq ($(NIMVER),)
@@ -35,68 +50,97 @@ endif
3550

3651
DOCOMPRESS:=$(shell echo $(COMPRESS) | tr A-Z a-z | cut -c1-1)
3752

38-
BUILDDEP:=$(wildcard *.nim *.c Makefile config.mk)
53+
BUILDDEP:=$(wildcard *.nim *.c *.m Makefile config.mk)
3954

40-
current:target/${EXECNAME}
4155

42-
all:desktop pi
56+
initlocal:
57+
${NIMVER} ${NIMBLE}
58+
59+
local:target/${EXECNAME}
60+
61+
all:$(ALLTARGETS)
4362

4463
desktop:osx linux windows
4564

46-
pi:target/${EXECNAME}.arm64.linux
65+
posix:osx linux pi
66+
67+
pi:target/${EXECNAME}.aarch64.linux
4768

4869
osx:target/${EXECNAME}.osx
4970

5071
linux:target/${EXECNAME}.linux
5172

52-
windows:target/${EXECNAME}.64.exe
73+
windows:win32 win64
5374

54-
clean:
55-
rm -rf target nimcache ${NAME} ${NAME}.exe
75+
win32:target/${EXECNAME}.32.exe
76+
77+
win64:target/${EXECNAME}.64.exe
78+
79+
clean:xclean
80+
rm -rf target docker.tmp nimcache ${NAME} ${NAME}.exe
81+
82+
docker:
83+
@if [ "${NIMBLE}" != "" ] ; then \
84+
rm -rf docker.tmp && \
85+
mkdir docker.tmp && \
86+
echo >docker.tmp/Dockerfile "FROM teras/nimcross" && \
87+
echo >>docker.tmp/Dockerfile "RUN ${NIMBLE}" && \
88+
cd docker.tmp ; docker build -t ${DOCKERNAME} . && \
89+
rm -rf docker.tmp ; \
90+
fi
5691

5792
target/${EXECNAME}:${BUILDDEP}
58-
${NIMVER} nim ${COMPILER} ${ALLNIMOPTS} ${NAME}
93+
nim ${COMPILER} ${BASENIMOPTS} ${OSXNIMOPTS} ${NAME}
5994
mkdir -p target
6095
mv ${NAME} target/${EXECNAME}
61-
if [ "$(DOCOMPRESS)" = "y" ] ; then upx --best target/${EXECNAME} ; fi
96+
if [ "$(DOCOMPRESS)" = "t" ] ; then upx --best target/${EXECNAME} ; fi
97+
cp target/${EXECNAME} target/${EXECNAME}.osx
6298

63-
target/${EXECNAME}.osx:${BUILDDEP} preosx
99+
target/${EXECNAME}.osx:${BUILDDEP}
64100
mkdir -p target
65-
docker run --rm -v `pwd`:/usr/src/app -w /usr/src/app teras/nimcross bash -c "${NIMVER} ${NIMBLE} nim ${COMPILER} ${ALLNIMOPTS} --os:macosx --passC:'-mmacosx-version-min=10.7 -gfull' --passL:'-mmacosx-version-min=10.7 -dead_strip' ${NAME} && x86_64-apple-darwin19-strip ${NAME}"
101+
docker run --rm -v `pwd`:/usr/src/app -w /usr/src/app ${DOCKERNAME} bash -c "${NIMVER} nim ${COMPILER} ${BASENIMOPTS} ${OSXNIMOPTS} --os:macosx --passC:'-mmacosx-version-min=10.7 -gfull' --passL:'-mmacosx-version-min=10.7 -dead_strip' ${NAME} && x86_64-apple-darwin19-strip ${NAME}"
66102
mv ${NAME} target/${EXECNAME}.osx
67-
if [ "$(DOCOMPRESS)" = "y" ] ; then upx --best target/${EXECNAME}.osx ; fi
103+
if [ "$(DOCOMPRESS)" = "t" ] ; then upx --best target/${EXECNAME}.osx ; fi
68104

69-
target/${EXECNAME}.linux:${BUILDDEP} prelinux
105+
target/${EXECNAME}.linux:${BUILDDEP}
70106
mkdir -p target
71-
docker run --rm -v `pwd`:/usr/src/app -w /usr/src/app teras/nimcross bash -c "${NIMVER} ${NIMBLE} nim ${COMPILER} ${ALLNIMOPTS} ${NAME} && strip ${NAME}"
107+
docker run --rm -v `pwd`:/usr/src/app -w /usr/src/app ${DOCKERNAME} bash -c "${NIMVER} nim ${COMPILER} ${BASENIMOPTS} ${LINUXNIMOPTS} ${NAME} && strip ${NAME}"
72108
mv ${NAME} target/${EXECNAME}.linux
73-
if [ "$(DOCOMPRESS)" = "y" ] ; then upx --best target/${EXECNAME}.linux ; fi
109+
if [ "$(DOCOMPRESS)" = "t" ] ; then upx --best target/${EXECNAME}.linux ; fi
74110

75-
target/${EXECNAME}.arm64.linux:${BUILDDEP} prepi
111+
target/${EXECNAME}.aarch64.linux:${BUILDDEP}
76112
mkdir -p target
77-
docker run --rm -v `pwd`:/usr/src/app -w /usr/src/app teras/nimcross bash -c "${NIMVER} ${NIMBLE} nim ${COMPILER} ${ALLNIMOPTS} --cpu:arm --os:linux ${NAME} && arm-linux-gnueabi-strip ${NAME}"
113+
docker run --rm -v `pwd`:/usr/src/app -w /usr/src/app ${DOCKERNAME} bash -c "${NIMVER} nim ${COMPILER} ${BASENIMOPTS} ${PINIMOPTS} --cpu:arm --os:linux ${NAME} && arm-linux-gnueabi-strip ${NAME}"
78114
mv ${NAME} target/${EXECNAME}.arm.linux
79-
if [ "$(DOCOMPRESS)" = "y" ] ; then upx --best target/${EXECNAME}.arm.linux ; fi
80-
docker run --rm -v `pwd`:/usr/src/app -w /usr/src/app teras/nimcross bash -c "${NIMVER} ${NIMBLE} nim ${COMPILER} ${ALLNIMOPTS} --cpu:arm64 --os:linux ${NAME} && aarch64-linux-gnu-strip ${NAME}"
81-
mv ${NAME} target/${EXECNAME}.arm64.linux
82-
if [ "$(DOCOMPRESS)" = "y" ] ; then upx --best target/${EXECNAME}.arm64.linux ; fi
115+
#if [ "$(DOCOMPRESS)" = "t" ] ; then upx --best target/${EXECNAME}.arm.linux ; fi
116+
docker run --rm -v `pwd`:/usr/src/app -w /usr/src/app ${DOCKERNAME} bash -c "${NIMVER} nim ${COMPILER} ${BASENIMOPTS} ${PINIMOPTS} --cpu:arm64 --os:linux ${NAME} && aarch64-linux-gnu-strip ${NAME}"
117+
mv ${NAME} target/${EXECNAME}.aarch64.linux
118+
if [ "$(DOCOMPRESS)" = "t" ] ; then upx --best target/${EXECNAME}.aarch64.linux ; fi
83119

84-
target/${EXECNAME}.64.exe:${BUILDDEP} prewindows
120+
target/${EXECNAME}.32.exe:${BUILDDEP}
85121
mkdir -p target
86-
docker run --rm -v `pwd`:/usr/src/app -w /usr/src/app teras/nimcross bash -c "${NIMVER} ${NIMBLE} nim ${COMPILER} ${ALLNIMOPTS} -d:mingw --cpu:i386 --app:${WINAPP} ${NAME} && i686-w64-mingw32-strip ${NAME}.exe"
122+
docker run --rm -v `pwd`:/usr/src/app -w /usr/src/app ${DOCKERNAME} bash -c "${NIMVER} nim ${COMPILER} ${BASENIMOPTS} ${WINDOWSNIMOPTS} -d:mingw --cpu:i386 --app:${WINAPP} ${NAME} && i686-w64-mingw32-strip ${NAME}.exe"
87123
mv ${NAME}.exe target/${EXECNAME}.32.exe
88-
if [ "$(DOCOMPRESS)" = "y" ] ; then upx --best target/${EXECNAME}.32.exe ; fi
89-
docker run --rm -v `pwd`:/usr/src/app -w /usr/src/app teras/nimcross bash -c "${NIMVER} ${NIMBLE} nim ${COMPILER} ${ALLNIMOPTS} -d:mingw --cpu:amd64 --app:${WINAPP} ${NAME} && x86_64-w64-mingw32-strip ${NAME}.exe"
124+
if [ "$(DOCOMPRESS)" = "t" ] ; then upx --best target/${EXECNAME}.32.exe ; fi
125+
126+
target/${EXECNAME}.64.exe:${BUILDDEP}
127+
mkdir -p target
128+
docker run --rm -v `pwd`:/usr/src/app -w /usr/src/app ${DOCKERNAME} bash -c "${NIMVER} nim ${COMPILER} ${BASENIMOPTS} ${WINDOWSNIMOPTS} -d:mingw --cpu:amd64 --app:${WINAPP} ${NAME} && x86_64-w64-mingw32-strip ${NAME}.exe"
90129
mv ${NAME}.exe target/${EXECNAME}.64.exe
91-
if [ "$(DOCOMPRESS)" = "y" ] ; then upx --best target/${EXECNAME}.64.exe ; fi
130+
if [ "$(DOCOMPRESS)" = "t" ] ; then upx --best target/${EXECNAME}.64.exe ; fi
131+
132+
133+
install: | all install-only
92134

93-
install:all
94-
mkdir -p ${DEST}/darwin-x86_64/ && cp target/${EXECNAME}.osx ${DEST}/darwin-x86_64/${EXECNAME}
95-
mkdir -p ${DEST}/linux-x86_64/ && cp target/${EXECNAME}.linux ${DEST}/linux-x86_64/${EXECNAME}
96-
mkdir -p ${DEST}/linux-arm && cp target/${EXECNAME}.arm.linux ${DEST}/linux-arm/${EXECNAME}
97-
mkdir -p ${DEST}/linux-arm64 && cp target/${EXECNAME}.arm64.linux ${DEST}/linux-arm64/${EXECNAME}
98-
mkdir -p ${DEST}/windows-x86_64 && cp target/${EXECNAME}.64.exe ${DEST}/windows-x86_64/${EXECNAME}.exe
99-
mkdir -p ${DEST}/windows-i686 && cp target/${EXECNAME}.32.exe ${DEST}/windows-i686/${EXECNAME}.exe
135+
install-only:
136+
set -e ; mkdir -p ${DEST}/all
137+
set -e ; rm -rf ${DEST}/all/${EXECNAME}.* ; rm -f ${DEST}/darwin-x86_64/${EXECNAME} ${DEST}/linux-x86_64/${EXECNAME} ${DEST}/linux-arm/${EXECNAME} ${DEST}/linux-aarch64/${EXECNAME} ${DEST}/windows-x86_64/${EXECNAME}.exe ${DEST}/windows-i686/${EXECNAME}.exe
138+
set -e ; if [ -f target/${EXECNAME}.osx ] ; then mkdir -p ${DEST}/darwin-x86_64 && cp target/${EXECNAME}.osx ${DEST}/all/ && ln -s ../all/${EXECNAME}.osx ${DEST}/darwin-x86_64/${EXECNAME} ; fi
139+
set -e ; if [ -f target/${EXECNAME}.linux ] ; then mkdir -p ${DEST}/linux-x86_64 && cp target/${EXECNAME}.linux ${DEST}/all/ && ln -s ../all/${EXECNAME}.linux ${DEST}/linux-x86_64/${EXECNAME} ; fi
140+
set -e ; if [ -f target/${EXECNAME}.arm.linux ] ; then mkdir -p ${DEST}/linux-arm && cp target/${EXECNAME}.arm.linux ${DEST}/all/ && ln -s ../all/${EXECNAME}.arm.linux ${DEST}/linux-arm/${EXECNAME} ; fi
141+
set -e ; if [ -f target/${EXECNAME}.aarch64.linux ] ; then mkdir -p ${DEST}/linux-aarch64 && cp target/${EXECNAME}.aarch64.linux ${DEST}/all/ && ln -s ../all/${EXECNAME}.aarch64.linux ${DEST}/linux-aarch64/${EXECNAME} ; fi
142+
set -e ; if [ -f target/${EXECNAME}.64.exe ] ; then mkdir -p ${DEST}/windows-x86_64 && cp target/${EXECNAME}.64.exe ${DEST}/all/ && ln -s ../all/${EXECNAME}.64.exe ${DEST}/windows-x86_64/${EXECNAME}.exe ; fi
143+
set -e ; if [ -f target/${EXECNAME}.32.exe ] ; then mkdir -p ${DEST}/windows-i686 && cp target/${EXECNAME}.32.exe ${DEST}/all/ && ln -s ../all/${EXECNAME}.32.exe ${DEST}/windows-i686/${EXECNAME}.exe ; fi
100144

101-
run:current
145+
run:local
102146
./target/${EXECNAME} ${RUNARGS}

config.mk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
NAME=dpacker
2-
VERSION=0.1.1
2+
VERSION=0.2
33

44
NIMOPTS=--multimethods:on
55
COMPILER=c
@@ -11,4 +11,4 @@ EXECNAME=dpr
1111

1212
RUNARGS=--dpacker-help
1313

14-
COMPRESS=yes
14+
COMPRESS=true

dpackeropts.nim

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,15 @@ proc hasArg*(args:var seq[string], a:string, position:int = -1) : bool =
99
return true
1010
false
1111

12+
const dpackerCmd = """ info
13+
install
14+
list
15+
remove|uninstall
16+
search
17+
where|file|files
18+
update
19+
upgrade"""
20+
1221
const facesList* = """ --apt-face
1322
--brew-face
1423
--choco-face
@@ -47,4 +56,8 @@ List of valid --FACE options:
4756
4857
4958
List of valid --TARGET options:
50-
""" & targetsList
59+
""" & targetsList & """
60+
61+
62+
List of possible commands, with dpacker as target:
63+
""" & dpackerCmd

0 commit comments

Comments
 (0)