diff --git a/.gitignore b/.gitignore index 47b5d011..8b6d9565 100644 --- a/.gitignore +++ b/.gitignore @@ -15,18 +15,14 @@ msvc2003/devilution/compare.asm # Exclude build output on Linux (exclude normally produced executable files) build_en/CSE2 +build_en/CSE2d build_en/DoConfig - -# The Makefile outputs "release" and "debug" for the english build -build_en/release -build_en/debug +build_en/DoConfigd build_jp/CSE2 +build_jp/CSE2d build_jp/DoConfig - -# The Makefile outputs "releasejp" and "debugjp" for the japanese build -build_jp/releasejp -build_jp/debugjp +build_jp/DoConfigd # Exclude executables in the build folder (and .exe.manifest files) diff --git a/CMakeLists.txt b/CMakeLists.txt index d89e18fc..bf550f81 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -274,14 +274,32 @@ foreach(FILENAME IN LISTS RESOURCES) endforeach() # Force strict C90 -set_property(TARGET CSE2 PROPERTY C_STANDARD 90) -set_property(TARGET CSE2 PROPERTY C_STANDARD_REQUIRED ON) -set_property(TARGET CSE2 PROPERTY C_EXTENSIONS OFF) +set_target_properties(CSE2 PROPERTIES + C_STANDARD 90 + C_STANDARD_REQUIRED ON + C_EXTENSIONS OFF +) # Force strict C++98 -set_property(TARGET CSE2 PROPERTY CXX_STANDARD 98) -set_property(TARGET CSE2 PROPERTY CXX_STANDARD_REQUIRED ON) -set_property(TARGET CSE2 PROPERTY CXX_EXTENSIONS OFF) +set_target_properties(CSE2 PROPERTIES + CXX_STANDARD 98 + CXX_STANDARD_REQUIRED ON + CXX_EXTENSIONS OFF +) + +# Name debug builds "CSE2d", to distinguish them +set_target_properties(CSE2 PROPERTIES + DEBUG_OUTPUT_NAME "CSE2d" +) + +# Send executable to the build_en/build_jp directory +set_target_properties(CSE2 PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${BUILD_DIRECTORY} + RUNTIME_OUTPUT_DIRECTORY_RELEASE ${BUILD_DIRECTORY} + RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${BUILD_DIRECTORY} + RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${BUILD_DIRECTORY} + RUNTIME_OUTPUT_DIRECTORY_DEBUG ${BUILD_DIRECTORY} +) # Enable link-time optimisation if available if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") @@ -332,15 +350,6 @@ else() target_link_libraries(CSE2 freetype) endif() -# Send executable to the build_en/build_jp directory -set_target_properties(CSE2 PROPERTIES - RUNTIME_OUTPUT_DIRECTORY ${BUILD_DIRECTORY} - RUNTIME_OUTPUT_DIRECTORY_RELEASE ${BUILD_DIRECTORY} - RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${BUILD_DIRECTORY} - RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${BUILD_DIRECTORY} - RUNTIME_OUTPUT_DIRECTORY_DEBUG ${BUILD_DIRECTORY} -) - ## # DoConfig ## diff --git a/DoConfig/CMakeLists.txt b/DoConfig/CMakeLists.txt index 1c5722bf..90c0e0ac 100644 --- a/DoConfig/CMakeLists.txt +++ b/DoConfig/CMakeLists.txt @@ -10,6 +10,9 @@ project(DoConfig LANGUAGES CXX) add_executable(DoConfig "DoConfig.cpp" "icon.rc") +# Name debug builds "DoConfigd", to distinguish them +set_target_properties(CSE2 PROPERTIES DEBUG_OUTPUT_NAME "DoConfigd") + # Windows tweak if(WIN32) set_target_properties(DoConfig PROPERTIES WIN32_EXECUTABLE YES) # Disable the console window diff --git a/Makefile b/Makefile index bd5345f2..8f696874 100644 --- a/Makefile +++ b/Makefile @@ -1,22 +1,16 @@ ifeq ($(RELEASE), 1) CXXFLAGS = -O3 -flto LDFLAGS = -s - FILENAME_DEF = release + FILENAME_DEF = CSE2 else CXXFLAGS = -O0 -g - FILENAME_DEF = debug + FILENAME_DEF = CSE2d endif ifeq ($(JAPANESE), 1) BUILD_DIR = build_jp CXXFLAGS += -DJAPANESE - - ifeq ($(RELEASE), 1) - FILENAME_DEF = releasejp - else - FILENAME_DEF = debugjp - endif else BUILD_DIR = build_en endif @@ -197,11 +191,11 @@ ifneq ($(WINDOWS), 1) RESOURCES += ICON/ICON_MINI.bmp endif -OBJECTS = $(addprefix obj/$(FILENAME)/, $(addsuffix .o, $(SOURCES))) -DEPENDENCIES = $(addprefix obj/$(FILENAME)/, $(addsuffix .o.d, $(SOURCES))) +OBJECTS = $(addprefix obj/$(BUILD_DIR)/$(FILENAME)/, $(addsuffix .o, $(SOURCES))) +DEPENDENCIES = $(addprefix obj/$(BUILD_DIR)/$(FILENAME)/, $(addsuffix .o.d, $(SOURCES))) ifeq ($(WINDOWS), 1) - OBJECTS += obj/$(FILENAME)/win_icon.o + OBJECTS += obj/$(BUILD_DIR)/$(FILENAME)/win_icon.o endif all: $(BUILD_DIR)/$(FILENAME) @@ -212,12 +206,12 @@ $(BUILD_DIR)/$(FILENAME): $(OBJECTS) @$(CXX) $(CXXFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS) @echo Finished compiling: $@ -obj/$(FILENAME)/%.o: src/%.cpp +obj/$(BUILD_DIR)/$(FILENAME)/%.o: src/%.cpp @mkdir -p $(@D) @echo Compiling $< @$(CXX) $(CXXFLAGS) $< -o $@ -c -obj/$(FILENAME)/Resource.o: src/Resource.cpp $(addprefix src/Resource/, $(addsuffix .h, $(RESOURCES))) +obj/$(BUILD_DIR)/$(FILENAME)/Resource.o: src/Resource.cpp $(addprefix src/Resource/, $(addsuffix .h, $(RESOURCES))) @mkdir -p $(@D) @echo Compiling $< @$(CXX) $(CXXFLAGS) $< -o $@ -c @@ -234,7 +228,7 @@ obj/bin2h: src/misc/bin2h.c include $(wildcard $(DEPENDENCIES)) -obj/$(FILENAME)/win_icon.o: res/ICON/ICON.rc res/ICON/0.ico res/ICON/ICON_MINI.ico +obj/$(BUILD_DIR)/$(FILENAME)/win_icon.o: res/ICON/ICON.rc res/ICON/0.ico res/ICON/ICON_MINI.ico @mkdir -p $(@D) @windres $< $@