mirror of https://github.com/cosmo-ray/yirl.git
299 lines
11 KiB
Makefile
299 lines
11 KiB
Makefile
NAME= yirl
|
|
|
|
LIBNAME= lib$(NAME)
|
|
|
|
include config.mk
|
|
|
|
all: yirl-loader$(BIN_EXT) build-tests
|
|
|
|
include $(TESTS_DIR)/tests.mk
|
|
|
|
SRC = $(HSEARCH_SRC) \
|
|
$(SCRIPT_DIR)/lua-script.c \
|
|
$(SCRIPT_DIR)/entity-script.c \
|
|
$(SCRIPT_DIR)/lua-binding.c \
|
|
$(SCRIPT_DIR)/lua-convert.c \
|
|
$(SCRIPT_DIR)/tcc-script.c \
|
|
$(SCRIPT_DIR)/tcc-syms.c \
|
|
$(SCRIPT_DIR)/native-script.c \
|
|
$(SCRIPT_DIR)/ybytecode-script.c \
|
|
$(SCRIPT_DIR)/s7-script.c \
|
|
$(SCRIPT_DIR)/ph7-script.c \
|
|
$(SCRIPT_DIR)/quickjs.c \
|
|
$(SCRIPT_DIR)/script.c \
|
|
$(PERL_SRC) \
|
|
$(BYTECODE_DIR)/ybytecode.c \
|
|
$(BYTECODE_DIR)/condition.c \
|
|
$(DESCRIPTION_DIR)/description.c \
|
|
$(DESCRIPTION_DIR)/json-desc.c \
|
|
$(DESCRIPTION_DIR)/rawfile-decs.c \
|
|
$(DESCRIPTION_DIR)/rawfile-data-decs.c \
|
|
$(ENTITY_DIR)/entity.c \
|
|
$(ENTITY_DIR)/entity-string.c \
|
|
$(ENTITY_DIR)/entity-convertions.c \
|
|
$(ENTITY_DIR)/entity-patch.c \
|
|
$(GAME_DIR)/game.c \
|
|
$(UTIL_DIR)/math.c \
|
|
$(UTIL_DIR)/util.c \
|
|
$(UTIL_DIR)/simple-net.c \
|
|
$(UTIL_DIR)/block-array.c \
|
|
$(UTIL_DIR)/debug.c \
|
|
$(WID_DIR)/widget.c \
|
|
$(WID_DIR)/text-screen.c \
|
|
$(WID_DIR)/menu.c \
|
|
$(WID_DIR)/map.c \
|
|
$(WID_DIR)/pos.c \
|
|
$(WID_DIR)/rect.c \
|
|
$(WID_DIR)/events.c \
|
|
$(WID_DIR)/container.c \
|
|
$(WID_DIR)/texture.c \
|
|
$(WID_DIR)/canvas.c \
|
|
$(SDL_WID_DIR)/sdl.c \
|
|
$(SDL_WID_DIR)/map.c \
|
|
$(SDL_WID_DIR)/menu.c \
|
|
$(SDL_WID_DIR)/text-screen.c \
|
|
$(SDL_WID_DIR)/canvas.c
|
|
|
|
SRC += $(SOUND_SRC)
|
|
|
|
O_SRC = $(S7_SOURCE) $(PH7_SOURCE)
|
|
|
|
O_OBJ = $(O_SRC:.c=.o)
|
|
|
|
OBJ = $(SRC:.c=.o)
|
|
|
|
QUICKJS_V = 2020-03-16
|
|
|
|
QUICKJS_PATH = quickjs-$(QUICKJS_V)
|
|
QUICKJS_LIB_PATH = $(QUICKJS_PATH)/libquickjs.a
|
|
|
|
GEN_LOADER_SRC = $(GEN_LOADER_DIR)/main.c
|
|
GEN_LOADER_OBJ = $(GEN_LOADER_SRC:.c=.o)
|
|
|
|
#../SDL_mixer/build/.libs/libSDL2_mixer-2.0.so.0.2.2
|
|
#SDL_MIXER_LDFLAGS = "/home/uso/SDL_mixer/build/.libs/libSDL2_mixer.a"
|
|
#SDL_MIXER_CFLAGS = "-I../SDL_mixer/"
|
|
|
|
LDFLAGS += $(SDL_GPU_LDFLAGS)
|
|
LDFLAGS += $(TCC_LIB_PATH)$(TCC_LIB_NAME)
|
|
LDFLAGS += $(shell $(PKG_CONFIG) --libs SDL2_image SDL2_ttf $(WIN_SDL_EXTRA)) $(WIN_SDL_EXTRA2)
|
|
LDFLAGS += $(SDL_MIXER_LDFLAGS) $(SDL_MIXER_ARFLAGS)
|
|
LDFLAGS += -L./
|
|
LDFLAGS += $(LUA_LIB)
|
|
LDFLAGS += $(JSON_C_LD)
|
|
LDFLAGS += $(LDFLAGS_EXT)
|
|
LDFLAGS += $(LIBS_SAN) -ldl $(QUICKJS_LIB_PATH)
|
|
LDFLAGS += $(ANALYZER_FLAG)
|
|
LDFLAGS += $(EMPORT)
|
|
LDFLAGS += $(shell $(PKG_CONFIG) --libs gl glu)
|
|
LDFLAGS += $(PERL_LD)
|
|
GLIB_LDFLAGS += $(shell $(PKG_CONFIG) --libs glib-2.0)
|
|
|
|
COMMON_CFLAGS += $(SDL_MIXER_CFLAGS) $(HSEARCH_CFLAGS)
|
|
GLIB_COMMON_CFLAGS += $(shell $(PKG_CONFIG) --cflags glib-2.0)
|
|
COMMON_CFLAGS += $(shell sdl2-config --cflags)
|
|
COMMON_CFLAGS += -I$(YIRL_INCLUDE_PATH)
|
|
COMMON_CFLAGS += -I$(YIRL_INCLUDE_PATH2)
|
|
COMMON_CFLAGS += $(TCC_CFLAGS) $(S7_CFLAGS) $(PERL_CFLAGS) $(PH7_CFLAGS)
|
|
COMMON_CFLAGS += -I./core/script/
|
|
COMMON_CFLAGS += -I./$(DUCK_V)/ -I./$(DUCK_V)/src/ # <--- last one is here so I can compile extras
|
|
COMMON_CFLAGS += $(JSON_C_CFLAGS)
|
|
COMMON_CFLAGS += -I./$(QUICKJS_PATH)
|
|
COMMON_CFLAGS += -fpic
|
|
COMMON_CFLAGS += $(LUA_CFLAGS)
|
|
COMMON_CFLAGS += -I$(SDL_GPU_CFLAGS)
|
|
COMMON_CFLAGS += $(WERROR) -Wall -Wextra -Wno-unused-function -Wno-unused-parameter -Wno-int-to-pointer-cast
|
|
|
|
COMMON_CFLAGS += -DYIRL_INCLUDE_PATH=\"$(YIRL_INCLUDE_PATH2)\"
|
|
COMMON_CFLAGS += -DTCC_LIB_PATH=\"$(TCC_LIB_PATH)\"
|
|
COMMON_CFLAGS += $(FLAGS_SAN)
|
|
COMMON_CFLAGS += -Wno-unknown-warning-option
|
|
COMMON_CFLAGS += -Wno-cast-function-type
|
|
COMMON_CFLAGS += -fno-strict-aliasing # casting entity doesn't really respect strict aliasing rules
|
|
COMMON_CFLAGS += $(ANALYZER_FLAG)
|
|
COMMON_CFLAGS += -I./ph7/
|
|
COMMON_CFLAGS += $(EMPORT)
|
|
|
|
CFLAGS += $(COMMON_CFLAGS) -std=gnu11 -D_GNU_SOURCE $(EMCFLAGS)
|
|
|
|
INSTALL_MOD=$(PREFIX)/share/yirl/modules/
|
|
SCRIPT_DEP=$(PREFIX)/share/yirl/scripts-dependancies/
|
|
#this one is here so my screen don't cur the install line
|
|
ULPCS=Universal-LPC-spritesheet/
|
|
|
|
libc_hsearch_r/search_hsearch_r.c:
|
|
git clone https://github.com/mikhail-j/libc_hsearch_r.git
|
|
|
|
json-c-git/:
|
|
git clone $(JSON_C_GIT) json-c-git
|
|
|
|
json-c-build/: json-c-git/
|
|
$(EMCMAKE) cmake -B json-c-build json-c-git/
|
|
|
|
json-c-build/libjson-c.a: json-c-build/
|
|
cd json-c-build && $(EMMAKE) make
|
|
|
|
lua-git/:
|
|
git clone $(LUA_GIT) lua-git
|
|
|
|
lua-git/liblua.a:
|
|
cd lua-git && pwd && git fetch origin
|
|
cd lua-git && pwd && git checkout -f v5.4.0
|
|
cd lua-git && cat makefile | sed 's/CC= gcc/#CC variable remove/' | sed 's/-DLUA_USE_READLINE//' | sed 's/-lreadline//' | sed 's/-O2/-O2 -fPIC/g' > makefile_tmp
|
|
mv lua-git/makefile_tmp lua-git/makefile
|
|
cd lua-git && $(EMMAKE) make
|
|
|
|
sdl-gpu-build:
|
|
bash -c "$(EMCMAKE) cmake -B ./sdl-gpu-build ./sdl-gpu/ $(CMAKE_ARGS)"
|
|
|
|
$(SDL_GPU_LDFLAGS): sdl-gpu-build
|
|
$(EMMAKE) make -C sdl-gpu-build
|
|
|
|
$(QUICKJS_PATH):
|
|
git clone https://github.com/cosmo-ray/quickjs.git quickjs-$(QUICKJS_V)
|
|
|
|
$(QUICKJS_LIB_PATH): $(QUICKJS_PATH)
|
|
CONFIG_FPIC=1 $(EMMAKE) make -C $(QUICKJS_PATH) libquickjs.a
|
|
|
|
ph7/ph7.o:
|
|
$(CC) -c -o ph7/ph7.o ph7/ph7.c -I./ph7/ -O2 -g -fPIC -DPH7_ENABLE_MATH_FUNC=1 -DPH7_ENABLE_THREADS=1
|
|
|
|
$(SCRIPT_DIR)/s7.o:
|
|
$(CC) -c -o $(SCRIPT_DIR)/s7.o $(SCRIPT_DIR)/s7.c -Wno-implicit-fallthrough -fPIC -O2 -g
|
|
|
|
$(SCRIPT_DIR)/perl.o: $(PERL_SRC)
|
|
$(CC) -c -o $(SCRIPT_DIR)/perl.o $(SCRIPT_DIR)/perl.c $(shell perl -MExtUtils::Embed -e ccopts) $(PERL_CFLAGS) -I$(YIRL_INCLUDE_PATH2) -fPIC
|
|
|
|
SDL_mixer/:
|
|
git submodule update --init
|
|
|
|
$(SDL_MIXER_DEP): SDL_mixer/
|
|
cd SDL_mixer/ && $(EMCONFIGURE) ./configure $(SDL_MIXER_CFG) CFLAGS="$(SDL_MIXER_BUILD_CFLAGS)"
|
|
cd SDL_mixer/ && $(EMMAKE) make
|
|
|
|
clean_sdl_mixer:
|
|
make -C SDL_mixer/ clean
|
|
|
|
$(OBJ): $(LUA_RULE) $(JSON_C_RULE) $(QUICKJS_LIB_PATH) $(SDL_MIXER_DEP) $(SDL_GPU_LDFLAGS)
|
|
|
|
$(LIBNAME).a: $(OBJ) $(O_OBJ) $(SDL_MIXER_DEP)
|
|
$(AR) -r -c -s $(LIBNAME).a $(OBJ) $(O_OBJ)
|
|
$(LIBNAME).$(LIBEXTENSION): $(OBJ) $(O_OBJ) $(OBJXX) $(SDL_MIXER_DEP)
|
|
$(CC) -shared -o $(LIBNAME).$(LIBEXTENSION) $(OBJ) $(O_OBJ) $(OBJXX) $(LDFLAGS)
|
|
|
|
yirl-loader$(BIN_EXT): $(YIRL_LINKING) $(GEN_LOADER_OBJ)
|
|
$(CC) -o yirl-loader$(BIN_EXT) $(GEN_LOADER_OBJ) $(BINARY_LINKING) $(LDFLAGS)
|
|
|
|
WEB_MOD_DST ?= "./low_enforcement_agents/"
|
|
|
|
PRELOAD_EMCC_FILES ?= \
|
|
--preload-file scripts-dependancies/object-wrapper.lua \
|
|
--preload-file modules/smart_cobject/ \
|
|
--preload-file $(WEB_MOD_DST)
|
|
|
|
WEB_CFLAG = \
|
|
--preload-file ./sazanami-mincho.ttf \
|
|
--use-preload-plugins
|
|
|
|
|
|
WEB_ARG=arguments: ["-d", "$(WEB_MOD_DST)", "-P", "/", "-W", "800", "-H", "600"],
|
|
# arguments: ['-d', './games/asteroide-shooter/', '-P', "/home/uso/yirl/"],
|
|
|
|
webstart.html: $(YIRL_LINKING) $(GEN_LOADER_OBJ) $(LIBNAME).a
|
|
$(CC) -o webstart.html $(GEN_LOADER_OBJ) $(LIBNAME).a $(LDFLAGS) -lopenal $(PRELOAD_EMCC_FILES) $(WEB_CFLAG) -sDYNAMIC_EXECUTION=2 -sMAIN_MODULE=1 -sTOTAL_MEMORY=1024MB --closure 1
|
|
|
|
start.html: webstart.html
|
|
cat webstart.html | sed 's|var Module = {|var Module = {\n\t$(WEB_ARG)|g' > start.html
|
|
|
|
clean: clean-tests
|
|
rm -rvf $(OBJ) $(OBJXX) $(GEN_LOADER_OBJ)
|
|
|
|
clean_ph7: fclean
|
|
rm -rvf ph7/ph7.o
|
|
|
|
fclean: clean
|
|
rm -rvf $(LIBNAME).a $(O_OBJ) $(LIBNAME).so $(LIBNAME).dll webstart.* start.html yirl-loader$(BIN_EXT)
|
|
|
|
clean_all: fclean clean_sdl_mixer
|
|
rm -rvf $(DUCK_OBJ) $(QUICKJS_LIB_PATH) sdl-gpu-build $(QUICKJS_PATH)/.obj lua-git/liblua.a
|
|
|
|
install: yirl-loader
|
|
mkdir -p $(PREFIX)/lib
|
|
mkdir -p $(PREFIX)$(INSTALL_MOD)
|
|
mkdir -p $(PREFIX)/bin
|
|
cp yirl-loader $(PREFIX)/bin/
|
|
cp libyirl.so $(PREFIX)/lib/
|
|
mkdir -p $(INSTALL_MOD)/8086-emu/
|
|
cp modules/8086-emu/asm-inst.h $(INSTALL_MOD)/8086-emu/
|
|
cp modules/8086-emu/asm-tok.h $(INSTALL_MOD)/8086-emu/
|
|
cp modules/8086-emu/asm.c $(INSTALL_MOD)/8086-emu/
|
|
cp modules/8086-emu/start.c $(INSTALL_MOD)/8086-emu/
|
|
cp modules/8086-emu/charset.h $(INSTALL_MOD)/8086-emu/
|
|
mkdir -p $(INSTALL_MOD)/dialogue/
|
|
cp modules/dialogue/init.c $(INSTALL_MOD)/dialogue/
|
|
cp modules/dialogue/start.json $(INSTALL_MOD)/dialogue/
|
|
mkdir -p $(INSTALL_MOD)/dialogue-box/
|
|
cp modules/dialogue-box/arrow_sheet.png $(INSTALL_MOD)/dialogue-box/
|
|
cp modules/dialogue-box/init.lua $(INSTALL_MOD)/dialogue-box/
|
|
cp modules/dialogue-box/start.json $(INSTALL_MOD)/dialogue-box/
|
|
mkdir -p $(SCRIPT_DEP)
|
|
cp scripts-dependancies/object-wrapper.lua $(SCRIPT_DEP)
|
|
cp -rvf include $(PREFIX)/share/yirl/
|
|
mkdir -p $(PREFIX)/share/yirl/tinycc/
|
|
cp tinycc/libtcc1.a $(PREFIX)/share/yirl/tinycc/
|
|
cp DejaVuSansMono.ttf $(PREFIX)/share/yirl/
|
|
cp sazanami-mincho.ttf $(PREFIX)/share/yirl/
|
|
install -D ./yirl-completion.bash $(PREFIX)/share/bash-completion/completions/yirl-loader
|
|
echo "Install everything in: "$(PREFIX)
|
|
|
|
install_extra_modules:
|
|
mkdir -p $(INSTALL_MOD)
|
|
mkdir -p $(INSTALL_MOD)/c_app
|
|
cp modules/c_app/* $(INSTALL_MOD)/c_app/
|
|
mkdir -p $(INSTALL_MOD)/snake
|
|
cp modules/snake/snake.lua $(INSTALL_MOD)/snake/snake.lua
|
|
cp modules/snake/start.json $(INSTALL_MOD)/snake/start.json
|
|
cp modules/snake/bg.png $(INSTALL_MOD)/snake/bg.png
|
|
mkdir -p $(INSTALL_MOD)/hightscore/
|
|
cp modules/hightscore/score.lua $(INSTALL_MOD)/hightscore/
|
|
cp modules/hightscore/start.json $(INSTALL_MOD)/hightscore/
|
|
mkdir -p $(INSTALL_MOD)/jrpg-fight/
|
|
cp modules/jrpg-fight/init.lua $(INSTALL_MOD)/jrpg-fight/
|
|
cp modules/jrpg-fight/animation.lua $(INSTALL_MOD)/jrpg-fight/
|
|
cp modules/jrpg-fight/start.json $(INSTALL_MOD)/jrpg-fight/
|
|
cp modules/jrpg-fight/image0007.png $(INSTALL_MOD)/jrpg-fight/
|
|
cp modules/jrpg-fight/image0009.png $(INSTALL_MOD)/jrpg-fight/
|
|
cp modules/jrpg-fight/explosion.png $(INSTALL_MOD)/jrpg-fight/
|
|
cp modules/jrpg-fight/BG_City.jpg $(INSTALL_MOD)/jrpg-fight/
|
|
cp modules/jrpg-fight/README.md $(INSTALL_MOD)/jrpg-fight/
|
|
mkdir -p $(INSTALL_MOD)/sprite-manager/
|
|
cp modules/sprite-manager/start.c $(INSTALL_MOD)/sprite-manager/
|
|
mkdir -p $(INSTALL_MOD)/loading_bar/
|
|
cp modules/loading_bar/start.c $(INSTALL_MOD)/loading_bar/
|
|
mkdir -p $(INSTALL_MOD)/$(ULPCS)/
|
|
cp modules/$(ULPCS)/start.json $(INSTALL_MOD)/$(ULPCS)/
|
|
cp modules/$(ULPCS)/lpcs.lua $(INSTALL_MOD)/$(ULPCS)/
|
|
cp -rvf modules/$(ULPCS)/spritesheets/ $(INSTALL_MOD)/$(ULPCS)/
|
|
cp modules/$(ULPCS)/CREDITS.TXT $(INSTALL_MOD)/$(ULPCS)/
|
|
cp modules/$(ULPCS)/cc-by-sa-3_0.txt $(INSTALL_MOD)/$(ULPCS)/
|
|
mkdir -p $(INSTALL_MOD)/pong/
|
|
cp modules/pong/start.scm $(INSTALL_MOD)/pong/
|
|
mkdir -p $(INSTALL_MOD)/tiled/
|
|
cp modules/tiled/tiled.c $(INSTALL_MOD)/tiled/
|
|
cp modules/tiled/start.json $(INSTALL_MOD)/tiled/
|
|
mkdir -p $(INSTALL_MOD)/vapp/
|
|
cp 'modules/vapp/New Piskel.png' $(INSTALL_MOD)/vapp/
|
|
cp modules/vapp/viking.png $(INSTALL_MOD)/vapp/
|
|
cp modules/vapp/start.json $(INSTALL_MOD)/vapp/
|
|
cp modules/vapp/pizza.png $(INSTALL_MOD)/vapp/
|
|
cp modules/vapp/init.c $(INSTALL_MOD)/vapp/
|
|
cp modules/vapp/resources.json $(INSTALL_MOD)/vapp/
|
|
mkdir -p $(INSTALL_MOD)/shooter/
|
|
cp modules/shooter/DurrrSpaceShip.png $(INSTALL_MOD)/shooter/
|
|
cp modules/shooter/start.lua $(INSTALL_MOD)/shooter/
|
|
cp -rvf modules/shooter/jswars_gfx/ $(INSTALL_MOD)/shooter/
|
|
mkdir -p $(INSTALL_MOD)/asteroide-shooter/
|
|
cp modules/asteroide-shooter/start.json $(INSTALL_MOD)/asteroide-shooter/
|
|
|
|
.PHONY : install clean_all fclean clean all install_extra_modules build-tests clean-tests clean_sdl_mixer
|