This repository has been archived on 2026-07-19. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
acquire-core-migration/legacy/Makefile
forge-bot ff0b0b60a2
Some checks failed
ci / build (push) Failing after 2s
chore: acquire-core migration monorepo (legacy C + Spring Boot target skeleton)
TxCore/ECPG legacy 매입·정산 C 슬라이스(빌드검증) + Spring Boot 멀티모듈 골격(mvn test green) + MIGRATION.md 전환룰 + CI(boot 빌드).
2026-07-18 09:55:46 +00:00

120 lines
4.2 KiB
Makefile

# ==========================================================================
# acquire-core / TxCore Makefile
#
# .pgc --ecpg--> .c --gcc--> .o --ld--> 실행파일
#
# 산출물:
# build/libtxcore.a TxCore 공통 프레임워크 정적 라이브러리
# bin/acquire-core-server 온라인 서비스 등록 데모 (링크 검증)
# bin/rc_match_batch 승인-매입 대사 배치
# ==========================================================================
CC := gcc
ECPG := ecpg
AR := ar
PG_INCDIR := $(shell pg_config --includedir 2>/dev/null)
# 헤더 검색 경로 (프레임워크 + 업무 + PostgreSQL/ecpglib/sqlca)
INCLUDES := -Iframework/txcore/include \
-Iframework/txcore/dbio \
-Iapp/include \
-I$(PG_INCDIR)
# 고정길이 필드 strncpy/snprintf 는 의도된 관용구이므로 해당 경고만 억제
CFLAGS := -g -O2 -Wall -Wextra -Wno-unused-parameter \
-Wno-stringop-truncation -Wno-format-truncation $(INCLUDES)
# ecpg 는 자체 전처리기이므로 -I 로 EXEC SQL INCLUDE 및 헤더 경로를 제공
ECPGFLAGS := -Iframework/txcore/include -Iframework/txcore/dbio -Iapp/include
LDLIBS := -lecpg -lpq
BUILD := build
BIN := bin
# ---- 소스 목록 ------------------------------------------------------------
TXCORE_SRC := framework/txcore/src/txcore.c
COMMON_SRC := app/common/util_date.c \
app/common/util_amount.c \
app/common/util_msg.c
# ECPG 전처리 대상
DBIO_PGC := app/dbio/purchase_dbio.pgc
SVC_PGC := app/online/mg_recv_svc.pgc \
app/online/ac_intake_svc.pgc
BATCH_PGC := app/batch/rc_match_batch.pgc
# .pgc -> 생성 .c
DBIO_GEN := $(DBIO_PGC:.pgc=.c)
SVC_GEN := $(SVC_PGC:.pgc=.c)
BATCH_GEN := $(BATCH_PGC:.pgc=.c)
# ---- 오브젝트 -------------------------------------------------------------
TXCORE_OBJ := $(BUILD)/txcore.o
COMMON_OBJ := $(patsubst app/common/%.c,$(BUILD)/%.o,$(COMMON_SRC))
DBIO_OBJ := $(BUILD)/purchase_dbio.o
SVC_OBJ := $(BUILD)/mg_recv_svc.o $(BUILD)/ac_intake_svc.o
SERVER_OBJ := $(BUILD)/server_main.o
BATCH_OBJ := $(BUILD)/rc_match_batch.o
LIBTXCORE := $(BUILD)/libtxcore.a
SERVER_BIN := $(BIN)/acquire-core-server
BATCH_BIN := $(BIN)/rc_match_batch
# ==========================================================================
.PHONY: all clean dirs gen
all: dirs $(LIBTXCORE) $(SERVER_BIN) $(BATCH_BIN)
@echo "==> 빌드 완료"
@ls -la $(LIBTXCORE) $(SERVER_BIN) $(BATCH_BIN)
dirs:
@mkdir -p $(BUILD) $(BIN)
# ---- ecpg: .pgc -> .c -----------------------------------------------------
%.c: %.pgc
$(ECPG) $(ECPGFLAGS) -o $@ $<
gen: $(DBIO_GEN) $(SVC_GEN) $(BATCH_GEN)
# ---- TxCore 정적 라이브러리 ----------------------------------------------
$(TXCORE_OBJ): $(TXCORE_SRC)
$(CC) $(CFLAGS) -c $< -o $@
$(LIBTXCORE): $(TXCORE_OBJ)
$(AR) rcs $@ $^
# ---- 공통 유틸 오브젝트 ---------------------------------------------------
$(BUILD)/%.o: app/common/%.c
$(CC) $(CFLAGS) -c $< -o $@
# ---- ECPG 생성 .c 컴파일 --------------------------------------------------
$(DBIO_OBJ): $(DBIO_GEN)
$(CC) $(CFLAGS) -c $< -o $@
$(BUILD)/mg_recv_svc.o: app/online/mg_recv_svc.c
$(CC) $(CFLAGS) -c $< -o $@
$(BUILD)/ac_intake_svc.o: app/online/ac_intake_svc.c
$(CC) $(CFLAGS) -c $< -o $@
$(BATCH_OBJ): $(BATCH_GEN)
$(CC) $(CFLAGS) -c $< -o $@
# ---- server_main (plain C) ------------------------------------------------
$(SERVER_OBJ): app/online/server_main.c
$(CC) $(CFLAGS) -c $< -o $@
# ---- 링크 -----------------------------------------------------------------
# 온라인 서버: 서비스들 + 공통 + DBIO + TxCore
$(SERVER_BIN): $(SERVER_OBJ) $(SVC_OBJ) $(DBIO_OBJ) $(COMMON_OBJ) $(LIBTXCORE)
$(CC) $(CFLAGS) -o $@ $(SERVER_OBJ) $(SVC_OBJ) $(DBIO_OBJ) $(COMMON_OBJ) \
-L$(BUILD) -ltxcore $(LDLIBS)
# 배치: 배치 + DBIO + 공통 + TxCore
$(BATCH_BIN): $(BATCH_OBJ) $(DBIO_OBJ) $(COMMON_OBJ) $(LIBTXCORE)
$(CC) $(CFLAGS) -o $@ $(BATCH_OBJ) $(DBIO_OBJ) $(COMMON_OBJ) \
-L$(BUILD) -ltxcore $(LDLIBS)
# ==========================================================================
clean:
rm -rf $(BUILD) $(BIN)
rm -f $(DBIO_GEN) $(SVC_GEN) $(BATCH_GEN)