Got as far as this:
Code:
make --no-print-directory rebuild
MAKECMDGOALS=rebuild
make -f main.mak rebuild
rm -f *.AppImage *.exe *.so *.dll *.o *.obj
cc -fPIE -shared -Wall -Wextra -o alu_bit.o alu_bit.c
cc -fPIE -shared -Wall -Wextra -o alu_main.o alu_main.c
cc -fPIE -shared -Wall -Wextra -o alu_math.o alu_math.c
cc -fPIE -shared -Wall -Wextra -o alu_mem.o alu_mem.c
cc -fPIE -shared -Wall -Wextra -o alu_vec.o alu_vec.c
cc -fPIE -shared -o libalu.so alu_bit.o alu_main.o alu_math.o alu_mem.o alu_vec.o
cc -fPIE -shared -Wall -Wextra -o test.o test.c
cc -fPIE -o alu.AppImage test.o
/usr/bin/ld: test.o: undefined reference to `alu_vec_change'
/usr/bin/ld: test.o: undefined reference to `alu_get_reg'
/usr/bin/ld: test.o: undefined reference to `_alu_shl'
collect2: error: ld returned 1 exit status
make[1]: *** [main.mak:59: alu.AppImage] Error 1
rm libalu.so test.o
make: *** [1st.mak:6: rebuild] Error 2
Compilation failed.
I tried adding rpath but I must be doing something wrong because it never finds it, I tried looking for it myself and the library is not built for some reason despite showing just fine in the above output
Here's a dump of main.mak (the other files are mostly irrelevant)
Code:
include dst_sys.mak
include dst_cc.mak
PRJ:=ALU
ALL_GOALS:=info objects
PRJ_SRC_DIR:=
PRJ_INC_DIR:=
PRJ_LIB_DIR:=/lib
PRJ_BIN_DIR:=/bin
RPATH_FLAG=-Wl,-rpath=./
SRC_FLAGS:=-fPIE -shared -Wall -Wextra
LIB_FLAGS:=-fPIE -shared
BIN_FLAGS:=-fPIE
PRJ_SRC_FILES:=$(wildcard $(PRJ_SRC_DIR)alu*.c)
PRJ_INC_FILES:=$(wildcard $(PRJ_INC_DIR)alu*.h)
PRJ_OBJ_FILES:=$(PRJ_SRC_FILES:%.c=%$(DST_OBJ_SFX))
PRJ_BIN_OBJ_FILES:=test$(DST_OBJ_SFX)
PRJ_LIB_OBJ_FILES:=$(filter-out $(PRJ_BIN_OBJ_FILES),$(PRJ_OBJ_FILES))
PRJ_DST_BIN:=alu$(DST_BIN_SFX)
PRJ_DST_LIB:=$(DST_LIB_PFX)alu$(DST_LIB_SFX)
info: .FORCE
@echo CC=$(CC)
@echo CXX=$(CXX)
@echo COP=$(COP)
@echo PRJ=$(PRJ)
@echo PRJ_DST_BIN=$(PRJ_DST_BIN)
@echo PRJ_DST_LIB=$(PRJ_DST_LIB)
@echo PRJ_SRC_FILES=$(PRJ_SRC_FILES)
@echo PRJ_INC_FILES=$(PRJ_INC_FILES)
@echo PRJ_OBJ_FILES=$(PRJ_OBJ_FILES)
@echo PRJ_BIN_OBJ_FILES=$(PRJ_BIN_OBJ_FILES)
@echo PRJ_LIB_OBJ_FILES=$(PRJ_LIB_OBJ_FILES)
@echo Goals make can process for $(PROJECT):
@echo $(TAB_CHAR) all $(ALL_GOALS)
all: $(ALL_GOALS)
@echo all
clean:
rm -f *.AppImage *.exe *.so *.dll *.o *.obj
run: build
./$(PRJ_DST_BIN)
build: objects $(PRJ_DST_BIN)
objects: $(PRJ_OBJ_FILES)
rebuild: clean build
%.AppImage: lib%.so test.o
$(CC) $(BIN_FLAGS) $(COP)o $@ test.o
%.16.exe: %.16.dll test.16.obj
$(CC) $(BIN_FLAGS) $(COP)o $@ test.16.obj
%.32.exe: %.32.dll test.32.obj
$(CC) $(BIN_FLAGS) $(COP)o $@ test.32.obj
%.64.exe: %.64.dll test.64.obj
$(CC) $(BIN_FLAGS) $(COP)o $@ test.64.obj
lib%.so: $(filter-out test.o,$(wildcard *.o))
$(CC) $(LIB_FLAGS) $(COP)o $@ $^
%.16.dll: $(filter-out test.16.obj,$(wildcard *.16.obj))
$(CC) $(LIB_FLAGS) $(COP)o $@ $^
%.32.dll: $(filter-out test.32.obj,$(wildcard *.32.obj))
$(CC) $(LIB_FLAGS) $(COP)o $@ $^
%.64.dll: $(filter-out test.64.obj,$(wildcard *.64.obj))
$(CC) $(LIB_FLAGS) $(COP)o $@ $^
%.o: %.c
$(CC) $(SRC_FLAGS) $(COP)o $@ $<
%.16.obj: %.c
$(CC) $(SRC_FLAGS) $(COP)o $@ $<
%.32.obj: %.c
$(CC) $(SRC_FLAGS) $(COP)o $@ $<
%.64.obj: %.c
$(CC) $(SRC_FLAGS) $(COP)o $@ $<
.PHONY: all
.FORCE:
Can anyone tell me where I'm going wrong? I attached a zip of my project just in case you need to look elsewhere to find what I'm doing wrong