clab/Makefile
2025-01-02 17:54:37 +00:00

96 lines
3 KiB
Makefile

include make/defs/makefile.def
include make/utils.mk
make: c-x86-debug cpp-x86-debug c-x86-release cpp-x86-release go gosilly make-so
make-so:${SO_DIR}/*.c
@mkdir -p ${LIB_DIR}
@for file in $? ; do \
path=$$(echo "$$file" | cut -f 2 -d '/'); \
out=$$(echo "$$path" | cut -f 1 -d '.'); \
${CC} ${CFLAG_LIB} $$file -o ${LIB_DIR}/$$out.o;\
${CC} -shared -o ${LIB_DIR}/$$out.so ${LIB_DIR}/$$out.o -ldl; \
done
gosilly: libsilly.so silly.o
CGO_CFLAGS=${CGO_CFGLAGS_DYN} \
CGO_LDFLAGS=${CGO_LDFLAGS_DYN} \
${GO} build -o ${BIN_DIR}/silly.go golangc/silly.go
.PHONY: libsilly.so
libsilly.so: silly.o
@rm -f ${BIN_DIR}/libsilly.so
@mkdir -p ${LIB_DIR}
${CC} -shared -o ${LIB_DIR}/libsilly.so ${BIN_DIR}/silly.o
@ln -s ../${LIB_DIR}/libsilly.so ${BIN_DIR}/libsilly.so
.PHONY: silly.o
silly.o: golangc/silly.c
@mkdir -p ${BIN_DIR}
${CC} ${CFLAG_LIB} $? -o ${BIN_DIR}/silly.o
c-x86-debug:${C_LANG_DIR}/*.c
@mkdir -p ${BIN_DIR}
@for file in $? ; do \
path=$$(echo "$$file" | cut -f 2 -d '/'); \
out=$$(echo "$$path" | cut -f 1 -d '.'); \
echo ${CC} ${CFLAG_DEBUG} -o ${BIN_DIR}/$$out.c.debug.${ARCH_X86} $$file; \
${CC} ${CFLAG_DEBUG} -o ${BIN_DIR}/$$out.c.debug.${ARCH_X86} $$file -lpthread;\
done
cpp-x86-debug:${CPP_LANG_DIR}/*.cpp
@mkdir -p ${BIN_DIR}
@for file in $? ; do \
path=$$(echo "$$file" | cut -f 2 -d '/'); \
out=$$(echo "$$path" | cut -f 1 -d '.'); \
echo ${CPP} ${CFLAG_DEBUG} -o ${BIN_DIR}/$$out.cpp.debug.${ARCH_X86} $$file; \
${CPP} ${CFLAG_DEBUG} -o ${BIN_DIR}/$$out.cpp.debug.${ARCH_X86} $$file; \
done
c-x86-release:${C_LANG_DIR}/*.c
@mkdir -p ${BIN_DIR}
@for file in $? ; do \
path=$$(echo "$$file" | cut -f 2 -d '/'); \
out=$$(echo "$$path" | cut -f 1 -d '.'); \
echo ${CC} ${CFLAG_RELEASE} -o ${BIN_DIR}/$$out.c.release.${ARCH_X86} $$file; \
${CC} ${CFLAG_RELEASE} -o ${BIN_DIR}/$$out.c.release.${ARCH_X86} $$file; \
done
cpp-x86-release:${CPP_LANG_DIR}/*.cpp
@mkdir -p ${BIN_DIR}
@for file in $? ; do \
path=$$(echo "$$file" | cut -f 2 -d '/'); \
out=$$(echo "$$path" | cut -f 1 -d '.'); \
echo ${CPP} ${CFLAG_RELEASE} -o ${BIN_DIR}/$$out.cpp.release.${ARCH_X86} $$file; \
${CPP} ${CFLAG_RELEASE} -o ${BIN_DIR}/$$out.cpp.release.${ARCH_X86} $$file; \
done
go:${GO_LANG_DIR}/*.go
@mkdir -p ${BIN_DIR}
@for file in $? ; do \
path=$$(echo "$$file" | cut -f 2 -d '/'); \
echo ${GO} build ${GO_FLAGS} -o ${BIN_DIR}/$$path $$file; \
${GO} build ${GO_FLAGS} -o ${BIN_DIR}/$$path $$file; \
done
c-arm:${C_LANG_DIR}/*.c
@mkdir -p ${BIN_DIR}
@for file in $? ; do \
path=$$(echo "$$file" | cut -f 2 -d '/'); \
out=$$(echo "$$path" | cut -f 1 -d '.'); \
echo ${CC} ${CFLAG} -o ${BIN_DIR}/$$out.c.${ARCH} $$file; \
${CC_ARM} ${ARM_CFLAG} -o ${BIN_DIR}/$$out.c.${ARCH_ARM} $$file; \
done
c-asm-x86:
@mkdir -p ${ASM_X86_OUT}
${CC} ${ASM_C_FLAGS} ${C_LANG_DIR}/*.c
@mv *.s ${ASM_X86_OUT}
c-asm-arm:
@mkdir -p ${ASM_ARM_OUT}
${CC_ARM} ${ASM_ARM_C_FLAGS} ${C_LANG_DIR}/*.c
@mv *.s ${ASM_ARM_OUT}
clean:
@rm -rf ${BIN_DIR} ${ASM_ARM_OUT} ${ASM_X86_OUT} ${LIB_DIR}