123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- --
- -- tests/test_gmake_cpp.lua
- -- Automated test suite for GNU Make C/C++ project generation.
- -- Copyright (c) 2009 Jason Perkins and the Premake project
- --
- T.gmake_cpp = { }
- --
- -- Configure a solution for testing
- --
- local sln, prj
- function T.gmake_cpp.setup()
- _ACTION = "gmake"
- _OPTIONS.os = "linux"
- sln = solution "MySolution"
- configurations { "Debug", "Release" }
- platforms { "native" }
- prj = project "MyProject"
- language "C++"
- kind "ConsoleApp"
- end
- local function prepare()
- premake.bake.buildconfigs()
- end
- --
- -- Test the header
- --
- function T.gmake_cpp.BasicHeader()
- prepare()
- premake.gmake_cpp_header(prj, premake.gcc, sln.platforms)
- test.capture [[
- # GNU Make project makefile autogenerated by Premake
- ifndef config
- config=debug
- endif
- ifndef verbose
- SILENT = @
- endif
- CC = gcc
- CXX = g++
- AR = ar
- ifndef RESCOMP
- ifdef WINDRES
- RESCOMP = $(WINDRES)
- else
- RESCOMP = windres
- endif
- endif
- ]]
- end
- --
- -- Test configuration blocks
- --
- function T.gmake_cpp.BasicCfgBlock()
- prepare()
- local cfg = premake.getconfig(prj, "Debug")
- premake.gmake_cpp_config(cfg, premake.gcc)
- test.capture [[
- ifeq ($(config),debug)
- OBJDIR = obj/Debug
- TARGETDIR = .
- TARGET = $(TARGETDIR)/MyProject
- DEFINES +=
- INCLUDES +=
- ALL_CPPFLAGS += $(CPPFLAGS) -MMD -MP $(DEFINES) $(INCLUDES)
- ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH)
- ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CFLAGS)
- ALL_RESFLAGS += $(RESFLAGS) $(DEFINES) $(INCLUDES)
- ALL_LDFLAGS += $(LDFLAGS) -s
- LDDEPS +=
- LIBS += $(LDDEPS)
- LINKCMD = $(CXX) -o $(TARGET) $(OBJECTS) $(RESOURCES) $(ARCH) $(ALL_LDFLAGS) $(LIBS)
- define PREBUILDCMDS
- endef
- define PRELINKCMDS
- endef
- define POSTBUILDCMDS
- endef
- endif
- ]]
- end
- function T.gmake_cpp.BasicCfgBlockWithPlatformCc()
- platforms { "ps3" }
- prepare()
- local cfg = premake.getconfig(prj, "Debug", "PS3")
- premake.gmake_cpp_config(cfg, premake.gcc)
- test.capture [[
- ifeq ($(config),debugps3)
- CC = ppu-lv2-g++
- CXX = ppu-lv2-g++
- AR = ppu-lv2-ar
- OBJDIR = obj/PS3/Debug
- TARGETDIR = .
- TARGET = $(TARGETDIR)/MyProject.elf
- DEFINES +=
- INCLUDES +=
- ALL_CPPFLAGS += $(CPPFLAGS) -MMD -MP $(DEFINES) $(INCLUDES)
- ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH)
- ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CFLAGS)
- ALL_RESFLAGS += $(RESFLAGS) $(DEFINES) $(INCLUDES)
- ALL_LDFLAGS += $(LDFLAGS) -s
- LDDEPS +=
- LIBS += $(LDDEPS)
- LINKCMD = $(CXX) -o $(TARGET) $(OBJECTS) $(RESOURCES) $(ARCH) $(ALL_LDFLAGS) $(LIBS)
- define PREBUILDCMDS
- endef
- define PRELINKCMDS
- endef
- define POSTBUILDCMDS
- endef
- endif
- ]]
- end
- function T.gmake_cpp.PlatformSpecificBlock()
- platforms { "x64" }
- prepare()
- local cfg = premake.getconfig(prj, "Debug", "x64")
- premake.gmake_cpp_config(cfg, premake.gcc)
- test.capture [[
- ifeq ($(config),debug64)
- OBJDIR = obj/x64/Debug
- TARGETDIR = .
- TARGET = $(TARGETDIR)/MyProject
- DEFINES +=
- INCLUDES +=
- ALL_CPPFLAGS += $(CPPFLAGS) -MMD -MP $(DEFINES) $(INCLUDES)
- ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH) -m64
- ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CFLAGS)
- ALL_RESFLAGS += $(RESFLAGS) $(DEFINES) $(INCLUDES)
- ALL_LDFLAGS += $(LDFLAGS) -s -m64 -L/usr/lib64
- LDDEPS +=
- LIBS += $(LDDEPS)
- LINKCMD = $(CXX) -o $(TARGET) $(OBJECTS) $(RESOURCES) $(ARCH) $(ALL_LDFLAGS) $(LIBS)
- define PREBUILDCMDS
- endef
- define PRELINKCMDS
- endef
- define POSTBUILDCMDS
- endef
- endif
- ]]
- end
- function T.gmake_cpp.UniversalStaticLibBlock()
- kind "StaticLib"
- platforms { "universal32" }
- prepare()
- local cfg = premake.getconfig(prj, "Debug", "Universal32")
- premake.gmake_cpp_config(cfg, premake.gcc)
- test.capture [[
- ifeq ($(config),debuguniv32)
- OBJDIR = obj/Universal32/Debug
- TARGETDIR = .
- TARGET = $(TARGETDIR)/libMyProject.a
- DEFINES +=
- INCLUDES +=
- ALL_CPPFLAGS += $(CPPFLAGS) $(DEFINES) $(INCLUDES)
- ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH) -arch i386 -arch ppc
- ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CFLAGS)
- ALL_RESFLAGS += $(RESFLAGS) $(DEFINES) $(INCLUDES)
- ALL_LDFLAGS += $(LDFLAGS) -s -arch i386 -arch ppc
- LDDEPS +=
- LIBS += $(LDDEPS)
- LINKCMD = libtool -o $(TARGET) $(OBJECTS)
- define PREBUILDCMDS
- endef
- define PRELINKCMDS
- endef
- define POSTBUILDCMDS
- endef
- endif
- ]]
- end
|