From c92c3fc4c8555ad357c4cbfe598e648c070356d4 Mon Sep 17 00:00:00 2001 From: jules Date: Tue, 19 Mar 2013 20:09:30 +0000 Subject: [PATCH] Introjucer: linux CPU architecture option. --- .../Project Saving/jucer_ProjectExport_Make.h | 27 ++++++++++++++++--- .../Source/Utility/jucer_PresetIDs.h | 1 + 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_Make.h b/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_Make.h index ed04457a05..61bc95eb30 100644 --- a/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_Make.h +++ b/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_Make.h @@ -89,8 +89,17 @@ protected: setValueIfVoid (getLibrarySearchPathValue(), "/usr/X11R6/lib/"); } - void createConfigProperties (PropertyListBuilder&) + Value getArchitectureType() { return getValue (Ids::linuxArchitecture); } + String getArchitectureTypeString() const { return config [Ids::linuxArchitecture]; } + + void createConfigProperties (PropertyListBuilder& props) { + const char* const archNames[] = { "(Default)", "32-bit (-m32)", "64-bit (-m64)" }; + const var archFlags[] = { var(), "-m32", "-m64" }; + + props.add (new ChoicePropertyComponent (getArchitectureType(), "Architecture", + StringArray (archNames, numElementsInArray (archNames)), + Array (archFlags, numElementsInArray (archFlags)))); } }; @@ -157,7 +166,7 @@ private: void writeLinkerFlags (OutputStream& out, const BuildConfiguration& config) const { - out << " LDFLAGS += -L$(BINDIR) -L$(LIBDIR)"; + out << " LDFLAGS += " << getArchFlags (config) << "-L$(BINDIR) -L$(LIBDIR)"; if (makefileIsDLL) out << " -shared"; @@ -208,7 +217,8 @@ private: out << " -O" << config.getGCCOptimisationFlag() << newLine; - out << " CXXFLAGS += $(CFLAGS) " << replacePreprocessorTokens (config, getExtraCompilerFlagsString()).trim() << newLine; + out << " CXXFLAGS += $(CFLAGS) " << getArchFlags (config) + << replacePreprocessorTokens (config, getExtraCompilerFlagsString()).trim() << newLine; writeLinkerFlags (out, config); @@ -313,6 +323,15 @@ private: out << "-include $(OBJECTS:%.o=%.d)" << newLine; } + String getArchFlags (const BuildConfiguration& config) const + { + if (const MakeBuildConfiguration* makeConfig = dynamic_cast (&config)) + if (makeConfig->getArchitectureTypeString().isNotEmpty()) + return makeConfig->getArchitectureTypeString() + " "; + + return String::empty; + } + String getObjectFileFor (const RelativePath& file) const { return file.getFileNameWithoutExtension() @@ -323,4 +342,4 @@ private: }; -#endif // __JUCER_PROJECTEXPORT_MAKE_JUCEHEADER__ +#endif // __JUCER_PROJECTEXPORT_MAKE_JUCEHEADER__ \ No newline at end of file diff --git a/extras/Introjucer/Source/Utility/jucer_PresetIDs.h b/extras/Introjucer/Source/Utility/jucer_PresetIDs.h index 3680645b0b..97f08ae121 100644 --- a/extras/Introjucer/Source/Utility/jucer_PresetIDs.h +++ b/extras/Introjucer/Source/Utility/jucer_PresetIDs.h @@ -77,6 +77,7 @@ namespace Ids DECLARE_ID (extraFrameworks); DECLARE_ID (winArchitecture); DECLARE_ID (winWarningLevel); + DECLARE_ID (linuxArchitecture); DECLARE_ID (toolset); DECLARE_ID (msvcModuleDefinitionFile); DECLARE_ID (bigIcon);