1 #Mihrtec Standard Makefile
13 ifdef EMSCRIPTEN_TOOLS
14 #Emscripten build environment
16 HTML
:= index.html js
/the_march.config.js js
/auth.js
18 EXPORTS
:= '_em_main', 'encrypt_password'
19 EMOPTS
:= --verbose
--separate-asm
-s ALLOW_MEMORY_GROWTH
=1 -s FORCE_FILESYSTEM
=1 --pre-js html
/js
/pre.js
20 LIBS
+= -s USE_SDL
=2 -s USE_SDL_TTF
=2 -s USE_SDL_IMAGE
=2 -s SDL2_IMAGE_FORMATS
='["png"]'
21 EXEPATH
:= ..
/dist/bin
/jasm
/js
24 EMFLAGS
:= $(EMOPTS
) -s EXPORTED_FUNCTIONS
="[$(EXPORTS)]"
25 EMFLAGS
+= -I
/usr
/include/google
26 BYPRODUCT
:= $(APPNAME
).asm.js
$(APPNAME
).js.mem
28 #Native Build Environment
32 LIBS
+= -lSDL2_ttf
-lSDL2_image
-lSDL2main
-lSDL2
33 EXEPATH
:= ..
/dist/bin
/$(shell uname
-m
)
34 #windows mingw build rules
35 ifeq ($(OS
), Windows_NT
)
36 LIBS
:= -lmingw32
-mwindows
$(LIBS
)
44 #-I each of the module directories, include directory, and define APPNAME.
45 CFLAGS
+= $(patsubst %,-I
%, $(MODULES
))
46 CFLAGS
+= -Iinclude
-I.
47 CFLAGS
+= -DAPPNAME
=$(APPNAME
)
49 #auto include all .c files
50 SRC
+= $(patsubst %,%/*.c
,$(MODULES
))
51 SRC
:= $(wildcard $(SRC
))
53 #Targets that don't generate a file
54 .PHONY
: $(APPNAME
) run push dox doc
clean scrub
all default move
55 #Define default rules to point to APPNAME
56 all default
: clean $(APPNAME
)
58 #include rules from any .mk file found in a module directory
59 include $(wildcard $(patsubst %,%/*.mk
,$(MODULES
)))
61 #populate C objects and dependency files to generate from SRC
62 COBJ
+= $(patsubst %.c
,%.
$(OBJFILE
), $(filter %.c
,$(SRC
)))
63 CDEP
+= $(COBJ
:.
$(OBJFILE
)=.d
)
68 $(APPNAME
): $(APP_RULES
) $(CDEP
) $(COBJ
)
70 $(CC
) -o
$(EXEPATH
)/$(EXE
) $(EMFLAGS
) $(CXXFLAGS
) $(CFLAGS
) core
/main.
$(OBJFILE
) $(LIBS
)
72 #run the game after making it
76 #push to github after successful compile
78 @printf
'\nEnter a commit message:\n'; \
80 git commit
-am
"$$CMT"
81 git push
origin master
86 #clean up intermediate dependency files and binaries
88 @echo
"Cleaning .d (deps) and .$(OBJFILE) (obj)"
89 @
rm -f
$(EXEPATH
)/$(EXE
) $(patsubst %,$(EXEPATH
)/%, $(BYPRODUCT
))
90 @
rm -f
$(patsubst %,%/*.
$(OBJFILE
), $(MODULES
))
91 @
rm -f
$(patsubst %,%/*.d
, $(MODULES
))
93 #Scrub down to minimal distribution
94 scrub
: clean $(SCRUB_RULES
)
96 #construct list of move rules for each HTML item
99 @mkdir
-p ..
/dist/bin
/jasm
/js
100 @cp
-f html
/$@ ..
/dist/bin
/jasm
/$@
104 ################## DEFAULTS #####################
105 #cancel default %.o behavior for %.d dependency
108 #new default .o for .c files
110 $(CC
) -c
$(EMFLAGS
) $(CPPFLAGS
) $(CFLAGS
) $< -o
$@
$(LIBS
)
112 #default for .d dependency files (output from gcc -M)
114 @.
/deps.sh
'dirname $*.c' $(CFLAGS
) $*.c
> $@
115 @sed
-i
's/$(*F)[\.]o/$(@D)\/$(*F)\.o/g' $@
116 @cat
$@ | sed
's/[\.][o]/.bc/g' >> $@