diff --git a/posix.mak b/Makefile similarity index 58% rename from posix.mak rename to Makefile index e0c0bbdb0..24629bf3f 100644 --- a/posix.mak +++ b/Makefile @@ -1,7 +1,6 @@ DMD_DIR = ../dmd BUILD = release DMD = $(DMD_DIR)/generated/$(OS)/$(BUILD)/$(MODEL)/dmd -CC = gcc INSTALL_DIR = ../install DRUNTIME_PATH = ../dmd/druntime PHOBOS_PATH = ../phobos @@ -12,72 +11,63 @@ DOC = ../dlang.org # Load operating system $(OS) (e.g. linux, osx, ...) and $(MODEL) (e.g. 32, 64) detection Makefile from dmd $(shell [ ! -d $(DMD_DIR) ] && git clone --depth=1 https://github.com/dlang/dmd $(DMD_DIR)) -include $(DMD_DIR)/src/osmodel.mak +include $(DMD_DIR)/compiler/src/osmodel.mak -# Build folder for all binaries -GENERATED = generated -ROOT = $(GENERATED)/$(OS)/$(MODEL) - -# Set DRUNTIME name and full path -ifeq (,$(findstring win,$(OS))) - DRUNTIME = $(DRUNTIME_PATH)/lib/libdruntime-$(OS)$(MODEL).a - DRUNTIMESO = $(DRUNTIME_PATH)/lib/libdruntime-$(OS)$(MODEL)so.a +ifeq (windows,$(OS)) + DOTEXE:=.exe else - DRUNTIME = $(DRUNTIME_PATH)/lib/druntime.lib + DOTEXE:= endif -# Set PHOBOS name and full path -ifeq (,$(findstring win,$(OS))) - PHOBOS = $(PHOBOS_PATH)/generated/$(OS)/$(BUILD)/$(MODEL)/libphobos2.a - PHOBOSSO = $(PHOBOS_PATH)/generated/$(OS)/$(BUILD)/$(MODEL)/libphobos2.so -endif +# Build folder for all binaries +GENERATED = generated +ROOT = $(GENERATED)/$(OS)/$(MODEL) -# default to warnings and deprecations as errors, override via e.g. make -f posix.mak WARNINGS=-wi +# default to warnings and deprecations as errors, override via e.g. make WARNINGS=-wi WARNINGS = -w -de -# default include/link paths, override by setting DFLAGS (e.g. make -f posix.mak DFLAGS=-I/foo) -DFLAGS = -I$(DRUNTIME_PATH)/import -I$(PHOBOS_PATH) \ - -L-L$(PHOBOS_PATH)/generated/$(OS)/$(BUILD)/$(MODEL) $(MODEL_FLAG) -fPIC -preview=dip1000 +# default flags, override by setting DFLAGS (e.g. make DFLAGS=-O) +DFLAGS = $(MODEL_FLAG) $(if $(findstring windows,$(OS)),,-fPIC) -preview=dip1000 DFLAGS += $(WARNINGS) # Default DUB flags (DUB uses a different architecture format) DUBFLAGS = --arch=$(subst 32,x86,$(subst 64,x86_64,$(MODEL))) TOOLS = \ - $(ROOT)/catdoc \ - $(ROOT)/checkwhitespace \ - $(ROOT)/contributors \ - $(ROOT)/ddemangle \ - $(ROOT)/detab \ - $(ROOT)/rdmd \ - $(ROOT)/tolf \ - $(ROOT)/updatecopyright + $(ROOT)/catdoc$(DOTEXE) \ + $(ROOT)/checkwhitespace$(DOTEXE) \ + $(ROOT)/contributors$(DOTEXE) \ + $(ROOT)/ddemangle$(DOTEXE) \ + $(ROOT)/detab$(DOTEXE) \ + $(ROOT)/rdmd$(DOTEXE) \ + $(ROOT)/tolf$(DOTEXE) \ + $(ROOT)/updatecopyright$(DOTEXE) CURL_TOOLS = \ - $(ROOT)/changed \ - $(ROOT)/dget + $(ROOT)/changed$(DOTEXE) \ + $(ROOT)/dget$(DOTEXE) DOC_TOOLS = \ - $(ROOT)/dman + $(ROOT)/dman$(DOTEXE) TEST_TOOLS = \ - $(ROOT)/rdmd_test + $(ROOT)/rdmd_test$(DOTEXE) -all: $(TOOLS) $(CURL_TOOLS) $(ROOT)/dustmite +all: $(TOOLS) $(CURL_TOOLS) $(ROOT)/dustmite$(DOTEXE) -rdmd: $(ROOT)/rdmd -ddemangle: $(ROOT)/ddemangle -catdoc: $(ROOT)/catdoc -detab: $(ROOT)/detab -tolf: $(ROOT)/tolf -dget: $(ROOT)/dget -changed: $(ROOT)/changed -dman: $(ROOT)/dman -dustmite: $(ROOT)/dustmite +rdmd: $(ROOT)/rdmd$(DOTEXE) +ddemangle: $(ROOT)/ddemangle$(DOTEXE) +catdoc: $(ROOT)/catdoc$(DOTEXE) +detab: $(ROOT)/detab$(DOTEXE) +tolf: $(ROOT)/tolf$(DOTEXE) +dget: $(ROOT)/dget$(DOTEXE) +changed: $(ROOT)/changed$(DOTEXE) +dman: $(ROOT)/dman$(DOTEXE) +dustmite: $(ROOT)/dustmite$(DOTEXE) -$(ROOT)/dustmite: DustMite/dustmite.d DustMite/splitter.d DustMite/polyhash.d +$(ROOT)/dustmite$(DOTEXE): DustMite/dustmite.d DustMite/splitter.d DustMite/polyhash.d $(DMD) $(DFLAGS) -version=Dlang_Tools DustMite/dustmite.d DustMite/splitter.d DustMite/polyhash.d -of$(@) -$(TOOLS) $(DOC_TOOLS) $(CURL_TOOLS) $(TEST_TOOLS): $(ROOT)/%: %.d +$(TOOLS) $(DOC_TOOLS) $(CURL_TOOLS) $(TEST_TOOLS): $(ROOT)/%$(DOTEXE): %.d $(DMD) $(DFLAGS) -of$(@) $(<) d-tags.json: @@ -87,27 +77,27 @@ d-tags.json: @echo " make -C ../dlang.org -f posix.mak d-tags-prerelease.json && cp ../dlang.org/d-tags-prerelease.json d-tags.json" @exit 1 -$(ROOT)/dman: d-tags.json -$(ROOT)/dman: override DFLAGS += -J. +$(ROOT)/dman$(DOTEXE): d-tags.json +$(ROOT)/dman$(DOTEXE): override DFLAGS += -J. -install: $(TOOLS) $(CURL_TOOLS) $(ROOT)/dustmite +install: $(TOOLS) $(CURL_TOOLS) $(ROOT)/dustmite$(DOTEXE) mkdir -p $(INSTALL_DIR)/bin cp $^ $(INSTALL_DIR)/bin clean: rm -rf $(GENERATED) -$(ROOT)/tests_extractor: tests_extractor.d +$(ROOT)/tests_extractor$(DOTEXE): tests_extractor.d mkdir -p $(ROOT) DFLAGS="$(DFLAGS)" $(DUB) build \ --single $< --force --compiler=$(DMD) $(DUBFLAGS) \ - && mv ./tests_extractor $@ + && mv ./tests_extractor$(DOTEXE) $@ ################################################################################ # Build & run tests ################################################################################ -test_tests_extractor: $(ROOT)/tests_extractor +test_tests_extractor: $(ROOT)/tests_extractor$(DOTEXE) for file in ascii iteration ; do \ $< -i "./test/tests_extractor/$${file}.d" | diff -p - "./test/tests_extractor/$${file}.d.ext"; \ done @@ -115,7 +105,7 @@ test_tests_extractor: $(ROOT)/tests_extractor $< --betterC -i "./test/tests_extractor/betterc.d" | diff -p - "./test/tests_extractor/betterc.d.ext"; RDMD_TEST_COMPILERS = $(DMD) -RDMD_TEST_EXECUTABLE = $(ROOT)/rdmd +RDMD_TEST_EXECUTABLE = $(ROOT)/rdmd$(DOTEXE) RDMD_TEST_DEFAULT_COMPILER = $(basename $(DMD)) VERBOSE_RDMD_TEST=0 @@ -123,8 +113,8 @@ ifeq ($(VERBOSE_RDMD_TEST), 1) override VERBOSE_RDMD_TEST_FLAGS:=-v endif -test_rdmd: $(ROOT)/rdmd_test $(RDMD_TEST_EXECUTABLE) - $< $(RDMD_TEST_EXECUTABLE) -m$(MODEL) \ +test_rdmd: $(ROOT)/rdmd_test$(DOTEXE) $(RDMD_TEST_EXECUTABLE) + $< $(RDMD_TEST_EXECUTABLE) $(MODEL_FLAG) \ --rdmd-default-compiler=$(RDMD_TEST_DEFAULT_COMPILER) \ --test-compilers=$(RDMD_TEST_COMPILERS) \ $(VERBOSE_RDMD_TEST_FLAGS) diff --git a/README.md b/README.md index c1db18006..7add635fb 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Building On a Posix system all tools can be built with: ``` -make -f posix.mak all +make all ``` Using DUB as a build tool diff --git a/win32.mak b/win32.mak deleted file mode 100644 index 82849bb89..000000000 --- a/win32.mak +++ /dev/null @@ -1,108 +0,0 @@ -# Where scp command copies to -SCPDIR=..\backup - -##### Tools - -# D compiler -DMD=dmd -# C++ compiler -CC=dmc -# Make program -MAKE=make -# Librarian -LIB=lib -# Delete file(s) -DEL=del -# Make directory -MD=mkdir -# Remove directory -RD=rmdir -# File copy -CP=cp -# De-tabify -DETAB=detab -# Convert line endings to Unix -TOLF=tolf -# Zip -ZIP=zip32 -# Copy to another directory -SCP=$(CP) - -DFLAGS=-O -release -m$(MODEL) - -GENERATED = generated -ROOT = $(GENERATED)\windows\32 - -TARGETS= $(ROOT)\dman.exe \ - $(ROOT)\rdmd.exe \ - $(ROOT)\ddemangle.exe \ - $(ROOT)\changed.exe \ - $(ROOT)\dustmite.exe - -MAKEFILES=win32.mak win64.mak posix.mak - -SRCS=dman.d rdmd.d ddemangle.d - -targets : $(TARGETS) - -dman: $(ROOT)\dman.exe -rdmd: $(ROOT)\rdmd.exe -ddemangle: $(ROOT)\ddemangle.exe -changed: $(ROOT)\changed.exe -dustmite: $(ROOT)\dustmite.exe - -d-tags.json : - @echo 'Build d-tags.json and copy it here, e.g. by running:' - @echo " make -C ../dlang.org -f win32.mak d-tags.json && copy ../dlang.org/d-tags-latest.json d-tags.json" - @exit - -$(ROOT)\dman.exe : dman.d d-tags.json - $(DMD) $(DFLAGS) -of$@ dman.d -J. - -$(ROOT)\rdmd.exe : rdmd.d - $(DMD) $(DFLAGS) -of$@ rdmd.d advapi32.lib - -$(ROOT)\ddemangle.exe : ddemangle.d - $(DMD) $(DFLAGS) -of$@ ddemangle.d - -$(ROOT)\dustmite.exe : DustMite/dustmite.d DustMite/splitter.d DustMite/polyhash.d - $(DMD) $(DFLAGS) -of$@ -version=Dlang_Tools DustMite/dustmite.d DustMite/splitter.d DustMite/polyhash.d - -$(ROOT)\changed.exe : changed.d - $(DMD) $(DFLAGS) -of$@ changed.d - -clean : - rmdir /s /q $(GENERATED) - -detab: - $(DETAB) $(SRCS) - -tolf: - $(TOLF) $(SRCS) $(MAKEFILES) - -zip: detab tolf $(MAKEFILES) - $(DEL) dman.zip - $(ZIP) dman $(MAKEFILES) $(SRCS) $(TAGS) - -scp: detab tolf $(MAKEFILES) - $(SCP) $(SRCS) $(MAKEFILES) $(SCPDIR) - - -################################################################################ -# Build and run tests -################################################################################ - -RDMD_TEST_COMPILERS = $(DMD) -RDMD_TEST_EXECUTABLE = $(ROOT)\rdmd.exe -RDMD_TEST_DEFAULT_COMPILER = $(DMD) - -$(ROOT)\rdmd_test.exe : rdmd_test.d - $(DMD) $(DFLAGS) -of$@ rdmd_test.d - -test_rdmd : $(ROOT)\rdmd_test.exe $(RDMD_TEST_EXECUTABLE) - $(ROOT)\rdmd_test.exe \ - $(RDMD_TEST_EXECUTABLE) -m$(MODEL) -v \ - --rdmd-default-compiler=$(RDMD_TEST_DEFAULT_COMPILER) \ - --test-compilers=$(RDMD_TEST_COMPILERS) - -test : test_rdmd diff --git a/win64.mak b/win64.mak deleted file mode 100644 index e1ff05cbb..000000000 --- a/win64.mak +++ /dev/null @@ -1,64 +0,0 @@ -ROOT = generated\windows\64 - -TARGETS= $(ROOT)\dman.exe \ - $(ROOT)\rdmd.exe \ - $(ROOT)\ddemangle.exe \ - $(ROOT)\changed.exe \ - $(ROOT)\dustmite.exe - -targets : $(TARGETS) - -dman: $(ROOT)\dman.exe -rdmd: $(ROOT)\rdmd.exe -ddemangle: $(ROOT)\ddemangle.exe -changed: $(ROOT)\changed.exe -dustmite: $(ROOT)\dustmite.exe - -d-tags.json : - @echo 'Build d-tags.json and copy it here, e.g. by running:' - @echo " make -C ../dlang.org -f win64.mak d-tags.json && copy ../dlang.org/d-tags-latest.json d-tags.json" - @exit - -MAKE_WIN32=make -f win32.mak "ROOT=$(ROOT)" "MODEL=$(MODEL)" - -$(ROOT)\dman.exe : dman.d d-tags.json - $(MAKE_WIN32) $@ - -$(ROOT)\rdmd.exe : rdmd.d - $(MAKE_WIN32) $@ - -$(ROOT)\ddemangle.exe : ddemangle.d - $(MAKE_WIN32) $@ - -$(ROOT)\dustmite.exe : DustMite/dustmite.d DustMite/splitter.d DustMite/polyhash.d - $(MAKE_WIN32) $@ - -$(ROOT)\changed.exe : changed.d - $(MAKE_WIN32) $@ - -clean : - $(MAKE_WIN32) $@ - -detab: - $(MAKE_WIN32) $@ - -tolf: - $(MAKE_WIN32) $@ - -zip: detab tolf $(MAKEFILES) - $(MAKE_WIN32) $@ - -scp: detab tolf $(MAKEFILES) - $(MAKE_WIN32) $@ - - -################################################################################ -# Build and run tests -################################################################################ -$(ROOT)\rdmd_test.exe : rdmd_test.d - $(MAKE_WIN32) $@ - -test_rdmd : $(ROOT)\rdmd_test.exe $(RDMD_TEST_EXECUTABLE) - $(MAKE_WIN32) $@ - -test : test_rdmd