Makefile now builds DYNs magically.
This commit is contained in:
parent
e2c517b529
commit
646ef619b0
11 changed files with 188 additions and 126 deletions
0
3rdparty/stb_ds.h → 3rdparty/stbds.h
vendored
0
3rdparty/stb_ds.h → 3rdparty/stbds.h
vendored
0
3rdparty/stb_image.h → 3rdparty/stbimage.h
vendored
0
3rdparty/stb_image.h → 3rdparty/stbimage.h
vendored
48
Makefile
48
Makefile
|
|
@ -29,7 +29,7 @@ DXE3GEN := dxe3gen
|
|||
EXE2COFF := exe2coff
|
||||
|
||||
# Compiler Settings
|
||||
CFLAGS := -DPLATFORM_DOS -Wall
|
||||
CFLAGS := -DPLATFORM_DOS -Wall -MD
|
||||
LDFLAGS :=
|
||||
|
||||
# Output Directories
|
||||
|
|
@ -50,17 +50,11 @@ FONT_SRC := $(shell find font/src -name '*.c')
|
|||
FONT_OBJ := $(FONT_SRC:%=$(OBJ)/%.o)
|
||||
FONT_LIB := -lm
|
||||
|
||||
# Roo/E Dynamic Libraries
|
||||
DYNS_EXE := stbimage.dyn
|
||||
DYNS_SRC := $(shell find dyn/stbimage -name '*.c')
|
||||
DYNS_OBJ := $(DYNS_SRC:%=$(OBJ)/%.o)
|
||||
DYNS_LIB :=
|
||||
|
||||
# Roo/E Source and Target
|
||||
ROOE_EXE := roo_e.exe
|
||||
ROOE_SRC := $(shell find roo_e -name '*.c')
|
||||
ROOE_OBJ := $(ROOE_SRC:%=$(OBJ)/%.o)
|
||||
ROOE_LIB := 3rdparty/pthreads/lib/libgthreads.a -lgcc
|
||||
ROOE_LIB := 3rdparty/pthreads/lib/libgthreads.a -lgcc -lm
|
||||
|
||||
# MultiPlayer Game Client
|
||||
MPGC_EXE := kpsmpgc.app
|
||||
|
|
@ -68,13 +62,17 @@ MPGC_SRC := $(shell find kpsmpgc -name '*.c')
|
|||
MPGC_OBJ := $(MPGC_SRC:%=$(OBJ)/%.o)
|
||||
MPGC_LIB :=
|
||||
|
||||
FONTS := $(FNT)/vga4x8.fnt $(FNT)/vga8x8.fnt $(FNT)/vga8x14.fnt $(FNT)/vga8x16.fnt
|
||||
DYNS := kpsvideo stbimage
|
||||
FONTS := vga4x8 vga8x8 vga8x14 vga8x16
|
||||
|
||||
# Wiring
|
||||
FONT_PNGS := $(subst $(FNT),$(FIN),$(FONTS))
|
||||
FONT_PNGS := $(subst .fnt,.png,$(FONTS_PNGS))
|
||||
INC_FLAGS := $(addprefix -I,$(INC))
|
||||
CFLAGS += $(INC_FLAGS)
|
||||
INC_FLAGS := $(addprefix -I,$(INC))
|
||||
CFLAGS += $(INC_FLAGS)
|
||||
APP_OBJS := $(ROOE_OBJ) $(MPGC_OBJ)
|
||||
FONTS := $(addprefix $(FNT)/,$(addsuffix .fnt,$(FONTS)))
|
||||
FONT_PNGS := $(subst .fnt,.png,$(subst $(FNT),$(FIN),$(FONTS)))
|
||||
DYN_FILES := $(foreach DIR,$(DYNS),$(DYN)/$(DIR).dyn)
|
||||
DYN_SOURCE := $(foreach DIR,$(DYNS),$(shell find dyn/$(DIR) -name '*.c' -or -name '*.h'))
|
||||
|
||||
# Force User to Run This Using Toolchains
|
||||
.PHONY: use_build_script
|
||||
|
|
@ -83,7 +81,7 @@ use_build_script:
|
|||
|
||||
# Build Everything
|
||||
.PHONY: dos
|
||||
dos: $(BIN)/$(ROOE_EXE) $(APP)/$(MPGC_EXE) $(DYN)/$(DYNS_EXE)
|
||||
dos: $(BIN)/$(ROOE_EXE) $(APP)/$(MPGC_EXE) $(DYN_FILES)
|
||||
|
||||
.PHONY: linux
|
||||
linux: $(FONTS)
|
||||
|
|
@ -98,7 +96,7 @@ $(BIN)/$(FONT_ELF): $(FONT_OBJ) Makefile
|
|||
mkdir -p $(dir $@) $(BIN)/fonts
|
||||
$(CC) $(FONT_OBJ) -o $@ $(LDFLAGS) $(FONT_LIB)
|
||||
|
||||
$(FONTS) &: $(FIN)/vga4x8.png $(FIN)/vga4x8.png $(FIN)/vga4x8.png $(FIN)/vga4x8.png $(BIN)/$(FONT_ELF)
|
||||
$(FONTS) &: $(FONT_PNGS) $(BIN)/$(FONT_ELF)
|
||||
cd $(BIN) && ./$(FONT_ELF)
|
||||
|
||||
# Roo/E Target
|
||||
|
|
@ -115,15 +113,21 @@ $(APP)/$(MPGC_EXE): $(MPGC_OBJ) Makefile
|
|||
mkdir -p $(dir $@)
|
||||
$(DXE3GEN) -o $@ $(MPGC_OBJ) -U $(LDFLAGS) $(MPGC_LIB)
|
||||
|
||||
# DYNS Target
|
||||
$(DYN)/$(DYNS_EXE): $(DYNS_OBJ) Makefile
|
||||
mkdir -p $(dir $@)
|
||||
$(AR) rcs $(OBJ)/$(DYNS_EXE).a $(DYNS_OBJ)
|
||||
$(DXE3GEN) -o $@ -Y $@.a --whole-archive -U $(OBJ)/$(DYNS_EXE).a $(LDFLAGS) $(DYNS_LIB)
|
||||
mkdir -p $(SDK)
|
||||
mv $(DYN)/$(DYNS_EXE).a $(SDK)/.
|
||||
# DYN Targets
|
||||
.PHONY: dyns
|
||||
$(DYN_FILES): $(DYN_SOURCE) Makefile
|
||||
echo $(DYN_SOURCE)
|
||||
mkdir -p $(DYN) $(OBJ)/dyn/$(basename $(notdir $@)) $(SDK)/lib $(SDK)/include
|
||||
$(foreach CFILE,$(shell find dyn/$(basename $(notdir $@)) -name '*.c'),$(CC) $(CFLAGS) -o $(OBJ)/dyn/$(basename $(notdir $@))/$(subst dyn/$(basename $(notdir $@))/,,$(CFILE).o) -c $(CFILE) && ) true
|
||||
$(AR) rcs $(OBJ)/dyn/$(basename $(notdir $@)).a $(OBJ)/dyn/$(basename $(notdir $@))/*.o
|
||||
$(DXE3GEN) -o $@ -Y $@.a --whole-archive -U $(OBJ)/dyn/$(basename $(notdir $@)).a $(LDFLAGS)
|
||||
mv $@.a $(SDK)/lib/.
|
||||
if [ ! -z "$(shell find dyn/$(basename $(notdir $@)) -name '*.h')" ]; then cp $(shell find dyn/$(basename $(notdir $@)) -name '*.h') $(SDK)/include/.; fi
|
||||
|
||||
# Build C Files
|
||||
$(OBJ)/%.c.o: %.c
|
||||
mkdir -p $(dir $@)
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
|
||||
# Track Header Changes in APPs and Roo/E
|
||||
-include $(APP_OBJS:.o=.d)
|
||||
|
|
|
|||
31
dyn/kpsvideo/kpsvideo.c
Normal file
31
dyn/kpsvideo/kpsvideo.c
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
/* Roo/E, the Kangaroo Punch Portable GUI Toolkit
|
||||
* Copyright (C) 2026 Scott Duensing
|
||||
*
|
||||
* http://kangaroopunch.com
|
||||
*
|
||||
*
|
||||
* This file is part of Roo/E.
|
||||
*
|
||||
* Roo/E is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Affero General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* Roo/E is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Roo/E. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
#include "kpsvideo.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
int dynStart(void) {
|
||||
printf("kpsvideo starting!\n");
|
||||
return 0;
|
||||
}
|
||||
27
dyn/kpsvideo/kpsvideo.h
Normal file
27
dyn/kpsvideo/kpsvideo.h
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
/* Roo/E, the Kangaroo Punch Portable GUI Toolkit
|
||||
* Copyright (C) 2026 Scott Duensing
|
||||
*
|
||||
* http://kangaroopunch.com
|
||||
*
|
||||
*
|
||||
* This file is part of Roo/E.
|
||||
*
|
||||
* Roo/E is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Affero General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* Roo/E is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Roo/E. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef KPSVIDEO_H
|
||||
#define KPSVIDEO_H
|
||||
|
||||
#endif // KPSVIDEO_H
|
||||
|
|
@ -1,30 +1,30 @@
|
|||
/* Roo/E, the Kangaroo Punch Portable GUI Toolkit
|
||||
* Copyright (C) 2026 Scott Duensing
|
||||
*
|
||||
* http://kangaroopunch.com
|
||||
*
|
||||
*
|
||||
* This file is part of Roo/E.
|
||||
*
|
||||
* Roo/E is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Affero General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* Roo/E is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Roo/E. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
* Copyright (C) 2026 Scott Duensing
|
||||
*
|
||||
* http://kangaroopunch.com
|
||||
*
|
||||
*
|
||||
* This file is part of Roo/E.
|
||||
*
|
||||
* Roo/E is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Affero General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* Roo/E is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Roo/E. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#define STB_IMAGE_IMPLEMENTATION
|
||||
#include "stb_image.h"
|
||||
#include "stbimage.h"
|
||||
|
||||
|
||||
int dynStart(void) {
|
||||
|
|
|
|||
|
|
@ -1,24 +1,24 @@
|
|||
/* Roo/E, the Kangaroo Punch Portable GUI Toolkit
|
||||
* Copyright (C) 2026 Scott Duensing
|
||||
*
|
||||
* http://kangaroopunch.com
|
||||
*
|
||||
*
|
||||
* This file is part of Roo/E.
|
||||
*
|
||||
* Roo/E is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Affero General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* Roo/E is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Roo/E. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
* Copyright (C) 2026 Scott Duensing
|
||||
*
|
||||
* http://kangaroopunch.com
|
||||
*
|
||||
*
|
||||
* This file is part of Roo/E.
|
||||
*
|
||||
* Roo/E is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Affero General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* Roo/E is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Roo/E. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
#define STB_IMAGE_IMPLEMENTATION
|
||||
#define STBI_ONLY_PNG
|
||||
#include "stb_image.h"
|
||||
#include "stbimage.h"
|
||||
|
||||
#include "stddclmr.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,28 +1,28 @@
|
|||
/* Roo/E, the Kangaroo Punch Portable GUI Toolkit
|
||||
* Copyright (C) 2026 Scott Duensing
|
||||
*
|
||||
* http://kangaroopunch.com
|
||||
*
|
||||
*
|
||||
* This file is part of Roo/E.
|
||||
*
|
||||
* Roo/E is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Affero General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* Roo/E is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Roo/E. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
* Copyright (C) 2026 Scott Duensing
|
||||
*
|
||||
* http://kangaroopunch.com
|
||||
*
|
||||
*
|
||||
* This file is part of Roo/E.
|
||||
*
|
||||
* Roo/E is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Affero General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* Roo/E is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Roo/E. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include "stb_image.h"
|
||||
#include "stbimage.h"
|
||||
|
||||
|
||||
void __attribute__((constructor)) registerApp(void) {
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
#include "util.h"
|
||||
|
||||
#define STB_DS_IMPLEMENTATION
|
||||
#include "stb_ds.h"
|
||||
#include "stbds.h"
|
||||
|
||||
|
||||
int startApp(const char *appName, int argc, char *argv[]);
|
||||
|
|
|
|||
40
roo_e/util.c
40
roo_e/util.c
|
|
@ -1,24 +1,24 @@
|
|||
/* Roo/E, the Kangaroo Punch Portable GUI Toolkit
|
||||
* Copyright (C) 2026 Scott Duensing
|
||||
*
|
||||
* http://kangaroopunch.com
|
||||
*
|
||||
*
|
||||
* This file is part of Roo/E.
|
||||
*
|
||||
* Roo/E is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Affero General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* Roo/E is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Roo/E. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
* Copyright (C) 2026 Scott Duensing
|
||||
*
|
||||
* http://kangaroopunch.com
|
||||
*
|
||||
*
|
||||
* This file is part of Roo/E.
|
||||
*
|
||||
* Roo/E is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Affero General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* Roo/E is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Roo/E. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
#include <string.h>
|
||||
|
|
|
|||
40
roo_e/util.h
40
roo_e/util.h
|
|
@ -1,24 +1,24 @@
|
|||
/* Roo/E, the Kangaroo Punch Portable GUI Toolkit
|
||||
* Copyright (C) 2026 Scott Duensing
|
||||
*
|
||||
* http://kangaroopunch.com
|
||||
*
|
||||
*
|
||||
* This file is part of Roo/E.
|
||||
*
|
||||
* Roo/E is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Affero General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* Roo/E is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Roo/E. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
* Copyright (C) 2026 Scott Duensing
|
||||
*
|
||||
* http://kangaroopunch.com
|
||||
*
|
||||
*
|
||||
* This file is part of Roo/E.
|
||||
*
|
||||
* Roo/E is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Affero General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* Roo/E is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Roo/E. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef UTIL_H
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue