rusty_link 0.4.9

Rust bindings for Ableton Link through the official C Wrapper (abl_link)
Documentation
COMMON_CXXFLAGS = -nologo -GR -EHsc -I. -I../../../include

!ifdef CXXLATEST
STD_CXXFLAGS = -std:c++latest
!endif

!ifdef WARNINGS
WARNINGS_CXXFLAGS = -W4 -wd4512 -wd4447
!endif

!ifdef STATICRTL
! ifdef DEBUG
DEBUG_CXXFLAGS = -Zi -MTd
! else
DEBUG_CXXFLAGS = -O2 -MT
! endif
!else
! ifdef DEBUG
DEBUG_CXXFLAGS = -Zi -MDd
! else
DEBUG_CXXFLAGS = -O2 -MD
! endif
!endif

!ifdef UNICODE
UNICODE_CXXFLAGS = -DUNICODE -D_UNICODE
!endif

!ifdef TRACKING
TRACKING_CXXFLAGS = -DASIO_ENABLE_HANDLER_TRACKING
!endif

!ifndef _WIN32_WINNT
! ifdef STORE
_WIN32_WINNT=0x0603
! else
_WIN32_WINNT=0x0601
! endif
!endif

!ifdef WIN9X
DEFINES = \
	-DASIO_DISABLE_IOCP \
	-D_WIN32_WINNT=$(_WIN32_WINNT) \
	-DBOOST_ALL_NO_LIB \
	-DBOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
!else
! ifdef STORE
DEFINES = \
	-DWINAPI_FAMILY=WINAPI_FAMILY_PC_APP \
	-DBOOST_ALL_NO_LIB -D_WIN32_WINNT=$(_WIN32_WINNT) \
	-DUNICODE -D_UNICODE \
	-DBOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
! else
!  ifdef WINRT
DEFINES = \
	-ZW -FI SDKDDKVer.h -FI winapifamily.h -DWINAPI_FAMILY=WINAPI_PARTITION_APP \
	-DBOOST_ALL_NO_LIB \
	-DBOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
!  else
DEFINES = \
	-D_WIN32_WINNT=$(_WIN32_WINNT) \
	-DBOOST_ALL_NO_LIB \
	-DBOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
!  endif
! endif
!endif

!ifdef STANDALONE
STANDALONE_CXXFLAGS = -DASIO_STANDALONE
!else
STANDALONE_CXXFLAGS = -I$(BOOSTDIR) -DASIO_ENABLE_BOOST
!endif

CXXFLAGS = \
	$(COMMON_CXXFLAGS) \
	$(STD_CXXFLAGS) \
	$(WARNINGS_CXXFLAGS) \
	$(DEBUG_CXXFLAGS) \
	$(UNICODE_CXXFLAGS) \
	$(TRACKING_CXXFLAGS) \
	$(STANDALONE_CXXFLAGS)

CPP03_TEST_EXES = \
	cpp03\query_free.exe \
	cpp03\query_member.exe \
	cpp03\query_static.exe \
	cpp03\can_query_free.exe \
	cpp03\can_query_member.exe \
	cpp03\can_query_static.exe \
	cpp03\can_query_unsupported.exe \
	cpp03\can_query_not_applicable_free.exe \
	cpp03\can_query_not_applicable_member.exe \
	cpp03\can_query_not_applicable_static.exe \
	cpp03\can_query_not_applicable_unsupported.exe \
	cpp03\require_concept_free.exe \
	cpp03\require_concept_member.exe \
	cpp03\require_concept_static.exe \
	cpp03\can_require_concept_free.exe \
	cpp03\can_require_concept_member.exe \
	cpp03\can_require_concept_static.exe \
	cpp03\can_require_concept_unsupported.exe \
	cpp03\can_require_concept_not_applicable_free.exe \
	cpp03\can_require_concept_not_applicable_member.exe \
	cpp03\can_require_concept_not_applicable_static.exe \
	cpp03\can_require_concept_not_applicable_unsupported.exe \
	cpp03\require_free.exe \
	cpp03\require_member.exe \
	cpp03\require_static.exe \
	cpp03\can_require_free.exe \
	cpp03\can_require_member.exe \
	cpp03\can_require_static.exe \
	cpp03\can_require_unsupported.exe \
	cpp03\can_require_not_applicable_free.exe \
	cpp03\can_require_not_applicable_member.exe \
	cpp03\can_require_not_applicable_static.exe \
	cpp03\can_require_not_applicable_unsupported.exe \
	cpp03\prefer_free_prefer.exe \
	cpp03\prefer_member_prefer.exe \
	cpp03\prefer_free_require.exe \
	cpp03\prefer_member_require.exe \
	cpp03\prefer_static.exe \
	cpp03\prefer_unsupported.exe \
	cpp03\can_prefer_free_prefer.exe \
	cpp03\can_prefer_free_require.exe \
	cpp03\can_prefer_member_prefer.exe \
	cpp03\can_prefer_member_require.exe \
	cpp03\can_prefer_static.exe \
	cpp03\can_prefer_unsupported.exe \
	cpp03\can_prefer_not_applicable_free_prefer.exe \
	cpp03\can_prefer_not_applicable_free_require.exe \
	cpp03\can_prefer_not_applicable_member_prefer.exe \
	cpp03\can_prefer_not_applicable_member_require.exe \
	cpp03\can_prefer_not_applicable_static.exe \
	cpp03\can_prefer_not_applicable_unsupported.exe \
	cpp03\can_prefer_not_preferable_free_prefer.exe \
	cpp03\can_prefer_not_preferable_free_require.exe \
	cpp03\can_prefer_not_preferable_member_prefer.exe \
	cpp03\can_prefer_not_preferable_member_require.exe \
	cpp03\can_prefer_not_preferable_static.exe \
	cpp03\can_prefer_not_preferable_unsupported.exe

