diff options
| author | Tim Foley <tfoleyNV@users.noreply.github.com> | 2017-09-29 13:43:08 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-09-29 13:43:08 -0700 |
| commit | 8a0ebb9fa25fd44def17b03b3f8aa1a33ad77940 (patch) | |
| tree | 3f855c1f8057e53763cb083c3b898effb559b80b /Makefile | |
| parent | 74f2f47cb63b02638270beecd20acea1a0f5665e (diff) | |
Get tests running/passing under Linux (#194)
* Get tests running/passing under Linux
- Fix up `dlopen` abstraction
- Fix up some test cases to request hlsl (rather than default to dxbc) so they can run on non-Windows targets
- Fix up test runner ignore tests that can't run on current platform (and not count those as failure)
- Fix file handle leeak in process spawner absttraction
- Get additional test-related applications building
- More tweaks to Travis script; in theory deployment is set up now (yeah, right)
* fixup
* fixup: Travis environment variable syntax
* fixup: Buffer->begin
* fixup: actually run full tests on one config
* fixup: add build status badge for Travis
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 82 |
1 files changed, 70 insertions, 12 deletions
@@ -9,10 +9,21 @@ # or track fine-grained dependencies, so almost any source change will # trigger a full rebuild. Anybody who wants to do their active development # on a platform supported by this Makefile should feel free to contribute -# improvements, with the caveat that we will not be adoptttting autoconf, -# CMake, or any other build system that has a tendency to "infect" a codebbbase. +# improvements, with the caveat that we will not be adopting autoconf, +# CMake, or any other build system that has a tendency to "infect" a codebase. # +PLATFORM := $(shell uname -s | tr '[:upper:]' '[:lower:]') +ARCHITECTURE := $(shell uname -p) + +ifeq (,$(CONFIGURATION)) + CONFIGURATION := release +endif + +ifeq (,$(SLANG_TEST_CATEGORY)) + SLANG_TEST_CATEGORY := full +endif + # # The Windows build (using Visual Studio) tries to output things to # directories that take the target platform (and build configuration) into @@ -20,8 +31,7 @@ # "triple" from the compiler (which we assume is either gcc or clang) and # call that our target "platformm" # -TARGET := $(shell $(CXX) -dumpmachine) - +TARGET := $(PLATFORM)-$(ARCHITECTURE) # # TODO: We need a way to control the "configuration" (debug vs. release) # but for now just geting *something* working will be a good start. @@ -32,8 +42,8 @@ TARGET := $(shell $(CXX) -dumpmachine) # the target platform chosen. If we ever have steps that need to # output intermediate files, we'd set up the directory here. # -OUTPUTDIR := bin/$(TARGET)/ -INTERMEDIATEDIR := intermediate/$(TARGET)/ +OUTPUTDIR := bin/$(TARGET)/$(CONFIGURATION)/ +INTERMEDIATEDIR := intermediate/$(TARGET)/$(CONFIGURATION)/ # # Now we will start defining a bunch of variables for build @@ -48,10 +58,17 @@ BIN_SUFFIX := # Note: we set `visibility=hidden` to avoid exporting more symbols than # we really need. CFLAGS := -std=c++11 -fvisibility=hidden +CFLAGS += -I. LDFLAGS := -L$(OUTPUTDIR) SHARED_LIB_LDFLAGS := -shared SHARED_LIB_CFLAGS := -fPIC +ifeq (debug,$(CONFIGURATION)) +CFLAGS += -g +else +CFLAGS += -O2 +endif + # Make sure that shared library inherits build flags # from the default case. SHARED_LIB_LDFLAGS += $(LDFLAGS) @@ -74,11 +91,40 @@ CORE_HEADERS := source/core/*.h SLANG_SOURCES := source/slang/*.cpp SLANG_HEADERS := slang.h source/slang/*.h +# SLANG_SOURCES += $(CORE_SOURCES) SLANG_HEADERS += $(CORE_HEADERS) SLANGC_SOURCES := source/slangc/*.cpp SLANGC_HEADERS := $(SLANG_HEADERS) +# +SLANGC_SOURCES += $(CORE_SOURCES) + +SLANG_GLSLANG_SOURCES := source/slang-glslang/*.cpp +SLANG_GLSLANG_HEADERS := source/slang-glslang/*.h + +SLANG_EVAL_TEST_SOURCES := tools/eval-test/*.cpp +SLANG_EVAL_TEST_HEADERS := + +# Add `glslang` sources to the build or `slang-glslang` +# +# Note: We aren't going to wasttte time trying to work with +# the existing CMake-based build for `glslang`. +# +SLANG_GLSLANG_SOURCES += \ + external/glslang/OGLCompilersDLL/*.cpp \ + external/glslang/SPIRV/*.cpp \ + external/glslang/glslang/GenericCodeGen/*.cpp \ + external/glslang/glslang/MachineIndependent/*.cpp \ + external/glslang/glslang/MachineIndependent/preprocessor/*.cpp \ + external/glslang/glslang/OSDependent/Unix/*.cpp + + +SLANG_TEST_SOURCES := tools/slang-test/*.cpp +SLANG_TEST_HEADERS := tools/slang-test/*.h +# +SLANG_TEST_SOURCES += $(CORE_SOURCES) +SLANG_TEST_HEADERS += $(CORE_HEADERS) # # Each project will have a variable that is an alias for @@ -86,31 +132,43 @@ SLANGC_HEADERS := $(SLANG_HEADERS) # SLANG := $(OUTPUTDIR)$(SHARED_LIB_PREFIX)slang$(SHARED_LIB_SUFFIX) SLANGC := $(OUTPUTDIR)slangc$(BIN_SUFFIX) +SLANG_GLSLANG := $(OUTPUTDIR)$(SHARED_LIB_PREFIX)slang-glslang$(SHARED_LIB_SUFFIX) +SLANG_TEST := $(OUTPUTDIR)slang-test$(BIN_SUFFIX) +SLANG_EVAL_TEST := $(OUTPUTDIR)slang-eval-test$(BIN_SUFFIX) # By default, when the user invokes `make`, we will build the # `slang` shared library, and the `slangc` front-end application. -all: slang slangc +all: slang slang-glslang slangc slang-test slang-eval-test mkdirs: $(OUTPUTDIR) # Project-specific targets depend on making theappropriate binary. slang: mkdirs $(SLANG) slangc: mkdirs $(SLANGC) - +slang-glslang: mkdirs $(SLANG_GLSLANG) +slang-test: mkdirs $(SLANG_TEST) +slang-eval-test: mkdirs $(SLANG_EVAL_TEST) $(SLANG): $(SLANG_SOURCES) $(SLANG_HEADERS) - $(CXX) $(SHARED_LIB_LDFLAGS) -o $@ -DSLANG_DYNAMIC_EXPORT $(SHARED_LIB_CFLAGS) $(SLANG_SOURCES) + $(CXX) $(SHARED_LIB_LDFLAGS) -o $@ -DSLANG_DYNAMIC_EXPORT $(SHARED_LIB_CFLAGS) $(SLANG_SOURCES) -ldl $(RELATIVE_RPATH_INCANTATION) $(SLANGC): $(SLANGC_SOURCES) $(SLANGC_HEADERS) $(SLANG) - $(CXX) $(LDFLAGS) -o $@ $(CFLAGS) $(SLANGC_SOURCES) $(CORE_SOURCES) -ldl $(RELATIVE_RPATH_INCANTATION) -lslang + $(CXX) $(LDFLAGS) -o $@ $(CFLAGS) $(SLANGC_SOURCES) -ldl $(RELATIVE_RPATH_INCANTATION) -lslang + +$(SLANG_GLSLANG): $(SLANG_GLSLANG_SOURCES) $(SLANG_GLSLANG_HEADERS) + $(CXX) $(SHARED_LIB_LDFLAGS) -pthread -o $@ -Iexternal/glslang/ $(SHARED_LIB_CFLAGS) $(SLANG_GLSLANG_SOURCES) +$(SLANG_TEST): $(SLANG_TEST_SOURCES) $(SLANG_TEST_HEADERS) $(SLANG) + $(CXX) $(LDFLAGS) -o $@ $(CFLAGS) $(SLANG_TEST_SOURCES) -ldl $(RELATIVE_RPATH_INCANTATION) -lslang +$(SLANG_EVAL_TEST): $(SLANG_EVAL_TEST_SOURCES) $(SLANG) + $(CXX) $(LDFLAGS) -o $@ $(CFLAGS) $(SLANG_EVAL_TEST_SOURCES) $(RELATIVE_RPATH_INCANTATION) -lslang $(OUTPUTDIR): mkdir -p $(OUTPUTDIR) -test: - # TODO need to actually run the test runner +test: $(SLANG_TEST) $(SLANG_EVAL_TEST) + $(SLANG_TEST) -bindir $(OUTPUTDIR) -category $(SLANG_TEST_CATEGORY) clean: rm -rf $(OUTPUTDIR) |
