OVERHAUL: migrate to recursive make, because such way I can establish proper project structure for future make install AND have unclogged makefiles
This commit is contained in:
parent
9bc3007a7f
commit
a39999e134
31 changed files with 151 additions and 64 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -1,3 +1,3 @@
|
|||
.vscode/
|
||||
bin/
|
||||
obj/
|
||||
**/obj/
|
||||
bin/
|
||||
86
Makefile
86
Makefile
|
|
@ -1,76 +1,46 @@
|
|||
INC_DIR = include
|
||||
SRC_DIR = src
|
||||
ROOT_DIR = $(PWD)
|
||||
export ROOT_DIR
|
||||
|
||||
INC_DIR = $(ROOT_DIR)/src
|
||||
SRC_DIR = $(ROOT_DIR)/src
|
||||
BIN_DIR = $(ROOT_DIR)/bin
|
||||
LIB_DIR = $(ROOT_DIR)/bin
|
||||
OBJ_DIR = obj
|
||||
BIN_DIR = bin
|
||||
LIB_DIR = bin
|
||||
|
||||
export INC_DIR
|
||||
export SRC_DIR
|
||||
export BIN_DIR
|
||||
export LIB_DIR
|
||||
export OBJ_DIR
|
||||
|
||||
CC = gcc
|
||||
AS = as
|
||||
AR = ar
|
||||
LD = ld
|
||||
MAKE = gmake
|
||||
PYTHON = python
|
||||
CFLAGS = -Wall -I$(INC_DIR)
|
||||
ASFLAGS =
|
||||
LDFLAGS = -z noexecstack -lcap
|
||||
|
||||
SHARED_OBJ =
|
||||
SHARED_DEPS = $(INC_DIR)/debug.h
|
||||
export CC
|
||||
export AS
|
||||
export AR
|
||||
export LD
|
||||
export MAKE
|
||||
export PYTHON
|
||||
|
||||
RTDISASM_SRC = rtdisasm.c
|
||||
RTDISASM_OBJ := $(addprefix $(OBJ_DIR)/,$(patsubst %.s,%.o,$(patsubst %.c,%.o,$(RTDISASM_SRC)))) $(SHARED_OBJ)
|
||||
RTDISASM_SRC := $(addprefix $(SRC_DIR)/,$(RTDISASM_SRC))
|
||||
RTDISASM_DEPS = rtdisasm.h rtdisasm_table.h
|
||||
RTDISASM_DEPS := $(addprefix $(INC_DIR)/,$(RTDISASM_DEPS)) $(SHARED_DEPS)
|
||||
# order matters here, build libraries first!
|
||||
TARGETS = rtdisasm rtdisasm_test dummy_target blackjack
|
||||
|
||||
RTDISASM_TEST_SRC = rtdisasm_test.c rtdisasm_test_data.s
|
||||
RTDISASM_TEST_OBJ := $(addprefix $(OBJ_DIR)/,$(patsubst %.s,%.o,$(patsubst %.c,%.o,$(RTDISASM_TEST_SRC))))
|
||||
RTDISASM_TEST_SRC := $(addprefix $(SRC_DIR)/,$(RTDISASM_TEST_SRC))
|
||||
RTDISASM_TEST_DEPS =
|
||||
RTDISASM_TEST_DEPS := $(addprefix $(INC_DIR)/,$(RTDISASM_TEST_DEPS)) $(SHARED_DEPS) rtdisasm
|
||||
.PHONY: $(TARGETS) debug clean
|
||||
|
||||
BLACKJACK_SRC = main.c process.c
|
||||
BLACKJACK_OBJ := $(addprefix $(OBJ_DIR)/,$(patsubst %.s,%.o,$(patsubst %.c,%.o,$(BLACKJACK_SRC)))) $(SHARED_OBJ)
|
||||
BLACKJACK_SRC := $(addprefix $(SRC_DIR)/,$(BLACKJACK_SRC))
|
||||
BLACKJACK_DEPS = process.h process_debug.h
|
||||
BLACKJACK_DEPS := $(addprefix $(INC_DIR)/,$(BLACKJACK_DEPS)) rtdisasm $(SHARED_DEPS)
|
||||
|
||||
DUMMY_TARGET_SRC = dummy_target.c dummy_destination.s
|
||||
DUMMY_TARGET_OBJ := $(addprefix $(OBJ_DIR)/,$(patsubst %.s,%.o,$(patsubst %.c,%.o,$(DUMMY_TARGET_SRC))))
|
||||
DUMMY_TARGET_SRC := $(addprefix $(SRC_DIR)/,$(DUMMY_TARGET_SRC))
|
||||
|
||||
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
|
||||
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.s
|
||||
$(AS) $(ASFLAGS) -o $@ $<
|
||||
|
||||
rtdisasm: $(RTDISASM_OBJ) $(RTDISASM_DEPS)
|
||||
$(PYTHON) genc.py xml/raw/x86/Intel/AZ.xml | $(CC) -x c $(CFLAGS) -c -o $(OBJ_DIR)/rtdisasm_table.o -
|
||||
$(AR) -crs $(BIN_DIR)/librtdisasm.a $(RTDISASM_OBJ) $(OBJ_DIR)/rtdisasm_table.o
|
||||
|
||||
$(OBJ_DIR)/rtdisasm_test.o: $(SRC_DIR)/rtdisasm_test.c
|
||||
$(CC) $(CFLAGS) -mavx -c -o $@ $<
|
||||
|
||||
rtdisasm_test: $(RTDISASM_TEST_OBJ) $(RTDISASM_TEST_DEPS)
|
||||
$(CC) $(LDFLAGS) -o $(BIN_DIR)/$@ $(RTDISASM_TEST_OBJ) $(LIB_DIR)/librtdisasm.a
|
||||
|
||||
blackjack: $(BLACKJACK_OBJ) $(BLACKJACK_DEPS)
|
||||
$(CC) $(LDFLAGS) -o $(BIN_DIR)/$@ $(BLACKJACK_OBJ) $(LIB_DIR)/librtdisasm.a
|
||||
|
||||
dummy_target: $(DUMMY_TARGET_OBJ)
|
||||
$(CC) $(LDFLAGS) -o $(BIN_DIR)/$@ $(DUMMY_TARGET_OBJ)
|
||||
|
||||
.PHONY: all clean debug
|
||||
|
||||
TARGETS = blackjack dummy_target rtdisasm_test
|
||||
|
||||
all: $(TARGETS)
|
||||
all:
|
||||
for target in $(TARGETS); do $(MAKE) -C src/$$target; done
|
||||
|
||||
debug: CFLAGS += -DDEBUG -g
|
||||
debug: LDFLAGS += -g
|
||||
debug: ASFLAGS += -g
|
||||
debug: $(TARGETS)
|
||||
debug:
|
||||
for target in $(TARGETS); do $(MAKE) -C src/$$target debug; done
|
||||
|
||||
clean:
|
||||
rm -f $(OBJ_DIR)/*.o
|
||||
for target in $(TARGETS); do $(MAKE) -C src/$$target clean; done
|
||||
rm -f $(BIN_DIR)/*
|
||||
30
src/blackjack/Makefile
Normal file
30
src/blackjack/Makefile
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
NAME = blackjack
|
||||
|
||||
CFLAGS = -Wall -I$(INC_DIR)
|
||||
ASFLAGS =
|
||||
LDFLAGS = -z noexecstack -lcap
|
||||
|
||||
SRC = main.c process.c
|
||||
OBJ := $(addprefix $(OBJ_DIR)/,$(patsubst %.s,%.o,$(patsubst %.c,%.o,$(SRC))))
|
||||
DEPS = process.h process_debug.h
|
||||
|
||||
$(OBJ_DIR)/%.o: %.c
|
||||
@mkdir -p $(OBJ_DIR)
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
|
||||
$(OBJ_DIR)/%.o: %.s
|
||||
@mkdir -p $(OBJ_DIR)
|
||||
$(AS) $(ASFLAGS) -o $@ $<
|
||||
|
||||
.PHONY: all clean debug
|
||||
|
||||
all: $(OBJ) $(DEPS)
|
||||
$(CC) $(LDFLAGS) -o $(BIN_DIR)/$(NAME) $(OBJ)
|
||||
|
||||
debug: CFLAGS += -DDEBUG -g
|
||||
debug: LDFLAGS += -g
|
||||
debug: ASFLAGS += -g
|
||||
debug: all
|
||||
|
||||
clean:
|
||||
rm -f $(OBJ_DIR)/*
|
||||
30
src/dummy_target/Makefile
Normal file
30
src/dummy_target/Makefile
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
NAME = dummy_target
|
||||
|
||||
CFLAGS = -Wall -I$(INC_DIR)
|
||||
ASFLAGS =
|
||||
LDFLAGS = -z noexecstack -lcap
|
||||
|
||||
SRC = dummy_target.c dummy_destination.s
|
||||
OBJ := $(addprefix $(OBJ_DIR)/,$(patsubst %.s,%.o,$(patsubst %.c,%.o,$(SRC))))
|
||||
DEPS =
|
||||
|
||||
$(OBJ_DIR)/%.o: %.c
|
||||
@mkdir -p $(OBJ_DIR)
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
|
||||
$(OBJ_DIR)/%.o: %.s
|
||||
@mkdir -p $(OBJ_DIR)
|
||||
$(AS) $(ASFLAGS) -o $@ $<
|
||||
|
||||
.PHONY: all clean debug
|
||||
|
||||
all: $(OBJ) $(DEPS)
|
||||
$(CC) $(LDFLAGS) -o $(BIN_DIR)/$(NAME) $(OBJ)
|
||||
|
||||
debug: CFLAGS += -DDEBUG -g
|
||||
debug: LDFLAGS += -g
|
||||
debug: ASFLAGS += -g
|
||||
debug: all
|
||||
|
||||
clean:
|
||||
rm -f $(OBJ_DIR)/*
|
||||
27
src/rtdisasm/Makefile
Normal file
27
src/rtdisasm/Makefile
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
NAME = rtdisasm
|
||||
|
||||
CFLAGS = -Wall -I$(INC_DIR)
|
||||
ASFLAGS =
|
||||
LDFLAGS = -z noexecstack -lcap
|
||||
|
||||
SRC = rtdisasm.c
|
||||
OBJ := $(addprefix $(OBJ_DIR)/,$(patsubst %.s,%.o,$(patsubst %.c,%.o,$(SRC))))
|
||||
DEPS = rtdisasm.h rtdisasm_table.h
|
||||
|
||||
$(OBJ_DIR)/%.o: %.c
|
||||
@mkdir -p $(OBJ_DIR)
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
|
||||
.PHONY: all clean debug
|
||||
|
||||
all: $(OBJ) $(DEPS)
|
||||
$(PYTHON) genc.py xml/raw/x86/Intel/AZ.xml | $(CC) -x c $(CFLAGS) -c -o $(OBJ_DIR)/rtdisasm_table.o -
|
||||
$(AR) -crs $(BIN_DIR)/librtdisasm.a $(OBJ) $(OBJ_DIR)/rtdisasm_table.o
|
||||
|
||||
debug: CFLAGS += -DDEBUG -g
|
||||
debug: LDFLAGS += -g
|
||||
debug: ASFLAGS += -g
|
||||
debug: all
|
||||
|
||||
clean:
|
||||
rm -f $(OBJ_DIR)/*
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
#include "rtdisasm.h"
|
||||
#include "rtdisasm_table.h"
|
||||
#include "debug.h"
|
||||
#include "rtdisasm/rtdisasm.h"
|
||||
#include "rtdisasm/rtdisasm_table.h"
|
||||
#include "blackjack/debug.h"
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
30
src/rtdisasm_test/Makefile
Normal file
30
src/rtdisasm_test/Makefile
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
NAME = rtdisasm_test
|
||||
|
||||
CFLAGS = -Wall -mavx -I$(INC_DIR)
|
||||
ASFLAGS =
|
||||
LDFLAGS = -z noexecstack -lcap
|
||||
|
||||
SRC = rtdisasm_test.c rtdisasm_test_data.s
|
||||
OBJ := $(addprefix $(OBJ_DIR)/,$(patsubst %.s,%.o,$(patsubst %.c,%.o,$(SRC))))
|
||||
DEPS =
|
||||
|
||||
$(OBJ_DIR)/%.o: %.c
|
||||
@mkdir -p $(OBJ_DIR)
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
|
||||
$(OBJ_DIR)/%.o: %.s
|
||||
@mkdir -p $(OBJ_DIR)
|
||||
$(AS) $(ASFLAGS) -o $@ $<
|
||||
|
||||
.PHONY: all clean debug
|
||||
|
||||
all: $(OBJ) $(DEPS)
|
||||
$(CC) $(LDFLAGS) -o $(BIN_DIR)/$(NAME) $(OBJ) $(LIB_DIR)/librtdisasm.a
|
||||
|
||||
debug: CFLAGS += -DDEBUG -g
|
||||
debug: LDFLAGS += -g
|
||||
debug: ASFLAGS += -g
|
||||
debug: all
|
||||
|
||||
clean:
|
||||
rm -f $(OBJ_DIR)/*
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
#include "rtdisasm.h"
|
||||
#include "rtdisasm/rtdisasm.h"
|
||||
#include <immintrin.h>
|
||||
#include <stdio.h>
|
||||
|
||||
Loading…
Add table
Reference in a new issue