1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
# GNU Makefile autogenerated by Premake
# Please build using the solution Makefile at:
# ../Makefile
ifndef CONFIG
CONFIG=Debug
endif
ifeq ($(CONFIG),Debug)
BINDIR := ..
LIBDIR := ..
OBJDIR := obj/Debug
OUTDIR := ..
CPPFLAGS := -MMD
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g
CXXFLAGS := $(CFLAGS)
LDFLAGS += -L$(BINDIR) -L$(LIBDIR)
LDDEPS :=
RESFLAGS :=
TARGET := CppExe.exe
BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)
endif
ifeq ($(CONFIG),Release)
BINDIR := ..
LIBDIR := ..
OBJDIR := obj/Release
OUTDIR := ..
CPPFLAGS := -MMD
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O2
CXXFLAGS := $(CFLAGS)
LDFLAGS += -L$(BINDIR) -L$(LIBDIR) -s
LDDEPS :=
RESFLAGS :=
TARGET := CppExe.exe
BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)
endif
OBJECTS := \
$(OBJDIR)/Hello.o \
RESOURCES := \
# Can I have premake check the OS type instead of doing this here?
MKDIR_TYPE := msdos
CMD := $(subst \,\\,$(ComSpec)$(COMSPEC))
ifeq (,$(CMD))
MKDIR_TYPE := posix
endif
ifeq (/bin/sh.exe,$(SHELL))
MKDIR_TYPE := posix
endif
ifeq ($(MKDIR_TYPE),posix)
CMD_MKBINDIR := mkdir -p $(BINDIR)
CMD_MKLIBDIR := mkdir -p $(LIBDIR)
CMD_MKOUTDIR := mkdir -p $(OUTDIR)
CMD_MKOBJDIR := mkdir -p $(OBJDIR)
else
CMD_MKBINDIR := $(CMD) /c if not exist $(subst /,\\,$(BINDIR)) mkdir $(subst /,\\,$(BINDIR))
CMD_MKLIBDIR := $(CMD) /c if not exist $(subst /,\\,$(LIBDIR)) mkdir $(subst /,\\,$(LIBDIR))
CMD_MKOUTDIR := $(CMD) /c if not exist $(subst /,\\,$(OUTDIR)) mkdir $(subst /,\\,$(OUTDIR))
CMD_MKOBJDIR := $(CMD) /c if not exist $(subst /,\\,$(OBJDIR)) mkdir $(subst /,\\,$(OBJDIR))
endif
.PHONY: clean
# I really only need to create OUTDIR; that's the only one that matters!
$(OUTDIR)/$(TARGET): $(OBJECTS) $(LDDEPS) $(RESOURCES)
@echo Linking CppExe
-@$(CMD_MKBINDIR)
-@$(CMD_MKLIBDIR)
-@$(CMD_MKOUTDIR)
@$(BLDCMD)
clean:
@echo Cleaning CppExe
ifeq ($(MKDIR_TYPE),posix)
-@rm -f $(OUTDIR)/$(TARGET)
-@rm -rf $(OBJDIR)
else
-@if exist $(subst /,\,$(OUTDIR)/$(TARGET)) del /q $(subst /,\,$(OUTDIR)/$(TARGET))
-@if exist $(subst /,\,$(OBJDIR)) del /q $(subst /,\,$(OBJDIR))
-@if exist $(subst /,\,$(OBJDIR)) rmdir /s /q $(subst /,\,$(OBJDIR))
endif
# add an "objdir" as first dependency to target and create directories there (or maybe
# call it outdirs and do all required output directories
$(OBJDIR)/Hello.o: Hello.cpp
-@$(CMD_MKOBJDIR)
@echo $(notdir $<)
@$(CXX) $(CXXFLAGS) -o $@ -c $<
-include $(OBJECTS:%.o=%.d)
|