!ifdef CPP11

CPP11_TEST_EXES = \
	cpp11\query_free.exe \
	cpp11\query_member.exe \
	cpp11\query_static.exe \
	cpp11\can_query_free.exe \
	cpp11\can_query_member.exe \
	cpp11\can_query_static.exe \
	cpp11\can_query_unsupported.exe \
	cpp11\can_query_not_applicable_free.exe \
	cpp11\can_query_not_applicable_member.exe \
	cpp11\can_query_not_applicable_static.exe \
	cpp11\can_query_not_applicable_unsupported.exe \
	cpp11\require_concept_free.exe \
	cpp11\require_concept_member.exe \
	cpp11\require_concept_static.exe \
	cpp11\can_require_concept_free.exe \
	cpp11\can_require_concept_member.exe \
	cpp11\can_require_concept_static.exe \
	cpp11\can_require_concept_unsupported.exe \
	cpp11\can_require_concept_not_applicable_free.exe \
	cpp11\can_require_concept_not_applicable_member.exe \
	cpp11\can_require_concept_not_applicable_static.exe \
	cpp11\can_require_concept_not_applicable_unsupported.exe \
	cpp11\require_free.exe \
	cpp11\require_member.exe \
	cpp11\require_static.exe \
	cpp11\can_require_free.exe \
	cpp11\can_require_member.exe \
	cpp11\can_require_static.exe \
	cpp11\can_require_unsupported.exe \
	cpp11\can_require_not_applicable_free.exe \
	cpp11\can_require_not_applicable_member.exe \
	cpp11\can_require_not_applicable_static.exe \
	cpp11\can_require_not_applicable_unsupported.exe \
	cpp11\prefer_free_prefer.exe \
	cpp11\prefer_member_prefer.exe \
	cpp11\prefer_free_require.exe \
	cpp11\prefer_member_require.exe \
	cpp11\prefer_static.exe \
	cpp11\prefer_unsupported.exe \
	cpp11\can_prefer_free_prefer.exe \
	cpp11\can_prefer_free_require.exe \
	cpp11\can_prefer_member_prefer.exe \
	cpp11\can_prefer_member_require.exe \
	cpp11\can_prefer_static.exe \
	cpp11\can_prefer_unsupported.exe \
	cpp11\can_prefer_not_applicable_free_prefer.exe \
	cpp11\can_prefer_not_applicable_free_require.exe \
	cpp11\can_prefer_not_applicable_member_prefer.exe \
	cpp11\can_prefer_not_applicable_member_require.exe \
	cpp11\can_prefer_not_applicable_static.exe \
	cpp11\can_prefer_not_applicable_unsupported.exe \
	cpp11\can_prefer_not_preferable_free_prefer.exe \
	cpp11\can_prefer_not_preferable_free_require.exe \
	cpp11\can_prefer_not_preferable_member_prefer.exe \
	cpp11\can_prefer_not_preferable_member_require.exe \
	cpp11\can_prefer_not_preferable_static.exe \
	cpp11\can_prefer_not_preferable_unsupported.exe

!endif

!ifdef CPP14

