X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/ba379fdc102753d6be2c4d937058fe40257329fe..14957cd040308e3eeec43d26bae5d76da13fcd85:/JavaScriptCore.pri?ds=inline diff --git a/JavaScriptCore.pri b/JavaScriptCore.pri index 91a8ce0..ed4cf2e 100644 --- a/JavaScriptCore.pri +++ b/JavaScriptCore.pri @@ -1,261 +1,110 @@ # JavaScriptCore - Qt4 build info -VPATH += $$PWD -CONFIG(debug, debug|release) { - isEmpty(GENERATED_SOURCES_DIR):GENERATED_SOURCES_DIR = generated$${QMAKE_DIR_SEP}debug - OBJECTS_DIR = obj/debug -} else { # Release - isEmpty(GENERATED_SOURCES_DIR):GENERATED_SOURCES_DIR = generated$${QMAKE_DIR_SEP}release - OBJECTS_DIR = obj/release -} +include(../common.pri) + +VPATH += $$PWD -INCLUDEPATH += $$GENERATED_SOURCES_DIR \ - $$PWD \ - $$PWD/parser \ - $$PWD/bytecompiler \ - $$PWD/debugger \ - $$PWD/runtime \ - $$PWD/wtf \ - $$PWD/wtf/unicode \ - $$PWD/interpreter \ - $$PWD/jit \ - $$PWD/profiler \ - $$PWD/wrec \ - $$PWD/yarr \ - $$PWD/API \ - $$PWD/.. \ - $$PWD/ForwardingHeaders \ - $$PWD/bytecode \ - $$PWD/assembler \ +# Use a config-specific target to prevent parallel builds file clashes on Mac +mac: CONFIG(debug, debug|release): JAVASCRIPTCORE_TARGET = jscored +else: JAVASCRIPTCORE_TARGET = jscore -DEFINES += BUILDING_QT__ BUILDING_JavaScriptCore BUILDING_WTF +# Output in JavaScriptCore/ +CONFIG(debug, debug|release) : JAVASCRIPTCORE_DESTDIR = debug +else: JAVASCRIPTCORE_DESTDIR = release -GENERATED_SOURCES_DIR_SLASH = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP} -win32-* { - LIBS += -lwinmm +CONFIG(standalone_package) { + isEmpty(JSC_GENERATED_SOURCES_DIR):JSC_GENERATED_SOURCES_DIR = $$PWD/generated +} else { + isEmpty(JSC_GENERATED_SOURCES_DIR):JSC_GENERATED_SOURCES_DIR = $$OUTPUT_DIR/JavaScriptCore/generated } -# Default rules to turn JIT on/off -!contains(DEFINES, ENABLE_JIT=.) { - isEqual(QT_ARCH,i386)|isEqual(QT_ARCH,windows) { - # Require gcc >= 4.1 - CONFIG(release):linux-g++*:greaterThan(QT_GCC_MAJOR_VERSION,3):greaterThan(QT_GCC_MINOR_VERSION,0) { - DEFINES += ENABLE_JIT=1 - } - win32-msvc* { - DEFINES += ENABLE_JIT=1 - } - } +JAVASCRIPTCORE_INCLUDEPATH = \ + $$PWD \ + $$PWD/.. \ + $$PWD/../ThirdParty \ + $$PWD/assembler \ + $$PWD/bytecode \ + $$PWD/bytecompiler \ + $$PWD/heap \ + $$PWD/dfg \ + $$PWD/debugger \ + $$PWD/interpreter \ + $$PWD/jit \ + $$PWD/parser \ + $$PWD/profiler \ + $$PWD/runtime \ + $$PWD/wtf \ + $$PWD/wtf/gobject \ + $$PWD/wtf/symbian \ + $$PWD/wtf/unicode \ + $$PWD/yarr \ + $$PWD/API \ + $$PWD/ForwardingHeaders \ + $$JSC_GENERATED_SOURCES_DIR + +symbian { + PREPEND_INCLUDEPATH = $$JAVASCRIPTCORE_INCLUDEPATH $$PREPEND_INCLUDEPATH +} else { + INCLUDEPATH = $$JAVASCRIPTCORE_INCLUDEPATH $$INCLUDEPATH } -# Rules when JIT enabled -contains(DEFINES, ENABLE_JIT=1) { - !contains(DEFINES, ENABLE_YARR=.): DEFINES += ENABLE_YARR=1 - !contains(DEFINES, ENABLE_YARR_JIT=.): DEFINES += ENABLE_YARR_JIT=1 - !contains(DEFINES, ENABLE_JIT_OPTIMIZE_CALL=.): DEFINES += ENABLE_JIT_OPTIMIZE_CALL=1 - !contains(DEFINES, ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS=.): DEFINES += ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS=1 - !contains(DEFINES, ENABLE_JIT_OPTIMIZE_ARITHMETIC=.): DEFINES += ENABLE_JIT_OPTIMIZE_ARITHMETIC=1 - linux-g++* { - !contains(DEFINES, WTF_USE_JIT_STUB_ARGUMENT_VA_LIST=.): DEFINES += WTF_USE_JIT_STUB_ARGUMENT_VA_LIST=1 - QMAKE_CXXFLAGS += -fno-stack-protector - QMAKE_CFLAGS += -fno-stack-protector - } - win32-msvc* { - !contains(DEFINES, WTF_USE_JIT_STUB_ARGUMENT_REGISTER=.): DEFINES += WTF_USE_JIT_STUB_ARGUMENT_REGISTER=1 - } +symbian { + LIBS += -lhal + INCLUDEPATH *= $$MW_LAYER_SYSTEMINCLUDE } -include(pcre/pcre.pri) +win32-*: DEFINES += _HAS_TR1=0 -LUT_FILES += \ - runtime/DatePrototype.cpp \ - runtime/JSONObject.cpp \ - runtime/NumberConstructor.cpp \ - runtime/StringPrototype.cpp \ - runtime/ArrayPrototype.cpp \ - runtime/MathObject.cpp \ - runtime/RegExpConstructor.cpp \ - runtime/RegExpObject.cpp +DEFINES += BUILDING_JavaScriptCore BUILDING_WTF -KEYWORDLUT_FILES += \ - parser/Keywords.table +# CONFIG += text_breaking_with_icu -JSCBISON += \ - parser/Grammar.y +contains (CONFIG, text_breaking_with_icu) { + DEFINES += WTF_USE_QT_ICU_TEXT_BREAKING=1 +} -SOURCES += \ - wtf/Assertions.cpp \ - wtf/ByteArray.cpp \ - wtf/HashTable.cpp \ - wtf/MainThread.cpp \ - wtf/RandomNumber.cpp \ - wtf/RefCountedLeakCounter.cpp \ - wtf/TypeTraits.cpp \ - wtf/unicode/CollatorDefault.cpp \ - wtf/unicode/icu/CollatorICU.cpp \ - wtf/unicode/UTF8.cpp \ - API/JSBase.cpp \ - API/JSCallbackConstructor.cpp \ - API/JSCallbackFunction.cpp \ - API/JSCallbackObject.cpp \ - API/JSClassRef.cpp \ - API/JSContextRef.cpp \ - API/JSObjectRef.cpp \ - API/JSStringRef.cpp \ - API/JSValueRef.cpp \ - API/OpaqueJSString.cpp \ - runtime/InitializeThreading.cpp \ - runtime/JSGlobalData.cpp \ - runtime/JSGlobalObject.cpp \ - runtime/JSStaticScopeObject.cpp \ - runtime/JSVariableObject.cpp \ - runtime/JSActivation.cpp \ - runtime/JSNotAnObject.cpp \ - runtime/JSONObject.cpp \ - runtime/LiteralParser.cpp \ - runtime/TimeoutChecker.cpp \ - bytecode/CodeBlock.cpp \ - bytecode/StructureStubInfo.cpp \ - bytecode/JumpTable.cpp \ - jit/JIT.cpp \ - jit/JITCall.cpp \ - jit/JITArithmetic.cpp \ - jit/JITOpcodes.cpp \ - jit/JITPropertyAccess.cpp \ - jit/ExecutableAllocator.cpp \ - jit/JITStubs.cpp \ - bytecompiler/BytecodeGenerator.cpp \ - runtime/ExceptionHelpers.cpp \ - runtime/JSPropertyNameIterator.cpp \ - interpreter/Interpreter.cpp \ - bytecode/Opcode.cpp \ - bytecode/SamplingTool.cpp \ - yarr/RegexCompiler.cpp \ - yarr/RegexInterpreter.cpp \ - yarr/RegexJIT.cpp \ - interpreter/RegisterFile.cpp +wince* { + INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty/ce-compat + INCLUDEPATH += $$PWD/../JavaScriptCore/os-win32 +} -win32-*: SOURCES += jit/ExecutableAllocatorWin.cpp -else: SOURCES += jit/ExecutableAllocatorPosix.cpp -# AllInOneFile.cpp helps gcc analize and optimize code -# Other compilers may be able to do this at link time -SOURCES += \ - runtime/ArgList.cpp \ - runtime/Arguments.cpp \ - runtime/ArrayConstructor.cpp \ - runtime/ArrayPrototype.cpp \ - runtime/BooleanConstructor.cpp \ - runtime/BooleanObject.cpp \ - runtime/BooleanPrototype.cpp \ - runtime/CallData.cpp \ - runtime/Collector.cpp \ - runtime/CommonIdentifiers.cpp \ - runtime/ConstructData.cpp \ - wtf/CurrentTime.cpp \ - runtime/DateConstructor.cpp \ - runtime/DateConversion.cpp \ - runtime/DateInstance.cpp \ - runtime/DatePrototype.cpp \ - debugger/Debugger.cpp \ - debugger/DebuggerCallFrame.cpp \ - debugger/DebuggerActivation.cpp \ - wtf/dtoa.cpp \ - runtime/Error.cpp \ - runtime/ErrorConstructor.cpp \ - runtime/ErrorInstance.cpp \ - runtime/ErrorPrototype.cpp \ - interpreter/CallFrame.cpp \ - runtime/FunctionConstructor.cpp \ - runtime/FunctionPrototype.cpp \ - runtime/GetterSetter.cpp \ - runtime/GlobalEvalFunction.cpp \ - runtime/Identifier.cpp \ - runtime/InternalFunction.cpp \ - runtime/Completion.cpp \ - runtime/JSArray.cpp \ - runtime/JSAPIValueWrapper.cpp \ - runtime/JSByteArray.cpp \ - runtime/JSCell.cpp \ - runtime/JSFunction.cpp \ - runtime/JSGlobalObjectFunctions.cpp \ - runtime/JSImmediate.cpp \ - runtime/JSLock.cpp \ - runtime/JSNumberCell.cpp \ - runtime/JSObject.cpp \ - runtime/JSString.cpp \ - runtime/JSValue.cpp \ - runtime/JSWrapperObject.cpp \ - parser/Lexer.cpp \ - runtime/Lookup.cpp \ - runtime/MathObject.cpp \ - runtime/NativeErrorConstructor.cpp \ - runtime/NativeErrorPrototype.cpp \ - parser/Nodes.cpp \ - runtime/NumberConstructor.cpp \ - runtime/NumberObject.cpp \ - runtime/NumberPrototype.cpp \ - runtime/ObjectConstructor.cpp \ - runtime/ObjectPrototype.cpp \ - runtime/Operations.cpp \ - parser/Parser.cpp \ - parser/ParserArena.cpp \ - runtime/PropertyNameArray.cpp \ - runtime/PropertySlot.cpp \ - runtime/PrototypeFunction.cpp \ - runtime/RegExp.cpp \ - runtime/RegExpConstructor.cpp \ - runtime/RegExpObject.cpp \ - runtime/RegExpPrototype.cpp \ - runtime/ScopeChain.cpp \ - runtime/SmallStrings.cpp \ - runtime/StringConstructor.cpp \ - runtime/StringObject.cpp \ - runtime/StringPrototype.cpp \ - runtime/Structure.cpp \ - runtime/StructureChain.cpp \ - runtime/UString.cpp \ - profiler/HeavyProfile.cpp \ - profiler/Profile.cpp \ - profiler/ProfileGenerator.cpp \ - profiler/ProfileNode.cpp \ - profiler/Profiler.cpp \ - profiler/TreeProfile.cpp \ - wtf/DateMath.cpp \ - wtf/FastMalloc.cpp \ - wtf/Threading.cpp \ - wtf/qt/MainThreadQt.cpp +defineTest(prependJavaScriptCoreLib) { + # Argument is the relative path to JavaScriptCore.pro's qmake output + pathToJavaScriptCoreOutput = $$ARGS/$$JAVASCRIPTCORE_DESTDIR + + win32-msvc*|wince* { + LIBS = -l$$JAVASCRIPTCORE_TARGET $$LIBS + LIBS = -L$$pathToJavaScriptCoreOutput $$LIBS + POST_TARGETDEPS += $${pathToJavaScriptCoreOutput}$${QMAKE_DIR_SEP}$${JAVASCRIPTCORE_TARGET}.lib + } else:symbian { + LIBS = -l$${JAVASCRIPTCORE_TARGET}.lib $$LIBS + # The default symbian build system does not use library paths at all. However when building with + # qmake's symbian makespec that uses Makefiles + QMAKE_LIBDIR += $$pathToJavaScriptCoreOutput + POST_TARGETDEPS += $${pathToJavaScriptCoreOutput}$${QMAKE_DIR_SEP}$${JAVASCRIPTCORE_TARGET}.lib + } else { + # Make sure jscore will be early in the list of libraries to workaround a bug in MinGW + # that can't resolve symbols from QtCore if libjscore comes after. + QMAKE_LIBDIR = $$pathToJavaScriptCoreOutput $$QMAKE_LIBDIR + LIBS = -l$$JAVASCRIPTCORE_TARGET $$LIBS + POST_TARGETDEPS += $${pathToJavaScriptCoreOutput}$${QMAKE_DIR_SEP}lib$${JAVASCRIPTCORE_TARGET}.a + } -!contains(DEFINES, ENABLE_SINGLE_THREADED=1) { - SOURCES += wtf/qt/ThreadingQt.cpp -} else { - DEFINES += ENABLE_JSC_MULTIPLE_THREADS=0 - SOURCES += wtf/ThreadingNone.cpp -} + win32-* { + LIBS += -lwinmm + } -# GENERATOR 1-A: LUT creator -lut.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.lut.h -lut.commands = perl $$PWD/create_hash_table ${QMAKE_FILE_NAME} -i > ${QMAKE_FILE_OUT} -lut.depend = ${QMAKE_FILE_NAME} -lut.input = LUT_FILES -lut.CONFIG += no_link -addExtraCompiler(lut) + # The following line is to prevent qmake from adding jscore to libQtWebKit's prl dependencies. + # The compromise we have to accept by disabling explicitlib is to drop support to link QtWebKit and QtScript + # statically in applications (which isn't used often because, among other things, of licensing obstacles). + CONFIG -= explicitlib -# GENERATOR 1-B: particular LUT creator (for 1 file only) -keywordlut.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}Lexer.lut.h -keywordlut.commands = perl $$PWD/create_hash_table ${QMAKE_FILE_NAME} -i > ${QMAKE_FILE_OUT} -keywordlut.depend = ${QMAKE_FILE_NAME} -keywordlut.input = KEYWORDLUT_FILES -keywordlut.CONFIG += no_link -addExtraCompiler(keywordlut) + export(QMAKE_LIBDIR) + export(LIBS) + export(POST_TARGETDEPS) + export(CONFIG) -# GENERATOR 2: bison grammar -jscbison.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.cpp -jscbison.commands = bison -d -p jscyy ${QMAKE_FILE_NAME} -o $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.tab.c && $(MOVE) $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.tab.c ${QMAKE_FILE_OUT} && $(MOVE) $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.tab.h $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.h -jscbison.depend = ${QMAKE_FILE_NAME} -jscbison.input = JSCBISON -jscbison.variable_out = GENERATED_SOURCES -jscbison.dependency_type = TYPE_C -jscbison.CONFIG = target_predeps -addExtraCompilerWithHeader(jscbison) + return(true) +}