Added separate Makefiles for the library and the "main" program.
This commit is contained in:
parent
caef45b177
commit
6739fcbf01
33
Makefile
33
Makefile
@ -1,34 +1,9 @@
|
||||
DUMPMACHINE := $(shell $(CC) -dumpmachine)
|
||||
|
||||
ifneq ($(firstword $(filter x86_64-%,$(DUMPMACHINE))),)
|
||||
XCFLAGS = -march=x86-64 -mtune=nocona
|
||||
else ifneq ($(firstword $(filter i686-%,$(DUMPMACHINE))),)
|
||||
XCFLAGS = -march=pentiumpro -mtune=intel
|
||||
endif
|
||||
|
||||
CFLAGS = -O3 -DNDEBUG -Ilibhashset/include $(XCFLAGS)
|
||||
|
||||
BASE_DIR := libhashset
|
||||
|
||||
SRC_PATH := $(BASE_DIR)/src
|
||||
OBJ_PATH := $(BASE_DIR)/obj
|
||||
LIB_PATH := $(BASE_DIR)/lib
|
||||
|
||||
LIB_FILE := $(LIB_PATH)/libhashset-1.a
|
||||
OBJ_FILE := $(OBJ_PATH)/hash_set.o
|
||||
SUBDIRS := libhashset hashset
|
||||
|
||||
.PHONY: all clean
|
||||
|
||||
all: $(LIB_FILE)
|
||||
|
||||
$(LIB_FILE): $(OBJ_FILE) $(LIB_PATH)
|
||||
$(AR) rcs $@ $<
|
||||
|
||||
$(OBJ_FILE): $(SRC_PATH) $(OBJ_PATH)
|
||||
$(CC) $(CFLAGS) -c $(SRC_PATH)/$(patsubst %.o,%.c,$(notdir $@)) -o $@
|
||||
|
||||
$(SRC_PATH) $(OBJ_PATH) $(LIB_PATH):
|
||||
mkdir -p $@
|
||||
all:
|
||||
for subdir in $(SUBDIRS); do $(MAKE) -C $$subdir; done
|
||||
|
||||
clean:
|
||||
rm -f $(LIB_FILE) $(OBJ_PATH)/*.o
|
||||
for subdir in $(SUBDIRS); do $(MAKE) -C $$subdir clean; done
|
||||
|
36
hashset/Makefile
Normal file
36
hashset/Makefile
Normal file
@ -0,0 +1,36 @@
|
||||
DUMPMACHINE := $(shell $(CC) -dumpmachine)
|
||||
|
||||
ifneq ($(firstword $(filter x86_64-%,$(DUMPMACHINE))),)
|
||||
XCFLAGS = -march=x86-64 -mtune=nocona -s
|
||||
else ifneq ($(firstword $(filter i686-%,$(DUMPMACHINE))),)
|
||||
XCFLAGS = -march=pentiumpro -mtune=intel -s
|
||||
endif
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
ifneq ($(firstword $(filter i686-%,$(DUMPMACHINE))),)
|
||||
XCFLAGS += -Wl,--large-address-aware
|
||||
endif
|
||||
EXE_SUFFIX := .exe
|
||||
endif
|
||||
|
||||
CFLAGS = -O3 -DNDEBUG -I../libhashset/include $(XCFLAGS)
|
||||
|
||||
SRC_PATH := src
|
||||
BIN_PATH := bin
|
||||
|
||||
BIN_FILE := $(BIN_PATH)/hashset$(EXE_SUFFIX)
|
||||
SRC_FILE := $(SRC_PATH)/main.c
|
||||
LIB_FILE := ../libhashset/lib/libhashset-1.a
|
||||
|
||||
.PHONY: all clean
|
||||
|
||||
all: $(BIN_FILE)
|
||||
|
||||
$(BIN_FILE): $(SRC_FILE) $(LIB_FILE) $(BIN_PATH)
|
||||
$(CC) $(CFLAGS) $< -o $@ $(LIB_FILE)
|
||||
|
||||
$(SRC_PATH) $(BIN_PATH):
|
||||
mkdir -p $@
|
||||
|
||||
clean:
|
||||
rm -f $(BIN_FILE)
|
32
libhashset/Makefile
Normal file
32
libhashset/Makefile
Normal file
@ -0,0 +1,32 @@
|
||||
DUMPMACHINE := $(shell $(CC) -dumpmachine)
|
||||
|
||||
ifneq ($(firstword $(filter x86_64-%,$(DUMPMACHINE))),)
|
||||
XCFLAGS = -march=x86-64 -mtune=nocona
|
||||
else ifneq ($(firstword $(filter i686-%,$(DUMPMACHINE))),)
|
||||
XCFLAGS = -march=pentiumpro -mtune=intel
|
||||
endif
|
||||
|
||||
CFLAGS = -O3 -DNDEBUG -Iinclude $(XCFLAGS)
|
||||
|
||||
SRC_PATH := src
|
||||
OBJ_PATH := obj
|
||||
LIB_PATH := lib
|
||||
|
||||
LIB_FILE := $(LIB_PATH)/libhashset-1.a
|
||||
OBJ_FILE := $(OBJ_PATH)/hash_set.o
|
||||
|
||||
.PHONY: all clean
|
||||
|
||||
all: $(LIB_FILE)
|
||||
|
||||
$(LIB_FILE): $(OBJ_FILE) $(LIB_PATH)
|
||||
$(AR) rcs $@ $<
|
||||
|
||||
$(OBJ_FILE): $(SRC_PATH) $(OBJ_PATH)
|
||||
$(CC) $(CFLAGS) -c $(SRC_PATH)/$(patsubst %.o,%.c,$(notdir $@)) -o $@
|
||||
|
||||
$(SRC_PATH) $(OBJ_PATH) $(LIB_PATH):
|
||||
mkdir -p $@
|
||||
|
||||
clean:
|
||||
rm -f $(LIB_FILE) $(OBJ_PATH)/*.o
|
Loading…
Reference in New Issue
Block a user