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
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -1,3 +1,3 @@
|
||||||
.vscode/
|
.vscode/
|
||||||
|
**/obj/
|
||||||
bin/
|
bin/
|
||||||
obj/
|
|
||||||
86
Makefile
86
Makefile
|
|
@ -1,76 +1,46 @@
|
||||||
INC_DIR = include
|
ROOT_DIR = $(PWD)
|
||||||
SRC_DIR = src
|
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
|
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
|
CC = gcc
|
||||||
AS = as
|
AS = as
|
||||||
AR = ar
|
AR = ar
|
||||||
LD = ld
|
LD = ld
|
||||||
|
MAKE = gmake
|
||||||
PYTHON = python
|
PYTHON = python
|
||||||
CFLAGS = -Wall -I$(INC_DIR)
|
|
||||||
ASFLAGS =
|
|
||||||
LDFLAGS = -z noexecstack -lcap
|
|
||||||
|
|
||||||
SHARED_OBJ =
|
export CC
|
||||||
SHARED_DEPS = $(INC_DIR)/debug.h
|
export AS
|
||||||
|
export AR
|
||||||
|
export LD
|
||||||
|
export MAKE
|
||||||
|
export PYTHON
|
||||||
|
|
||||||
RTDISASM_SRC = rtdisasm.c
|
# order matters here, build libraries first!
|
||||||
RTDISASM_OBJ := $(addprefix $(OBJ_DIR)/,$(patsubst %.s,%.o,$(patsubst %.c,%.o,$(RTDISASM_SRC)))) $(SHARED_OBJ)
|
TARGETS = rtdisasm rtdisasm_test dummy_target blackjack
|
||||||
RTDISASM_SRC := $(addprefix $(SRC_DIR)/,$(RTDISASM_SRC))
|
|
||||||
RTDISASM_DEPS = rtdisasm.h rtdisasm_table.h
|
|
||||||
RTDISASM_DEPS := $(addprefix $(INC_DIR)/,$(RTDISASM_DEPS)) $(SHARED_DEPS)
|
|
||||||
|
|
||||||
RTDISASM_TEST_SRC = rtdisasm_test.c rtdisasm_test_data.s
|
.PHONY: $(TARGETS) debug clean
|
||||||
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
|
|
||||||
|
|
||||||
BLACKJACK_SRC = main.c process.c
|
all:
|
||||||
BLACKJACK_OBJ := $(addprefix $(OBJ_DIR)/,$(patsubst %.s,%.o,$(patsubst %.c,%.o,$(BLACKJACK_SRC)))) $(SHARED_OBJ)
|
for target in $(TARGETS); do $(MAKE) -C src/$$target; done
|
||||||
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)
|
|
||||||
|
|
||||||
debug: CFLAGS += -DDEBUG -g
|
debug: CFLAGS += -DDEBUG -g
|
||||||
debug: LDFLAGS += -g
|
debug: LDFLAGS += -g
|
||||||
debug: ASFLAGS += -g
|
debug: ASFLAGS += -g
|
||||||
debug: $(TARGETS)
|
debug:
|
||||||
|
for target in $(TARGETS); do $(MAKE) -C src/$$target debug; done
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(OBJ_DIR)/*.o
|
for target in $(TARGETS); do $(MAKE) -C src/$$target clean; done
|
||||||
rm -f $(BIN_DIR)/*
|
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/rtdisasm.h"
|
||||||
#include "rtdisasm_table.h"
|
#include "rtdisasm/rtdisasm_table.h"
|
||||||
#include "debug.h"
|
#include "blackjack/debug.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.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 <immintrin.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
Loading…
Add table
Reference in a new issue