From 91ddf07c80b82e780fae8e6212a20f9afc031a80 Mon Sep 17 00:00:00 2001 From: alberth Date: Thu, 3 Mar 2011 21:08:20 +0000 Subject: (svn r22174) -Add: Generate the settings as part of the unix build process without using it (Rubidium) --- Makefile.setting.in | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++ config.lib | 16 ++++++++++++ configure | 5 +++- 3 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 Makefile.setting.in diff --git a/Makefile.setting.in b/Makefile.setting.in new file mode 100644 index 000000000..607baccb6 --- /dev/null +++ b/Makefile.setting.in @@ -0,0 +1,73 @@ +# $Id$ + +# This file is part of OpenTTD. +# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. +# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + +SETTINGSGEN = !!SETTINGSGEN!! +ENDIAN_CHECK = !!ENDIAN_CHECK!! +SRC_DIR = !!SRC_DIR!! +CXX_BUILD = !!CXX_BUILD!! +CFLAGS_BUILD = !!CFLAGS_BUILD!! +LDFLAGS_BUILD = !!LDFLAGS_BUILD!! +STAGE = !!STAGE!! +SETTING_OBJS_DIR = !!SETTING_OBJS_DIR!! + +ENDIAN_TARGETS := endian_host.h endian_target.h $(ENDIAN_CHECK) + +# Check if we want to show what we are doing +ifdef VERBOSE + Q = + E = @true +else + Q = @ + E = @echo +endif + +all: table/settings.h + +settingsgen.o: $(SRC_DIR)/settingsgen/settingsgen.cpp $(SRC_DIR)/string_func.h $(SRC_DIR)/strings_type.h $(SRC_DIR)/misc/getoptdata.h $(SRC_DIR)/ini_type.h $(SRC_DIR)/core/smallvec_type.hpp + $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' + $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $< + +alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp endian_host.h + $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' + $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $< + +getoptdata.o: $(SRC_DIR)/misc/getoptdata.cpp $(SRC_DIR)/misc/getoptdata.h + $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/misc/%.cpp=%.cpp)' + $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $< + +ini_load.o: $(SRC_DIR)/ini_load.cpp $(SRC_DIR)/core/alloc_func.hpp $(SRC_DIR)/core/mem_func.hpp $(SRC_DIR)/ini_type.h $(SRC_DIR)/string_func.h + $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/misc/%.cpp=%.cpp)' + $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $< + +$(SETTINGSGEN): alloc_func.o ini_load.o settingsgen.o getoptdata.o + $(E) '$(STAGE) Compiling and Linking $@' + $(Q)$(CXX_BUILD) $(LDFLAGS_BUILD) $^ -o $@ + +table/settings.h: $(SETTINGSGEN) $(SRC_DIR)/table/settings.h.preamble $(SRC_DIR)/table/settings.h.postamble $(SRC_DIR)/table/*.ini + $(E) '$(STAGE) Generating $@' + @mkdir -p table + $(Q)./$(SETTINGSGEN) -o table/settings.h -b $(SRC_DIR)/table/settings.h.preamble -a $(SRC_DIR)/table/settings.h.postamble $(SRC_DIR)/table/*.ini + +# The targets to compile the endian-code + +endian_host.h: $(ENDIAN_CHECK) + $(E) '$(STAGE) Testing endianness for host' + $(Q)./$(ENDIAN_CHECK) > $@ + +$(ENDIAN_CHECK): $(SRC_DIR)/endian_check.cpp + $(E) '$(STAGE) Compiling and Linking $@' + $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $< -o $@ + +depend: + +clean: + $(E) '$(STAGE) Cleaning up settings files' + $(Q)rm -f settingsgen.o alloc_func.o getoptdata.o ini_load.o $(SETTINGSGEN) $(ENDIAN_TARGETS) table/settings.h + +mrproper: clean + +.PHONY: all mrproper depend clean diff --git a/config.lib b/config.lib index dc228de8c..098db2c63 100644 --- a/config.lib +++ b/config.lib @@ -3099,6 +3099,7 @@ make_sed() { s@!!SRC_OBJS_DIR!!@$SRC_OBJS_DIR@g; s@!!LANG_OBJS_DIR!!@$LANG_OBJS_DIR@g; s@!!GRF_OBJS_DIR!!@$GRF_OBJS_DIR@g; + s@!!SETTING_OBJS_DIR!!@$SETTING_OBJS_DIR@g; s@!!SRC_DIR!!@$SRC_DIR@g; s@!!SCRIPT_SRC_DIR!!@$SCRIPT_SRC_DIR@g; s@!!OSXAPP!!@$OSXAPP@g; @@ -3117,6 +3118,7 @@ make_sed() { s@!!STRGEN!!@$STRGEN@g; s@!!ENDIAN_CHECK!!@$ENDIAN_CHECK@g; s@!!DEPEND!!@$DEPEND@g; + s@!!SETTINGSGEN!!@$SETTINGSGEN@g; s@!!ENDIAN_FORCE!!@$endian@g; s@!!STAGE!!@$STAGE@g; s@!!MAKEDEPEND!!@$makedepend@g; @@ -3224,6 +3226,20 @@ generate_lang() { echo "LANG_DIRS += $LANG_OBJS_DIR" >> Makefile.am } +generate_settings() { + STAGE="[SETTING]" + + make_sed + + # Create the language file + mkdir -p $SETTING_OBJS_DIR + + log 1 "Generating setting/Makefile..." + echo "# Auto-generated file from 'Makefile.settings.in' -- DO NOT EDIT" > $SETTING_OBJS_DIR/Makefile + < $ROOT_DIR/Makefile.setting.in sed "$SRC_REPLACE" >> $SETTING_OBJS_DIR/Makefile + echo "DIRS += $SETTING_OBJS_DIR" >> Makefile.am +} + generate_grf() { STAGE="[GRF]" diff --git a/configure b/configure index e9c473b36..c80fb2f23 100755 --- a/configure +++ b/configure @@ -48,6 +48,7 @@ OBJS_DIR="$PWD/objs" BASE_SRC_OBJS_DIR="$OBJS_DIR" LANG_OBJS_DIR="$OBJS_DIR/lang" GRF_OBJS_DIR="$OBJS_DIR/extra_grf" +SETTING_OBJS_DIR="$OBJS_DIR/setting" BIN_DIR="$PREFIX" SRC_DIR="$ROOT_DIR/src" LANG_DIR="$SRC_DIR/lang" @@ -82,6 +83,7 @@ TTD="openttd$EXE" STRGEN="strgen$EXE" ENDIAN_CHECK="endian_check$EXE" DEPEND="depend$EXE" +SETTINGSGEN="settings_gen$EXE" if [ -z "$sort" ]; then PIPE_SORT="sed s@a@a@" @@ -161,10 +163,11 @@ else sort="$sort -u" fi -CONFIGURE_FILES="$ROOT_DIR/configure $ROOT_DIR/config.lib $ROOT_DIR/Makefile.in $ROOT_DIR/Makefile.grf.in $ROOT_DIR/Makefile.lang.in $ROOT_DIR/Makefile.src.in $ROOT_DIR/Makefile.bundle.in" +CONFIGURE_FILES="$ROOT_DIR/configure $ROOT_DIR/config.lib $ROOT_DIR/Makefile.in $ROOT_DIR/Makefile.grf.in $ROOT_DIR/Makefile.lang.in $ROOT_DIR/Makefile.src.in $ROOT_DIR/Makefile.bundle.in $ROOT_DIR/Makefile.setting.in" generate_main generate_lang +generate_settings generate_grf generate_src -- cgit v1.2.3-70-g09d2