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