horror/thirdparty/ode-0.16.5/ou/build/make/makefile

220 lines
3.6 KiB
Makefile
Raw Permalink Normal View History

2024-06-10 17:48:14 +08:00
PRODUCTNAME = ou
MODE ?= DEVELOP
BITS ?= 32
include makefile.os
CXX = gcc
AR = ar
LD = gcc
CXXFLAGS = -fno-exceptions -fno-rtti -Wall -g
ARFLAGS = -r
LDFLAGS = -fno-exceptions -fno-rtti -g
ifeq ($(OS_PLATFORM), i386)
ifneq ($(BITS), 64)
CXXFLAGS += -malign-double
endif
endif
ifeq ($(MODE), DEBUG)
CXXFLAGS += -D_DEBUG
CXXFLAGS += -O0
else
ifeq ($(MODE), RELEASE)
CXXFLAGS += -DNDEBUG
CXXFLAGS += -O3 -funroll-loops
else
CXXFLAGS += -O2
endif
endif
ifeq ($(BITS), 64)
CXXFLAGS += -m64
LDFLAGS += -m64
else
CXXFLAGS += -m32
LDFLAGS += -m32
endif
SRCEXT=.cpp
OBJEXT=$(OS_OBJ_EXT)
OUTNAME := $(PRODUCTNAME)
OUTDIR = ../../lib/
OUTEXT=$(OS_LIB_EXT)
TESTNAME := $(PRODUCTNAME)test
TESTDIR = ../../bin/
TESTEXT=$(OS_EXE_EXT)
REFINEDCXX = $(notdir $(CXX))
OUTINTDIR := ../../intermediate/$(REFINEDCXX)/
TESTINTDIR := ../../intermediate/$(REFINEDCXX)_$(TESTNAME)/
ifeq ($(MODE), DEBUG)
OUTINTDIR := $(OUTINTDIR)debug
TESTINTDIR := $(TESTINTDIR)debug
else
ifeq ($(MODE), RELEASE)
OUTINTDIR := $(OUTINTDIR)release
TESTINTDIR := $(TESTINTDIR)release
else
OUTINTDIR := $(OUTINTDIR)develop
TESTINTDIR := $(TESTINTDIR)develop
endif
endif
ifeq ($(BITS), 64)
OUTINTDIR := $(OUTINTDIR)64
TESTINTDIR := $(TESTINTDIR)64
OUTNAME := $(OUTNAME)64
TESTNAME := $(TESTNAME)64
endif
ifeq ($(MODE), DEBUG)
OUTNAME := $(OUTNAME)_debug
TESTNAME := $(TESTNAME)_debug
endif
ifeq ($(MODE), RELEASE)
OUTNAME := $(OUTNAME)_release
TESTNAME := $(TESTNAME)_release
endif
OUTINTDIR := $(OUTINTDIR)/
TESTINTDIR := $(TESTINTDIR)/
OUTPATH = $(OUTDIR)$(OS_LIB_PRE)$(OUTNAME)$(OUTEXT)
TESTPATH = $(TESTDIR)$(TESTNAME)$(TESTEXT)
ININCDIR = ../../include
INDIR = ../../src/ou/
INFILES = \
atomic \
customization \
malloc \
threadlocalstorage
INOBJS = $(addprefix $(OUTINTDIR), $(addsuffix $(OBJEXT), $(INFILES)))
TESTINCDIR = $(ININCDIR)
TESTLIBDIR = $(OUTDIR)
TESTLIBS = $(OUTNAME)
TESTSRCDIR = ../../test/
ifeq ($(OS_TYPE), Linux)
TESTLIBS += pthread
endif
ifeq ($(OS_TYPE), SUN)
TESTLIBS += pthread c
endif
TESTFILES = outest
TESTOBJS = $(addprefix $(TESTINTDIR), $(addsuffix $(OBJEXT), $(TESTFILES)))
.PHONY: develop debug release develop64 debug64 release64 all ou
all: develop
develop:
$(MAKE) ou MODE=DEVELOP BITS=32
debug:
$(MAKE) ou MODE=DEBUG BITS=32
release:
$(MAKE) ou MODE=RELEASE BITS=32
develop64:
$(MAKE) ou MODE=DEVELOP BITS=64
debug64:
$(MAKE) ou MODE=DEBUG BITS=64
release64:
$(MAKE) ou MODE=RELEASE BITS=64
ou: $(OUTPATH) $(TESTPATH)
.PHONY: mkoutintpath mkoutpath mktestintpath mktestpath
$(OUTPATH): mkoutintpath mkoutpath $(INOBJS)
$(OS_VP)echo BUILDING $(notdir $(OUTPATH))...
$(OS_VP)$(AR) $(ARFLAGS) $(OUTPATH) $(INOBJS)
$(TESTPATH): mktestintpath mktestpath $(OUTPATH) $(TESTOBJS)
$(OS_VP)echo LINKING $(notdir $(TESTPATH))...
$(OS_VP)$(LD) $(LDFLAGS) $(LDADDFLAGS) -o $(TESTPATH) \
$(addprefix -I, $(TESTINCDIR) $(OS_INCLUDE_PATH)) \
$(addprefix -L, $(TESTLIBDIR) $(OS_LIB_PATH)) \
$(TESTOBJS) \
$(addprefix -l, $(TESTLIBS))
$(OUTINTDIR)%$(OBJEXT): $(INDIR)%$(SRCEXT)
$(OS_VP)echo Compiling $(notdir $@)...
$(OS_VP)$(CXX) $(CXXFLAGS) $(CXXADDFLAGS) -c -o $@ \
$(addprefix -I, $(ININCDIR) $(OS_INCLUDE_PATH)) \
$<
$(TESTINTDIR)%$(OBJEXT): $(TESTSRCDIR)%$(SRCEXT)
$(OS_VP)echo Compiling $(notdir $@)...
$(OS_VP)$(CXX) $(CXXFLAGS) $(CXXADDFLAGS) -c -o $@ \
$(addprefix -I, $(TESTINCDIR) $(OS_INCLUDE_PATH)) \
$<
mkoutintpath:
$(call FN_MKDIR, $(OUTINTDIR))
mktestintpath:
$(call FN_MKDIR, $(TESTINTDIR))
mkoutpath:
$(call FN_MKDIR, $(OUTDIR))
mktestpath:
$(call FN_MKDIR, $(TESTDIR))
.PHONY: runtest
runtest: $(TESTPATH)
$(TESTPATH)