diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2019-04-23 17:19:20 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-04-23 17:19:20 -0400 |
| commit | 9cb75371f5ea45640ae0e3998eb27bcda0a22cd9 (patch) | |
| tree | 8e4c18099888d88860c54c0a23c5fe345f3fd4b7 /Makefile | |
| parent | 7a71b86aadda83d16dadf809be137c7551f31464 (diff) | |
Feature/premake build (#951)
* * Remove Makefile
* Document how to create build using premake5
* Added support for finding the executable path
* If binDir not set on command line use the executable path
* Fix getting exe path on linux.
* Removed CalcExecutablePath from Path:: interface, made implementation internal.
* Documentation improvements.
* Fixes based on review
* Fix some typos
* Removed unused/needed global
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 174 |
1 files changed, 0 insertions, 174 deletions
diff --git a/Makefile b/Makefile deleted file mode 100644 index bce0ab803..000000000 --- a/Makefile +++ /dev/null @@ -1,174 +0,0 @@ -# Makefile -# -# This file provides a simpliistic (perhaps *overly* simplistic) way to -# build Slang from source on Linux, which could probably be adapted for -# building on other Unix-y targets. -# -# This build is not intended to be used for active development right now, -# so it doesn't actually try to compile the `.cpp` files separately, -# 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 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 -# account. For now we will do something simplistic and request the target -# "triple" from the compiler (which we assume is either gcc or clang) and -# call that our target "platformm" -# -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. -# - -# -# We will define an ouput directory for our binaries, based on -# 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)/$(CONFIGURATION)/ -INTERMEDIATEDIR := intermediate/$(TARGET)/$(CONFIGURATION)/ - -# -# Now we will start defining a bunch of variables for build -# options and properties of the target. We are going to unconditionallyy -# set these to what we need/want on our Linux target for now, but -# we will eventually need to do a bit more work to detect the -# platform. -# -SHARED_LIB_PREFIX := lib -SHARED_LIB_SUFFIX := .so -BIN_SUFFIX := -# Note: we set `visibility=hidden` to avoid exporting more symbols than -# we really need. -CFLAGS := -std=c++11 -fvisibility=hidden -fno-delete-null-pointer-checks -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) -SHARED_LIB_CFLAGS += $(CFLAGS) - -RELATIVE_RPATH_INCANTATION := "-Wl,-rpath,"'$$'"ORIGIN/" - -# TODO: Make sure I'm using these Makefile incantations correctly. -.SUFFIXES: -.PHONY: all clean slang slangc test - -# -# Here we define lists of files (source vs. header dependencies) -# for each logical project we want to build. -# This is the one place where we do any kiind of "dependency" work, -# by making a project depend on the headers for sub-projects it usses. -# -CORE_SOURCES := source/core/*.cpp -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_REFLECTION_TEST_SOURCES := tools/slang-reflection-test/*.cpp -SLANG_REFLECTION_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 -# the binary it should produce. -# -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_REFLECTION_TEST := $(OUTPUTDIR)slang-reflection-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 slang-glslang slangc slang-test slang-reflection-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-reflection-test: mkdirs $(SLANG_REFLECTION_TEST) - -$(SLANG): $(SLANG_SOURCES) $(SLANG_HEADERS) - $(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) -ldl $(RELATIVE_RPATH_INCANTATION) -lslang - -$(SLANG_GLSLANG): $(SLANG_GLSLANG_SOURCES) $(SLANG_GLSLANG_HEADERS) - $(CXX) $(SHARED_LIB_LDFLAGS) -pthread -o $@ -Iexternal/glslang/ $(SHARED_LIB_CFLAGS) -DAMD_EXTENSIONS -DNV_EXTENSIONS $(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_REFLECTION_TEST): $(SLANG_REFLECTION_TEST_SOURCES) $(SLANG) - $(CXX) $(LDFLAGS) -o $@ $(CFLAGS) $(SLANG_REFLECTION_TEST_SOURCES) $(RELATIVE_RPATH_INCANTATION) -lslang - -$(OUTPUTDIR): - mkdir -p $(OUTPUTDIR) - -test: $(SLANG_TEST) $(SLANG_REFLECTION_TEST) - $(SLANG_TEST) -bindir $(OUTPUTDIR) -travis -category $(SLANG_TEST_CATEGORY) $(SLANG_TEST_FLAGS) - -clean: - rm -rf $(OUTPUTDIR) |
