# _ _ _ # /_\ __| (_)_ __ ___ # / _ \/ _` | | ' \/ -_) # /_/ \_\__,_|_|_|_|_\___| # # makefile.qnx: # Makefile for the Adime library with QNX. Should not be used directly! # # By Peter Wang and Eric Botcazou. # # See readme.txt for more information about Adime. # # See makefile.all for a list of the available targets. # -------- Define some variables that the primary makefile may use. -------- PLATFORM = QNX # build only the statically linked library (like Allegro) ifndef STATICLINK STATICLINK = 1 endif EXE_SUFFIX = OBJ_SUFFIX = .o LIB_SUFFIX = .a HTML_SUFFIX = .html INFO_SUFFIX = .info TEXI_SUFFIX = .texi _TX_HTML_FLAG = -html _TX_TEXI_FLAG = -texi ifndef OBJ_ROOT_DIR OBJ_ROOT_DIR = obj endif OBJ_PLATFORM_ROOT_DIR = $(OBJ_ROOT_DIR)/qnx ifndef LIB_ROOT_DIR LIB_ROOT_DIR = lib endif LIB_DIR = $(LIB_ROOT_DIR)/qnx ifdef STATICLINK # link as a static library OBJ_DIR = $(OBJ_PLATFORM_ROOT_DIR)/$(PACKAGE5)_s IMPLIB_BASENAME = lib$(PACKAGE5)_s.a IMPLIB_NAME = $(LIB_DIR)/$(IMPLIB_BASENAME) LIB_NAME = $(IMPLIB_NAME) else # link as a shared object OBJ_DIR = $(OBJ_PLATFORM_ROOT_DIR)/$(PACKAGE5) IMPLIB_BASENAME = lib$(PACKAGE5).so IMPLIB_NAME = $(LIB_DIR)/$(IMPLIB_BASENAME) LIB_NAME = $(IMPLIB_NAME) endif # -------- Default system paths. ------------ SYSTEM_DIR = /usr SYSTEM_INCLUDE_DIR = $(SYSTEM_DIR)/include SYSTEM_LIB_DIR = $(SYSTEM_DIR)/lib # -------- Find Allegro and makedoc. -------- ifndef NEED_ALLEGRO ifdef NEED_MAKEDOC NEED_ALLEGRO = 1 endif endif ifdef NEED_ALLEGRO ifndef ALLEGRO define BADALLEGRO ERROR: Could not find Allegro! Is your ALLEGRO environment variable set correctly? It should point to the place where Allegro lives, e.g. /home/me/allegro. Run make ALLEGRO=/home/me/allegro (or whatever the location of Allegro is). See also readme.txt endef $(error $(BADALLEGRO)) endif ALLEGRODIR = $(subst \,/,$(ALLEGRO)) endif # ifdef NEED_ALLEGRO ifdef NEED_MAKEDOC include misc/makefile.doc endif # -------- Decide what compiler options and libraries to use. -------- ifdef WARNMODE WFLAGS = -Wall -W -Werror -Wno-unused else WFLAGS = -Wall -Wno-unused endif ifdef PGCC OFLAGS = -mcpu=pentium -O6 -ffast-math else ifdef PENTIUMONLY OFLAGS = -march=pentium -O2 -funroll-loops -ffast-math else OFLAGS = -mcpu=pentium -O2 -funroll-loops -ffast-math endif endif ifdef DEBUGMODE # debugging build CFLAGS = -DDEBUGMODE=$(DEBUGMODE) $(WFLAGS) -g SFLAGS = -DDEBUGMODE=$(DEBUGMODE) $(WFLAGS) LFLAGS += -g LIB_FLAGS = `allegro-config --libs debug` else ifdef PROFILEMODE # profiling build CFLAGS = $(WFLAGS) $(OFLAGS) -pg SFLAGS = $(WFLAGS) LFLAGS += -pg LIB_FLAGS = `allegro-config --libs profile` else # optimised build CFLAGS = $(WFLAGS) $(OFLAGS) -fomit-frame-pointer -fno-strength-reduce SFLAGS = $(WFLAGS) ifndef SYMBOLMODE LFLAGS += -s LIB_FLAGS = `allegro-config --libs release` endif endif endif CFLAGS_NO_OPTIMIZE = $(WFLAGS) ifdef ADIME_DEVELOPING CFLAGS += -D_ADIME_DEVELOPING=1 endif ifdef ADIME_FORTIFY CFLAGS += -D_ADIME_FORTIFY=1 -DFORTIFY endif COMPILE_FLAGS = $(subst src/,-DADIME_SRC ,$(findstring src/, $<))$(CFLAGS) COMPILE_FLAGS_NO_OPTIMIZE = $(subst src/,-DADIME_SRC ,$(findstring src/, $<))$(CFLAGS_NO_OPTIMIZE) ifdef STATICLINK COMPILE_FLAGS += -DADIME_STATICLINK endif ifdef PROFILEMODE LIB_FLAGS += -lgmon endif # -------- List platform specific objects and programs. -------- VPATH += OBJ_LIST = $(COMMON_OBJS) # Insert names of targets to build platform specific programs here. PROGRAMS = # Insert targets to build platform specific programs here. # myprogram: path/myprogram$(EXE_SUFFIX) # -------- Define how to compile. -------- GCC2QNX = -D__QNX__ -UDJGPP COMPILE_C_TO_OBJ_DEPS = define COMPILE_C_TO_OBJ gcc $(COMPILE_FLAGS) -I./include -o $@ -c $< endef define COMPILE_C_TO_OBJ_NO_OPTIMIZE gcc $(COMPILE_FLAGS_NO_OPTIMIZE) -I./include -o $@ -c $< endef COMPILE_S_TO_OBJ_DEPS = define COMPILE_S_TO_OBJ gcc $(SFLAGS) -I./include -x assembler-with-cpp -o $@ -c $< endef ifdef STATICLINK # link as a static library LINK_LIB_DEPS = define LINK_LIB ar rs $(LIB_NAME) $(LIB_OBJS) endef LINK_EXE_DEPS = define LINK_EXE gcc $(LFLAGS) -o $@ $< $(IMPLIB_NAME) $(LIB_FLAGS) endef LINK_EXE_ALL_DEPS = define LINK_EXE_ALL gcc $(LFLAGS) -o $@ $^ $(IMPLIB_NAME) $(LIB_FLAGS) endef else # link as a shared object LINK_LIB_DEPS = define LINK_LIB gcc $(LFLAGS) -shared -o $(IMPLIB_NAME) $(LIB_OBJS) $(LIB_FLAGS) endef LINK_EXE_DEPS = define LINK_EXE gcc $(LFLAGS) -o $@ $< -L$(LIB_DIR) -ladime $(LIB_FLAGS) endef LINK_EXE_ALL_DEPS = define LINK_EXE_ALL gcc $(LFLAGS) -o $@ $^ -L$(LIB_DIR) -ladime $(LIB_FLAGS) endef endif # ifdef STATICLINK # -------- Rules for installing and removing the library files. -------- $(SYSTEM_LIB_DIR)/$(IMPLIB_BASENAME): $(IMPLIB_NAME) cp $< $@ $(SYSTEM_INCLUDE_DIR)/adime.h: include/adime.h cp $< $@ $(SYSTEM_INCLUDE_DIR)/adime: mkdir $@ $(SYSTEM_INCLUDE_DIR)/adime/%.h: include/adime/%.h include/adime $(SYSTEM_INCLUDE_DIR)/adime cp $< $@ INSTALL_HEADERS = $(addprefix $(SYSTEM_DIR)/,$(wildcard include/adime/*.h)) INSTALL_FILES = $(SYSTEM_LIB_DIR)/$(IMPLIB_BASENAME) \ $(SYSTEM_INCLUDE_DIR)/adime.h \ $(INSTALL_HEADERS) install: $(INSTALL_FILES) @echo The $(DESCRIPTION) QNX library has been installed. UNINSTALL_FILES = $(SYSTEM_LIB_DIR)/libadime.a $(SYSTEM_LIB_DIR)/libadimd.a \ $(SYSTEM_INCLUDE_DIR)/adime.h $(SYSTEM_INCLUDE_DIR)/adime/*.h # $(WINDIR_U)/adime$(LIB_VERSION).dll $(WINDIR_U)/adid$(LIB_VERSION).dll uninstall: -rm -fv $(UNINSTALL_FILES) -rmdir $(SYSTEM_INCLUDE_DIR)/adime @echo All gone! # -------- Compile anything that can't be done in makefile.all. -------- examples/ex%: $(OBJ_DIR)/ex%$(OBJ_SUFFIX) $(LINK_EXE) NATIVE_LINK_EXE = 1 # -------- generate automatic dependencies -------- DEPEND_PARAMS = $(GCC2QNX) -MM -MG -I./include -DADIME_SCAN_DEPEND depend: gcc $(DEPEND_PARAMS) src/*.c examples/*.c misc/makedoc/*.c > _depend.tmp sed -e "s/^[a-zA-Z0-9_\/]*\///" -e "s/[^ ]*version\.h//" -e "s/[^ ]*djgpp\.ver//" -e "s/[^ ]*allegro[^ ]*//g" -e'/^ *\\/d' _depend.tmp > _depend2.tmp sed -e "s/^\([a-zA-Z0-9_]*\)\.o:/obj\/qnx\/adime\/\1\.o:/" _depend2.tmp > obj/qnx/adime/makefile.dep sed -e "s/^\([a-zA-Z0-9_]*\)\.o:/obj\/qnx\/adimd\/\1\.o:/" _depend2.tmp > obj/qnx/adimd/makefile.dep sed -e "s/^\([a-zA-Z0-9_]*\)\.o:/obj\/qnx\/adime_s\/\1\.o:/" _depend2.tmp > obj/qnx/adime_s/makefile.dep sed -e "s/^\([a-zA-Z0-9_]*\)\.o:/obj\/qnx\/adimd_s\/\1\.o:/" _depend2.tmp > obj/qnx/adimd_s/makefile.dep rm _depend.tmp _depend2.tmp