Reorder makefile sections (evaluate file names after target platform)
This solves the issue where platform-dependent class inclusion could not work (#61). Also it seems a more logical order of evaluation in general because binary file extensions are platform- dependent.
This commit is contained in:
parent
a10a5b50ad
commit
a6975e9104
1 changed files with 70 additions and 72 deletions
|
|
@ -369,78 +369,6 @@ externalsdir ?= ..
|
||||||
Makefile.pdlibbuilder = true
|
Makefile.pdlibbuilder = true
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
### variables: library name and version ########################################
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
|
|
||||||
# strip possibles spaces from lib.name, they mess up calculated file names
|
|
||||||
lib.name := $(strip $(lib.name))
|
|
||||||
|
|
||||||
# if meta file exists, check library version
|
|
||||||
metafile := $(wildcard $(lib.name)-meta.pd)
|
|
||||||
|
|
||||||
ifdef metafile
|
|
||||||
lib.version := $(shell sed -n \
|
|
||||||
's|^\#X text [0-9][0-9]* [0-9][0-9]* VERSION \(.*\);|\1|p' \
|
|
||||||
$(metafile))
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
### variables: files ###########################################################
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
|
|
||||||
#=== sources ===================================================================
|
|
||||||
|
|
||||||
|
|
||||||
# (re)define <classname>.class.sources using file names in class.sources
|
|
||||||
|
|
||||||
define add-class-source
|
|
||||||
$(notdir $(basename $v)).class.sources += $v
|
|
||||||
endef
|
|
||||||
|
|
||||||
$(foreach v, $(class.sources), $(eval $(add-class-source)))
|
|
||||||
|
|
||||||
# derive class names from <classname>.class.sources variables
|
|
||||||
sourcevariables := $(filter %.class.sources, $(.VARIABLES))
|
|
||||||
classes := $(basename $(basename $(sourcevariables)))
|
|
||||||
|
|
||||||
# accumulate all source files specified in makefile
|
|
||||||
classes.sources := $(sort $(foreach v, $(sourcevariables), $($v)))
|
|
||||||
all.sources := $(classes.sources) $(lib.setup.sources) \
|
|
||||||
$(shared.sources) $(common.sources)
|
|
||||||
|
|
||||||
|
|
||||||
#=== object files ==============================================================
|
|
||||||
|
|
||||||
|
|
||||||
# construct object filenames from all C and C++ source file names
|
|
||||||
classes.objects := $(addsuffix .o, $(basename $(classes.sources)))
|
|
||||||
common.objects := $(addsuffix .o, $(basename $(common.sources)))
|
|
||||||
shared.objects := $(addsuffix .o, $(basename $(shared.sources)))
|
|
||||||
lib.setup.objects := $(addsuffix .o, $(basename $(lib.setup.sources)))
|
|
||||||
all.objects = $(classes.objects) $(common.objects) $(shared.objects) \
|
|
||||||
$(lib.setup.objects)
|
|
||||||
|
|
||||||
|
|
||||||
#=== executables ===============================================================
|
|
||||||
|
|
||||||
|
|
||||||
# use recursive variables here because executable extension is not yet known
|
|
||||||
|
|
||||||
# construct class executable names from class names
|
|
||||||
classes.executables = $(addsuffix .$(extension), $(classes))
|
|
||||||
|
|
||||||
# construct shared lib executable name if shared sources are defined
|
|
||||||
ifdef shared.sources
|
|
||||||
shared.lib = lib$(lib.name).$(shared.extension)
|
|
||||||
else
|
|
||||||
shared.lib =
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
### target platform detection ##################################################
|
### target platform detection ##################################################
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
@ -733,6 +661,76 @@ cxx.ldflags := $(cxx.ldflags) $(ldflags) $(LDFLAGS)
|
||||||
cxx.ldlibs := $(cxx.ldlibs) $(ldlibs)
|
cxx.ldlibs := $(cxx.ldlibs) $(ldlibs)
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
### variables: library name and version ########################################
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
# strip possibles spaces from lib.name, they mess up calculated file names
|
||||||
|
lib.name := $(strip $(lib.name))
|
||||||
|
|
||||||
|
# if meta file exists, check library version
|
||||||
|
metafile := $(wildcard $(lib.name)-meta.pd)
|
||||||
|
|
||||||
|
ifdef metafile
|
||||||
|
lib.version := $(shell sed -n \
|
||||||
|
's|^\#X text [0-9][0-9]* [0-9][0-9]* VERSION \(.*\);|\1|p' \
|
||||||
|
$(metafile))
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
### variables: files ###########################################################
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
#=== sources ===================================================================
|
||||||
|
|
||||||
|
|
||||||
|
# (re)define <classname>.class.sources using file names in class.sources
|
||||||
|
|
||||||
|
define add-class-source
|
||||||
|
$(notdir $(basename $v)).class.sources += $v
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(foreach v, $(class.sources), $(eval $(add-class-source)))
|
||||||
|
|
||||||
|
# derive class names from <classname>.class.sources variables
|
||||||
|
sourcevariables := $(filter %.class.sources, $(.VARIABLES))
|
||||||
|
classes := $(basename $(basename $(sourcevariables)))
|
||||||
|
|
||||||
|
# accumulate all source files specified in makefile
|
||||||
|
classes.sources := $(sort $(foreach v, $(sourcevariables), $($v)))
|
||||||
|
all.sources := $(classes.sources) $(lib.setup.sources) \
|
||||||
|
$(shared.sources) $(common.sources)
|
||||||
|
|
||||||
|
|
||||||
|
#=== object files ==============================================================
|
||||||
|
|
||||||
|
|
||||||
|
# construct object filenames from all C and C++ source file names
|
||||||
|
classes.objects := $(addsuffix .o, $(basename $(classes.sources)))
|
||||||
|
common.objects := $(addsuffix .o, $(basename $(common.sources)))
|
||||||
|
shared.objects := $(addsuffix .o, $(basename $(shared.sources)))
|
||||||
|
lib.setup.objects := $(addsuffix .o, $(basename $(lib.setup.sources)))
|
||||||
|
all.objects = $(classes.objects) $(common.objects) $(shared.objects) \
|
||||||
|
$(lib.setup.objects)
|
||||||
|
|
||||||
|
|
||||||
|
#=== executables ===============================================================
|
||||||
|
|
||||||
|
|
||||||
|
# construct class executable names from class names
|
||||||
|
classes.executables := $(addsuffix .$(extension), $(classes))
|
||||||
|
|
||||||
|
# construct shared lib executable name if shared sources are defined
|
||||||
|
ifdef shared.sources
|
||||||
|
shared.lib := lib$(lib.name).$(shared.extension)
|
||||||
|
else
|
||||||
|
shared.lib :=
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
### variables: tools ###########################################################
|
### variables: tools ###########################################################
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue