# DETECTION ifeq "$(OS)" "Windows_NT" WINDOWS = defined else ifeq "$(shell uname)" "Darwin" OSX = defined else LINUX = defined endif endif # TOOLS empty := space := $(empty) $(empty) ifdef WINDOWS psep = $(subst \\,/,$(subst /,\,$(1))) # csep = $(subst $(space),+,$(1)) SODESTDIR := bin/ else psep = $(1) # csep = $(1) SODESTDIR := lib/ endif # EXTENSIONS # TOCHECK: is this really needed? .SUFFIXES: .c .ec .sym .imp .o S := .sym I := .imp O := .o A := .a # PREFIXES AND POSTFIXES ifdef WINDOWS E := .exe ifeq "$(TARGET_TYPE)" "staticlib" LP := lib else LP := endif SO := .dll else ifdef OSX E := LP := lib SO := .dylib else E := LP := lib SO := .so endif endif # SHELL COMMANDS ifdef WINDOWS echo = $(if $(1),echo $(1)) # cp = $(if $(1),@cmd /c for %%I in ($(call psep,$(1))) do @copy /y %%I $(call psep,$(2))) cpq = $(if $(1),@cmd /c for %%I in ($(call psep,$(1))) do @copy /y %%I $(call psep,$(2)) > nul 2>&1) # rm = $(if $(1),@cmd /c for %%I in ($(call psep,$(1))) do @del /f /q %%I) rmq = $(if $(1),@cmd /c for %%I in ($(call psep,$(1))) do @del /f /q %%I > nul 2>&1) # mkdir = $(if $(1),-@mkdir $(call psep,$(1))) mkdirq = $(if $(1),-@mkdir $(call psep,$(1)) > nul 2>&1) # rmdir = $(if $(1),-@rmdir /q $(call psep,$(1))) rmdirq = $(if $(1),-@rmdir /q $(call psep,$(1)) > nul 2>&1) else ifdef OSX echo = $(if $(1),echo "$(1)") cpq = $(if $(1),cp $(1) $(2)) rmq = $(if $(1),-rm -f $(1)) mkdirq = $(if $(1),-mkdir -p $(1)) rmdirq = $(if $(1),-rmdir $(1)) else echo = $(if $(1),echo "$(1)") # cp = $(if $(1),@cp $(1) $(2)) cpq = $(if $(1),@cp $(1) $(2)) # rm = $(if $(1),-@rm $(1)) rmq = $(if $(1),-@rm -f $(1)) # mkdir = $(if $(1),-@mkdir -p $(1)) mkdirq = $(if $(1),-@mkdir -p $(1)) # rmdir = $(if $(1),-@rmdir $(1)) rmdirq = $(if $(1),-@rmdir $(1)) endif endif # COMPILER OPTIONS ifeq "$(TARGET_TYPE)" "sharedlib" ECSLIBOPT := -dynamiclib else ifeq "$(TARGET_TYPE)" "staticlib" ECSLIBOPT := -staticlib else ECSLIBOPT := endif endif ifdef WINDOWS FVISIBILITY := FPIC := ifeq "$(TARGET_TYPE)" "executable" EXECUTABLE := $(CONSOLE) else EXECUTABLE := endif #ifeq "$(TARGET_TYPE)" "sharedlib" # LIBOPT := -dynamiclib #else # LIBOPT := #endif else FVISIBILITY := -fvisibility=hidden FPIC := -fPIC EXECUTABLE := #ifeq "$(TARGET_TYPE)" "sharedlib" # LIBOPT := -shared #else # LIBOPT := #endif endif ifdef OSX ifeq "$(TARGET_TYPE)" "sharedlib" INSTALLNAME := -install_name $(LP)$(MODULE)$(SO) else INSTALLNAME := endif else INSTALLNAME := endif # LINKER OPTIONS ifdef OSX ifeq "$(TARGET_TYPE)" "sharedlib" SHAREDLIB := -dynamiclib -single_module -multiply_defined suppress LINKOPT := else SHAREDLIB := LINKOPT := endif ifeq "$(TARGET_TYPE)" "sharedlib" STRIPOPT := -x else STRIPOPT := -u -r endif else ifeq "$(TARGET_TYPE)" "sharedlib" SHAREDLIB := -shared else SHAREDLIB := endif LINKOPT := STRIPOPT := endif