1 #Mihrtec Standard Makefile
9 #Additional deps and flags for the final executable file
18 ifdef EMSCRIPTEN_TOOLS
19 #Emscripten build environment
21 HTML
:= index.html js
/the_march.config.js js
/auth.js
22 EXPORTS
:= '_em_main', 'auth_encrypt'
24 EMFLAGS
:= -I..
/extern
/include
25 EMFLAGS
+= -s USE_SDL
=2 -s USE_SDL_TTF
=2 -s USE_SDL_IMAGE
=2 -s SDL2_IMAGE_FORMATS
='["png"]'
26 APP_FLAGS
+= --separate-asm
-s ALLOW_MEMORY_GROWTH
=1 -s FORCE_FILESYSTEM
=1 --pre-js html
/js
/pre.js
27 APP_FLAGS
+= -s EXPORTED_FUNCTIONS
="[$(EXPORTS)]"
28 EXEPATH
:= ..
/dist/bin
/jasm
/js
31 EMFLAGS
+= -I
/usr
/include/google
-I..
/extern
/include
32 BYPRODUCT
:= $(APPNAME
).asm.js
$(APPNAME
).js.mem
33 APP_FLAGS
+= $(EMFLAGS
) ..
/extern
/lib
/libwolfssl.so
35 #Native Build Environment
39 LIBS
+= SDL2_ttf SDL2_image SDL2main SDL2
40 EXEPATH
:= ..
/dist/bin
/$(shell uname
-m
)
41 #windows mingw build rules
42 ifeq ($(OS
), Windows_NT
)
43 LIBS
:= -lmingw32
-mwindows
$(LIBS
)
51 #-I each of the module directories, include directory, and define APPNAME.
52 CFLAGS
+= $(patsubst %,-I
%, $(MODULES
))
53 CFLAGS
+= -Iinclude
-I.
54 CFLAGS
+= -DAPPNAME
=$(APPNAME
)
56 #auto include all .c files
57 SRC
+= $(patsubst %,%/*.c
,$(MODULES
))
58 SRC
:= $(wildcard $(SRC
))
60 #Targets that don't generate a file
61 .PHONY
: $(APPNAME
) run push dox doc
clean scrub
all default move
62 #Define default rules to point to APPNAME
63 all default
: clean $(APPNAME
)
65 #include rules from any .mk file found in a module directory
66 include $(wildcard $(patsubst %,%/*.mk
,$(MODULES
)))
68 CFLAGS
+= $(patsubst %,-l
% ,$(LIBS
))
70 #populate C objects and dependency files to generate from SRC
71 COBJ
+= $(patsubst %.c
,%.
$(OBJFILE
), $(filter %.c
,$(SRC
)))
72 CDEP
+= $(COBJ
:.
$(OBJFILE
)=.d
)
77 $(APPNAME
): $(APP_RULES
) $(CDEP
) $(COBJ
)
79 $(CC
) -o
$(EXEPATH
)/$(EXE
) $(CXXFLAGS
) $(CFLAGS
) $(APP_FLAGS
) core
/main.
$(OBJFILE
)
81 #run the game after making it
85 #push to github after successful compile
87 @printf
'\nEnter a commit message:\n'; \
89 git commit
-am
"$$CMT"
90 git push
origin master
95 #clean up intermediate dependency files and binaries
97 @echo
"Cleaning .d (deps) and .$(OBJFILE) (obj)"
98 @
rm -f
$(EXEPATH
)/$(EXE
) $(patsubst %,$(EXEPATH
)/%, $(BYPRODUCT
))
99 @
rm -f
$(patsubst %,%/*.
$(OBJFILE
), $(MODULES
))
100 @
rm -f
$(patsubst %,%/*.d
, $(MODULES
))
102 #Scrub down to minimal distribution
103 scrub
: clean $(SCRUB_RULES
)
105 #construct list of move rules for each HTML item
108 @mkdir
-p ..
/dist/bin
/jasm
/js
109 @cp
-f html
/$@ ..
/dist/bin
/jasm
/$@
113 ################## DEFAULTS #####################
114 #cancel default %.o behavior for %.d dependency
117 #new default .o for .c files
119 $(CC
) -c
$(EMFLAGS
) $(CPPFLAGS
) $(CFLAGS
) $< -o
$@
121 #default for .d dependency files (output from gcc -M)
123 @.
/deps.sh
'dirname $*.c' $(CFLAGS
) $*.c
> $@
124 @sed
-i
's/$(*F)[\.]o/$(@D)\/$(*F)\.o/g' $@
125 @cat
$@ | sed
's/[\.][o]/.bc/g' >> $@