CPP14_TEST_EXES = \
	cpp14\query_free.exe \
	cpp14\query_member.exe \
	cpp14\query_static.exe \
	cpp14\can_query_free.exe \
	cpp14\can_query_member.exe \
	cpp14\can_query_static.exe \
	cpp14\can_query_unsupported.exe \
	cpp14\can_query_not_applicable_free.exe \
	cpp14\can_query_not_applicable_member.exe \
	cpp14\can_query_not_applicable_static.exe \
	cpp14\can_query_not_applicable_unsupported.exe \
	cpp14\require_concept_free.exe \
	cpp14\require_concept_member.exe \
	cpp14\require_concept_static.exe \
	cpp14\can_require_concept_free.exe \
	cpp14\can_require_concept_member.exe \
	cpp14\can_require_concept_static.exe \
	cpp14\can_require_concept_unsupported.exe \
	cpp14\can_require_concept_not_applicable_free.exe \
	cpp14\can_require_concept_not_applicable_member.exe \
	cpp14\can_require_concept_not_applicable_static.exe \
	cpp14\can_require_concept_not_applicable_unsupported.exe \
	cpp14\require_free.exe \
	cpp14\require_member.exe \
	cpp14\require_static.exe \
	cpp14\can_require_free.exe \
	cpp14\can_require_member.exe \
	cpp14\can_require_static.exe \
	cpp14\can_require_unsupported.exe \
	cpp14\can_require_not_applicable_free.exe \
	cpp14\can_require_not_applicable_member.exe \
	cpp14\can_require_not_applicable_static.exe \
	cpp14\can_require_not_applicable_unsupported.exe \
	cpp14\prefer_free_prefer.exe \
	cpp14\prefer_member_prefer.exe \
	cpp14\prefer_free_require.exe \
	cpp14\prefer_member_require.exe \
	cpp14\prefer_static.exe \
	cpp14\prefer_unsupported.exe \
	cpp14\can_prefer_free_prefer.exe \
	cpp14\can_prefer_free_require.exe \
	cpp14\can_prefer_member_prefer.exe \
	cpp14\can_prefer_member_require.exe \
	cpp14\can_prefer_static.exe \
	cpp14\can_prefer_unsupported.exe \
	cpp14\can_prefer_not_applicable_free_prefer.exe \
	cpp14\can_prefer_not_applicable_free_require.exe \
	cpp14\can_prefer_not_applicable_member_prefer.exe \
	cpp14\can_prefer_not_applicable_member_require.exe \
	cpp14\can_prefer_not_applicable_static.exe \
	cpp14\can_prefer_not_applicable_unsupported.exe \
	cpp14\can_prefer_not_preferable_free_prefer.exe \
	cpp14\can_prefer_not_preferable_free_require.exe \
	cpp14\can_prefer_not_preferable_member_prefer.exe \
	cpp14\can_prefer_not_preferable_member_require.exe \
	cpp14\can_prefer_not_preferable_static.exe \
	cpp14\can_prefer_not_preferable_unsupported.exe

!endif

TEST_EXES = \
	$(CPP03_TEST_EXES) \
	$(CPP11_TEST_EXES) \
	$(CPP14_TEST_EXES)

all: \
	$(TEST_EXES)

check: $(TEST_EXES)
	!@echo === Running $** === && $** && echo.

{cpp03}.cpp{cpp03}.exe:
	cl -Fe$@ -Fo$(<:.cpp=.obj) $(CXXFLAGS) $(DEFINES) $< $(LIBS) -link -opt:ref

{cpp11}.cpp{cpp11}.exe:
	cl -Fe$@ -Fo$(<:.cpp=.obj) $(CXXFLAGS) $(DEFINES) $< $(LIBS) -link -opt:ref

{cpp14}.cpp{cpp14}.exe:
	cl -Fe$@ -Fo$(<:.cpp=.obj) $(CXXFLAGS) $(DEFINES) $< $(LIBS) -link -opt:ref

clean:
	-del /q /s cpp03\*.exe
	-del /q /s cpp03\*.exe.manifest
	-del /q /s cpp03\*.exp
	-del /q /s cpp03\*.ilk
	-del /q /s cpp03\*.pdb
	-del /q /s cpp03\*.obj
	-del /q /s cpp11\*.exe
	-del /q /s cpp11\*.exe.manifest
	-del /q /s cpp11\*.exp
	-del /q /s cpp11\*.ilk
	-del /q /s cpp11\*.pdb
	-del /q /s cpp11\*.obj
	-del /q /s cpp14\*.exe
	-del /q /s cpp14\*.exe.manifest
	-del /q /s cpp14\*.exp
	-del /q /s cpp14\*.ilk
	-del /q /s cpp14\*.pdb
	-del /q /s cpp14\*.obj
	-del /q /s *.pdb