Skip to content

Commit 49f0f2c

Browse files
Makefiles work under Windows now (Except building/cleaning spasm-ng ._.)
1 parent 097cf10 commit 49f0f2c

File tree

7 files changed

+189
-163
lines changed

7 files changed

+189
-163
lines changed

makefile

Lines changed: 153 additions & 144 deletions
Original file line numberDiff line numberDiff line change
@@ -1,144 +1,153 @@
1-
#----------------------------
2-
# Makefile
3-
#----------------------------
4-
5-
# common/os specific things
6-
ifeq ($(OS),Windows_NT)
7-
NATIVEPATH = $(subst /,\,$(1))
8-
WINPATH = $(NATIVEPATH)
9-
RM = del /f 2>nul
10-
RMDIR = rmdir /s /q
11-
MKDIR = mkdir
12-
PREFIX ?= C:
13-
CP = copy
14-
CPDIR = xcopy
15-
else
16-
NATIVEPATH = $(subst \,/,$(1))
17-
WINPATH = $(shell winepath --windows $(1))
18-
RM = rm -f
19-
MKDIR = mkdir -p
20-
RMDIR = rm -rf
21-
PREFIX ?= $(HOME)
22-
CP = cp
23-
CPDIR = cp -r
24-
endif
25-
26-
INSTALLLOC := $(call NATIVEPATH,$(DESTDIR)$(PREFIX))
27-
TOOLSDIR := $(call NATIVEPATH,$(CURDIR)/tools)
28-
SRCDIR := $(call NATIVEPATH,$(CURDIR)/src)
29-
SPASMDIR := $(call NATIVEPATH,$(TOOLSDIR)/spasm-ng)
30-
CONVHEXDIR := $(call NATIVEPATH,$(TOOLSDIR)/convhex)
31-
CONVPNGDIR := $(call NATIVEPATH,$(TOOLSDIR)/convpng)
32-
33-
CEDIR := $(call NATIVEPATH,$(SRCDIR)/ce)
34-
STDDIR := $(call NATIVEPATH,$(SRCDIR)/std)
35-
36-
SPASM := $(call NATIVEPATH,$(SPASMDIR)/spasm)
37-
CONVHEX := $(call NATIVEPATH,$(CONVHEXDIR)/convhex)
38-
CONVPNG := $(call NATIVEPATH,$(CONVPNGDIR)/convpng)
39-
40-
BIN := $(call NATIVEPATH,$(TOOLSDIR)/zds)
41-
42-
GRAPHXDIR := $(call NATIVEPATH,$(SRCDIR)/graphx)
43-
KEYPADCDIR := $(call NATIVEPATH,$(SRCDIR)/keypadc)
44-
FILEIOCDIR := $(call NATIVEPATH,$(SRCDIR)/fileioc)
45-
46-
INSTALLBIN := $(call NATIVEPATH,$(INSTALLLOC)/CEdev/bin)
47-
INSTALLINC := $(call NATIVEPATH,$(INSTALLLOC)/CEdev/include)
48-
INSTALLLIB := $(call NATIVEPATH,$(INSTALLLOC)/CEdev/lib)
49-
DIRS := $(INSTALLINC) $(INSTALLINC)/ce $(INSTALLINC)/ce/libs $(INSTALLINC)/std $(INSTALLBIN) $(INSTALLLIB)
50-
DIRS := $(call NATIVEPATH,$(DIRS))
51-
52-
all: $(SPASM) $(CONVHEX) $(CONVPNG) graphx fileioc keypadc ce std
53-
54-
#----------------------------
55-
# tool rules
56-
#----------------------------
57-
$(SPASM) $(CONVHEX) $(CONVPNG):
58-
$(MAKE) -C $(dir $@)
59-
60-
clean: clean-graphx clean-fileioc clean-keypadc clean-ce clean-std
61-
$(MAKE) -C $(SPASMDIR) clean
62-
$(MAKE) -C $(CONVHEXDIR) clean
63-
$(MAKE) -C $(CONVPNGDIR) clean
64-
#----------------------------
65-
66-
#----------------------------
67-
# ce rules
68-
#----------------------------
69-
ce:
70-
$(MAKE) -C $(CEDIR) BIN=$(BIN)
71-
72-
clean-ce:
73-
$(MAKE) -C $(CEDIR) clean
74-
#----------------------------
75-
76-
#----------------------------
77-
# std rules
78-
#----------------------------
79-
std:
80-
$(MAKE) -C $(STDDIR) BIN=$(BIN)
81-
clean-std:
82-
$(MAKE) -C $(STDDIR) clean
83-
#----------------------------
84-
85-
#----------------------------
86-
# graphx rules
87-
#----------------------------
88-
graphx: $(SPASM)
89-
$(MAKE) -C $(GRAPHXDIR) SPASM=$(SPASM) BIN=$(BIN)
90-
clean-graphx:
91-
$(MAKE) -C $(GRAPHXDIR) clean
92-
install-graphx:
93-
$(MAKE) -C $(GRAPHXDIR) install
94-
uninstall-graphx:
95-
$(MAKE) -C $(GRAPHXDIR) uninstall
96-
#----------------------------
97-
98-
#----------------------------
99-
# fileioc rules
100-
#----------------------------
101-
fileioc: $(SPASM)
102-
$(MAKE) -C $(FILEIOCDIR) SPASM=$(SPASM) BIN=$(BIN)
103-
clean-fileioc:
104-
$(MAKE) -C $(FILEIOCDIR) clean
105-
#----------------------------
106-
107-
#----------------------------
108-
# keypadc rules
109-
#----------------------------
110-
keypadc: $(SPASM)
111-
$(MAKE) -C $(KEYPADCDIR) SPASM=$(SPASM) BIN=$(BIN)
112-
clean-keypadc:
113-
$(MAKE) -C $(KEYPADCDIR) clean
114-
#----------------------------
115-
116-
uninstall:
117-
$(RMDIR) $(call NATIVEPATH,$(INSTALLLOC)/CEdev)
118-
119-
install: $(DIRS)
120-
$(CPDIR) $(call NATIVEPATH,$(CURDIR)/examples) $(call NATIVEPATH,$(INSTALLLOC)/CEdev)
121-
$(CP) $(call NATIVEPATH,$(SRCDIR)/asm/*) $(call NATIVEPATH,$(INSTALLLIB)/asm)
122-
$(CP) $(call NATIVEPATH,$(SRCDIR)/example_makefile) $(call NATIVEPATH,$(INSTALLINC)/.makefile)
123-
$(CP) $(SPASM) $(INSTALLBIN)
124-
$(CP) $(CONVHEX) $(INSTALLBIN)
125-
$(CP) $(CONVPNG) $(INSTALLBIN)
126-
$(CP) $(call NATIVEPATH,$(BIN)/*) $(INSTALLBIN)
127-
$(MAKE) -C $(GRAPHXDIR) install PREFIX=$(PREFIX) DESTDIR=$(DESTDIR)
128-
$(MAKE) -C $(KEYPADCDIR) install PREFIX=$(PREFIX) DESTDIR=$(DESTDIR)
129-
$(MAKE) -C $(FILEIOCDIR) install PREFIX=$(PREFIX) DESTDIR=$(DESTDIR)
130-
$(MAKE) -C $(CEDIR) install PREFIX=$(PREFIX) DESTDIR=$(DESTDIR)
131-
$(MAKE) -C $(STDDIR) install PREFIX=$(PREFIX) DESTDIR=$(DESTDIR)
132-
133-
$(DIRS):
134-
$(MKDIR) $(INSTALLBIN)
135-
$(MKDIR) $(INSTALLLIB)
136-
$(MKDIR) $(INSTALLINC)
137-
$(MKDIR) $(call NATIVEPATH,$(INSTALLLIB)/asm)
138-
$(MKDIR) $(call NATIVEPATH,$(INSTALLINC)/ce)
139-
$(MKDIR) $(call NATIVEPATH,$(INSTALLINC)/std)
140-
$(MKDIR) $(call NATIVEPATH,$(INSTALLINC)/ce/libs)
141-
142-
143-
.PHONY: all clean graphx clean-graphx fileioc clean-fileioc keypadc clean-keypadc install uninstall
144-
1+
#----------------------------
2+
# Makefile
3+
#----------------------------
4+
5+
# common/os specific things
6+
ifeq ($(OS),Windows_NT)
7+
NATIVEPATH = $(subst /,\,$(1))
8+
WINPATH = $(NATIVEPATH)
9+
RM = del /f 2>nul
10+
RMDIR = rmdir /s /q
11+
MKDIR = mkdir
12+
PREFIX ?= C:
13+
INSTALLLOC := $(call NATIVEPATH,$(DESTDIR)$(PREFIX))
14+
CP = copy /y
15+
EXMPL_DIR = $(call NATIVEPATH,$(INSTALLLOC)/CEdev/examples)
16+
CP_EXMPLS = (if not exist "$(EXMPL_DIR)" mkdir $(EXMPL_DIR)) && xcopy /s /e $(call NATIVEPATH,$(CURDIR)/examples) $(EXMPL_DIR)
17+
else
18+
NATIVEPATH = $(subst \,/,$(1))
19+
WINPATH = $(shell winepath --windows $(1))
20+
RM = rm -f
21+
MKDIR = mkdir -p
22+
RMDIR = rm -rf
23+
PREFIX ?= $(HOME)
24+
INSTALLLOC := $(call NATIVEPATH,$(DESTDIR)$(PREFIX))
25+
CP = cp
26+
CP_EXMPLS = cp -r $(call NATIVEPATH,$(CURDIR)/examples) $(call NATIVEPATH,$(INSTALLLOC)/CEdev)
27+
endif
28+
29+
TOOLSDIR := $(call NATIVEPATH,$(CURDIR)/tools)
30+
SRCDIR := $(call NATIVEPATH,$(CURDIR)/src)
31+
SPASMDIR := $(call NATIVEPATH,$(TOOLSDIR)/spasm-ng)
32+
CONVHEXDIR := $(call NATIVEPATH,$(TOOLSDIR)/convhex)
33+
CONVPNGDIR := $(call NATIVEPATH,$(TOOLSDIR)/convpng)
34+
35+
CEDIR := $(call NATIVEPATH,$(SRCDIR)/ce)
36+
STDDIR := $(call NATIVEPATH,$(SRCDIR)/std)
37+
38+
SPASM := $(call NATIVEPATH,$(SPASMDIR)/spasm)
39+
CONVHEX := $(call NATIVEPATH,$(CONVHEXDIR)/convhex)
40+
CONVPNG := $(call NATIVEPATH,$(CONVPNGDIR)/convpng)
41+
42+
43+
ifeq ($(OS),Windows_NT)
44+
SPASM := $(call NATIVEPATH,$(SPASMDIR)/spasm.exe)
45+
CONVHEX := $(call NATIVEPATH,$(CONVHEXDIR)/convhex.exe)
46+
CONVPNG := $(call NATIVEPATH,$(CONVPNGDIR)/convpng.exe)
47+
endif
48+
49+
BIN := $(call NATIVEPATH,$(TOOLSDIR)/zds)
50+
51+
GRAPHXDIR := $(call NATIVEPATH,$(SRCDIR)/graphx)
52+
KEYPADCDIR := $(call NATIVEPATH,$(SRCDIR)/keypadc)
53+
FILEIOCDIR := $(call NATIVEPATH,$(SRCDIR)/fileioc)
54+
55+
INSTALLBIN := $(call NATIVEPATH,$(INSTALLLOC)/CEdev/bin)
56+
INSTALLINC := $(call NATIVEPATH,$(INSTALLLOC)/CEdev/include)
57+
INSTALLLIB := $(call NATIVEPATH,$(INSTALLLOC)/CEdev/lib)
58+
DIRS := $(INSTALLINC) $(INSTALLINC)/ce $(INSTALLINC)/ce/libs $(INSTALLINC)/std $(INSTALLBIN) $(INSTALLLIB)
59+
DIRS := $(call NATIVEPATH,$(DIRS))
60+
61+
all: $(SPASM) $(CONVHEX) $(CONVPNG) graphx fileioc keypadc ce std
62+
63+
#----------------------------
64+
# tool rules
65+
#----------------------------
66+
$(SPASM) $(CONVHEX) $(CONVPNG):
67+
$(MAKE) -C $(dir $@)
68+
69+
clean: clean-graphx clean-fileioc clean-keypadc clean-ce clean-std
70+
$(MAKE) -C $(SPASMDIR) clean
71+
$(MAKE) -C $(CONVHEXDIR) clean
72+
$(MAKE) -C $(CONVPNGDIR) clean
73+
#----------------------------
74+
75+
#----------------------------
76+
# ce rules
77+
#----------------------------
78+
ce:
79+
$(MAKE) -C $(CEDIR) BIN=$(BIN)
80+
81+
clean-ce:
82+
$(MAKE) -C $(CEDIR) clean
83+
#----------------------------
84+
85+
#----------------------------
86+
# std rules
87+
#----------------------------
88+
std:
89+
$(MAKE) -C $(STDDIR) BIN=$(BIN)
90+
clean-std:
91+
$(MAKE) -C $(STDDIR) clean
92+
#----------------------------
93+
94+
#----------------------------
95+
# graphx rules
96+
#----------------------------
97+
graphx: $(SPASM)
98+
$(MAKE) -C $(GRAPHXDIR) SPASM=$(SPASM) BIN=$(BIN)
99+
clean-graphx:
100+
$(MAKE) -C $(GRAPHXDIR) clean
101+
install-graphx:
102+
$(MAKE) -C $(GRAPHXDIR) install
103+
uninstall-graphx:
104+
$(MAKE) -C $(GRAPHXDIR) uninstall
105+
#----------------------------
106+
107+
#----------------------------
108+
# fileioc rules
109+
#----------------------------
110+
fileioc: $(SPASM)
111+
$(MAKE) -C $(FILEIOCDIR) SPASM=$(SPASM) BIN=$(BIN)
112+
clean-fileioc:
113+
$(MAKE) -C $(FILEIOCDIR) clean
114+
#----------------------------
115+
116+
#----------------------------
117+
# keypadc rules
118+
#----------------------------
119+
keypadc: $(SPASM)
120+
$(MAKE) -C $(KEYPADCDIR) SPASM=$(SPASM) BIN=$(BIN)
121+
clean-keypadc:
122+
$(MAKE) -C $(KEYPADCDIR) clean
123+
#----------------------------
124+
125+
uninstall:
126+
$(RMDIR) $(call NATIVEPATH,$(INSTALLLOC)/CEdev)
127+
128+
install: $(DIRS)
129+
$(CP_EXMPLS)
130+
$(CP) $(call NATIVEPATH,$(SRCDIR)/asm/*) $(call NATIVEPATH,$(INSTALLLIB)/asm)
131+
$(CP) $(call NATIVEPATH,$(SRCDIR)/example_makefile) $(call NATIVEPATH,$(INSTALLINC)/.makefile)
132+
$(CP) $(SPASM) $(INSTALLBIN)
133+
$(CP) $(CONVHEX) $(INSTALLBIN)
134+
$(CP) $(CONVPNG) $(INSTALLBIN)
135+
$(CP) $(call NATIVEPATH,$(BIN)/*) $(INSTALLBIN)
136+
$(MAKE) -C $(GRAPHXDIR) install PREFIX=$(PREFIX) DESTDIR=$(DESTDIR)
137+
$(MAKE) -C $(KEYPADCDIR) install PREFIX=$(PREFIX) DESTDIR=$(DESTDIR)
138+
$(MAKE) -C $(FILEIOCDIR) install PREFIX=$(PREFIX) DESTDIR=$(DESTDIR)
139+
$(MAKE) -C $(CEDIR) install PREFIX=$(PREFIX) DESTDIR=$(DESTDIR)
140+
$(MAKE) -C $(STDDIR) install PREFIX=$(PREFIX) DESTDIR=$(DESTDIR)
141+
142+
$(DIRS):
143+
$(MKDIR) $(INSTALLBIN)
144+
$(MKDIR) $(INSTALLLIB)
145+
$(MKDIR) $(INSTALLINC)
146+
$(MKDIR) $(call NATIVEPATH,$(INSTALLLIB)/asm)
147+
$(MKDIR) $(call NATIVEPATH,$(INSTALLINC)/ce)
148+
$(MKDIR) $(call NATIVEPATH,$(INSTALLINC)/std)
149+
$(MKDIR) $(call NATIVEPATH,$(INSTALLINC)/ce/libs)
150+
151+
152+
.PHONY: all clean graphx clean-graphx fileioc clean-fileioc keypadc clean-keypadc install uninstall
153+

src/ce/makefile

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ WINPATH = $(NATIVEPATH)
1212
RM = del /f 2>nul
1313
ASM = $(call NATIVEPATH,$(BIN)/ez80asm.exe)
1414
LIB = $(call NATIVEPATH,$(BIN)/ez80lib.exe)
15-
CP = xcopy
15+
CP = xcopy /y
1616
PREFIX ?= C:
1717
else
1818
NATIVEPATH = $(subst \,/,$(1))
@@ -39,6 +39,12 @@ LIB_LIB := $(NAME).lib
3939
EZC = $(wildcard *.c)
4040
EZSRC = $(wildcard *.src)
4141

42+
ifeq ($(OS),Windows_NT)
43+
COPY_HEADERS = (robocopy . $(LOC_H) $(LIB_H) /njh /njs /ndl /nc /ns) ^& exit 0
44+
else
45+
COPY_HEADERS = $(CP) $(LIB_H) $(LOC_H)
46+
endif
47+
4248
all: clean_lib $(LIB_LIB)
4349

4450
$(LIB_LIB): $(LIB_LIB)($(EZSRC:.src=.obj)) $(LIB_LIB)($(EZC:.c=.obj))
@@ -62,11 +68,11 @@ clean:
6268
$(LIB_LIB)():
6369

6470
install:
65-
$(CP) $(LIB_H) $(LOC_H)
71+
$(COPY_HEADERS)
6672
$(CP) $(LIB_LIB) $(LIB_LOC)
6773

6874
uninstall:
69-
$(RM) $(call NATIVEPATH,$(LOC_H)/$(LIB_H))
75+
$(RM) $(call NATIVEPATH,$(LOC_H)/*.h)
7076
$(RM) $(call NATIVEPATH,$(LIB_LOC)/$(LIB_LIB))
7177

7278
.PHONY: all clean clean_lib install uninstall $(LIB_LIB)()

src/example_makefile

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ AS = $(call NATIVEPATH,$(BIN)/ez80asm.exe)
3131
LD = $(call NATIVEPATH,$(BIN)/ez80link.exe)
3232
CC = $(call NATIVEPATH,$(BIN)/ez80cc.exe)
3333
CD = cd
34-
CP = copy /Y
34+
CP = copy /y
3535
CV = $(call NATIVEPATH,$(BIN)/convhex.exe)
3636
PG = $(call NATIVEPATH,$(BIN)/convpng.exe)
3737
NULL = >nul 2>&1
@@ -120,13 +120,18 @@ HEADERS := $(subst $(space),;,$(call WINPATH,$(ALLDIRS) $(addprefix $(CEDE
120120
HEADERS := $(subst \;,;,$(HEADERS))
121121
HEADERS := $(subst \;,;,$(HEADERS))
122122
HEADERS := $(subst /;,;,$(HEADERS))
123-
LIBRARIES := $(call NATIVEPATH,$(addprefix $(CEDEV)/lib/,cce.lib cshared.lib))
123+
124124
ifeq ($(USE_FLASH_FUNCTIONS),YES)
125-
LIBRARIES += $(call NATIVEPATH,$(addprefix $(CEDEV)/lib/,clinked.lib))
125+
LINKED_OS_FUN := clinked.lib
126126
else
127-
LIBRARIES += $(call NATIVEPATH,$(addprefix $(CEDEV)/lib/,cstatic.lib))
127+
LINKED_OS_FUN := cstatic.lib
128128
endif
129+
130+
LIBRARIES := $(call NATIVEPATH,$(addprefix $(CEDEV)/lib/,cce.lib cshared.lib $(LINKED_OS_FUN)))
131+
132+
ifdef L
129133
LIBRARIES += $(call NATIVEPATH,$(foreach var,$(L),$(CEDEV)/lib/$(var).lib))
134+
endif
130135

131136
#Define the assembler flags used by the Zilog assembler
132137
ASM_FLAGS := \
@@ -240,7 +245,7 @@ $(BINDIR)/$(TARGET8XP): $(BINDIR)/$(TARGETHEX)
240245

241246
$(BINDIR)/$(TARGETHEX): $(CSTARTUPOBJ) $(LIBHOBJ) $(OBJECTS)
242247
echo C CE SDK Version $(VERSION)
243-
$(LD) $(LDFLAGS) $@ = "$(subst $(space),$(comma),$(call WINRELPATH,$^) $(LOBJECTS)$(LIBRARIES))"
248+
$(LD) $(LDFLAGS) $@ = "$(subst $(space),$(comma),$(call NATIVEPATH,$^) $(LOBJECTS)$(LIBRARIES))"
244249

245250
#This rule handles conversion of the icon, if it is ever updated
246251
$(OBJDIR)/$(ICON_OBJ): $(ICONPNG)

src/fileioc/makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ RM = del /f 2>nul
1818
MKDIR = mkdir
1919
ASM = $(call NATIVEPATH,$(BIN)/ez80asm.exe)
2020
LIB = $(call NATIVEPATH,$(BIN)/ez80lib.exe)
21-
TOUCH = copy /b $(1)+,, $(1)
22-
CP = xcopy
21+
TOUCH = copy /y /b $(1)+,, $(1)
22+
CP = xcopy /y
2323
PREFIX ?= C:
2424
else
2525
NATIVEPATH = $(subst \,/,$(1))

src/graphx/makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ RM = del /f 2>nul
1818
MKDIR = mkdir
1919
ASM = $(call NATIVEPATH,$(BIN)/ez80asm.exe)
2020
LIB = $(call NATIVEPATH,$(BIN)/ez80lib.exe)
21-
TOUCH = copy /b $(1)+,, $(1)
22-
CP = xcopy
21+
TOUCH = copy /y /b $(1)+,, $(1)
22+
CP = xcopy /y
2323
PREFIX ?= C:
2424
else
2525
NATIVEPATH = $(subst \,/,$(1))

0 commit comments

Comments
 (0)