Home | History | Annotate | Download | only in lib
      1 ##===- source/Makefile -------------------------------------*- Makefile -*-===##
      2 # 
      3 #                     The LLVM Compiler Infrastructure
      4 #
      5 # This file is distributed under the University of Illinois Open Source
      6 # License. See LICENSE.TXT for details.
      7 # 
      8 ##===----------------------------------------------------------------------===##
      9 
     10 LEVEL := ../../..
     11 LLDB_LEVEL := ..
     12 
     13 LIBRARYNAME = lldb
     14 
     15 #EXPORTED_SYMBOL_FILE = $(PROJ_SRC_DIR)/$(LLDB_LEVEL)/resources/lldb-framework-exports
     16 NO_BUILD_ARCHIVE = 1
     17 LINK_LIBS_IN_SHARED = 1
     18 SHARED_LIBRARY = 1
     19 
     20 PYTHON_BUILD_FLAGS = $(shell python-config --ldflags)
     21 
     22 # Include all archives in liblldb.so file
     23 USEDLIBS = lldbAPI.a \
     24 	lldbBreakpoint.a \
     25 	lldbCommands.a \
     26 	lldbCore.a \
     27 	lldbDataFormatters.a \
     28 	lldbExpression.a \
     29 	lldbHostCommon.a \
     30 	lldbInitAndLog.a \
     31 	lldbInterpreter.a \
     32 	lldbPluginABIMacOSX_arm.a \
     33 	lldbPluginABIMacOSX_i386.a \
     34 	lldbPluginABISysV_x86_64.a \
     35 	lldbPluginDisassemblerLLVM.a \
     36 	lldbPluginDynamicLoaderStatic.a \
     37 	lldbPluginDynamicLoaderPOSIX.a \
     38 	lldbPluginEmulateInstructionARM.a \
     39 	lldbPluginLanguageRuntimeCPlusPlusItaniumABI.a \
     40 	lldbPluginLanguageRuntimeObjCAppleObjCRuntime.a \
     41 	lldbPluginObjectContainerBSDArchive.a \
     42 	lldbPluginObjectFileELF.a \
     43 	lldbPluginSymbolVendorELF.a \
     44 	lldbPluginObjectFilePECOFF.a \
     45 	lldbPluginOperatingSystemPython.a \
     46 	lldbPluginPlatformGDBServer.a \
     47 	lldbPluginProcessGDBRemote.a \
     48 	lldbPluginSymbolFileDWARF.a \
     49 	lldbPluginSymbolFileSymtab.a \
     50 	lldbPluginUnwindAssemblyInstEmulation.a \
     51 	lldbPluginUnwindAssemblyx86.a \
     52 	lldbPluginUtility.a \
     53 	lldbSymbol.a \
     54 	lldbTarget.a \
     55 	lldbUtility.a \
     56 	clangAnalysis.a \
     57 	clangAST.a \
     58 	clangBasic.a \
     59 	clangCodeGen.a \
     60 	clangFrontend.a \
     61 	clangDriver.a \
     62 	clangEdit.a \
     63 	clangLex.a \
     64 	clangParse.a \
     65 	clangSema.a \
     66 	clangSerialization.a \
     67 	LLVMMCDisassembler.a \
     68 	lldbPluginPlatformMacOSX.a \
     69 	lldbPluginPlatformLinux.a \
     70 	lldbPluginPlatformFreeBSD.a
     71 
     72 # Because GCC requires RTTI enabled for lldbCore (see source/Core/Makefile) it is
     73 # necessary to also link the clang rewriter libraries so vtable references can
     74 # be resolved correctly, if we are building with GCC.
     75 ifeq (g++,$(shell basename $(CXX) | colrm 4))
     76   USEDLIBS += clangRewriteCore.a \
     77               clangRewriteFrontend.a
     78 endif
     79 
     80 include $(LLDB_LEVEL)/../../Makefile.config
     81 
     82 LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader bitwriter codegen \
     83                    instrumentation ipo irreader selectiondag jit mc mcjit \
     84                    linker option
     85 
     86 ifeq ($(HOST_OS),Darwin)
     87   USEDLIBS += lldbHostMacOSX.a \
     88               lldbPluginDynamicLoaderMacOSX.a \
     89               lldbPluginDynamicLoaderDarwinKernel.a \
     90               lldbPluginObjectContainerUniversalMachO.a \
     91               lldbPluginObjectFileMachO.a \
     92               lldbPluginSymbolVendorMacOSX.a \
     93               lldbPluginProcessDarwin.a \
     94               lldbPluginProcessMachCore.a
     95 endif
     96 
     97 ifeq ($(HOST_OS),Linux)
     98   USEDLIBS += lldbHostLinux.a \
     99               lldbPluginProcessLinux.a \
    100               lldbPluginProcessPOSIX.a \
    101               lldbPluginDynamicLoaderMacOSX.a \
    102               lldbPluginProcessElfCore.a
    103 endif
    104 
    105 ifneq (,$(filter $(HOST_OS), FreeBSD GNU/kFreeBSD))
    106   USEDLIBS += lldbHostFreeBSD.a \
    107               lldbPluginProcessPOSIX.a \
    108               lldbPluginProcessFreeBSD.a \
    109               lldbPluginProcessElfCore.a
    110 endif
    111 
    112 include $(LEVEL)/Makefile.common
    113 
    114 ifeq ($(HOST_OS),Darwin)
    115     LLVMLibsOptions += -Wl,-all_load
    116     # set dylib internal version number to llvmCore submission number
    117     ifdef LLDB_SUBMIT_VERSION
    118         LLVMLibsOptions += -Wl,-current_version \
    119                            -Wl,$(LLDB_SUBMIT_VERSION).$(LLDB_SUBMIT_SUBVERSION) \
    120                            -Wl,-compatibility_version -Wl,1
    121     endif
    122     # extra options to override libtool defaults 
    123 	LLVMLibsOptions += -F/System/Library/Frameworks -F/System/Library/PrivateFrameworks
    124 	LLVMLibsOptions += -framework Foundation -framework CoreFoundation
    125 	LLVMLibsOptions += -framework CoreServices -framework Carbon -framework Security
    126 	LLVMLibsOptions += -framework DebugSymbols $(PYTHON_BUILD_FLAGS) -lobjc
    127 	LLVMLibsOptions += -lxml2
    128 	ifneq ($(EXPORTED_SYMBOL_FILE),)
    129 		LLVMLibsOptions += -Wl,-exported_symbols_list -Wl,"$(EXPORTED_SYMBOL_FILE)"
    130 	endif
    131     # Mac OS X 10.4 and earlier tools do not allow a second -install_name on command line
    132     DARWIN_VERS := $(shell echo $(TARGET_TRIPLE) | sed 's/.*darwin\([0-9]*\).*/\1/')
    133     ifneq ($(DARWIN_VERS),8)
    134        LLVMLibsOptions  += -Wl,-install_name \
    135                            -Wl,"@executable_path/../lib/lib$(LIBRARYNAME)$(SHLIBEXT)"
    136     endif
    137 endif
    138 
    139 ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux GNU GNU/kFreeBSD))
    140     # Include everything from the .a's into the shared library.
    141     ProjLibsOptions := -Wl,--whole-archive $(ProjLibsOptions) \
    142                        -Wl,--no-whole-archive
    143     # Don't allow unresolved symbols.
    144     LLVMLibsOptions += -Wl,--no-undefined
    145     # Link in python
    146     LLVMLibsOptions += $(PYTHON_BUILD_FLAGS) -lrt
    147     LLVMLibsOptions += -Wl,--soname,lib$(LIBRARYNAME)$(SHLIBEXT)
    148 endif
    149 
    150 ifeq ($(HOST_OS),FreeBSD)
    151     # Include everything from the .a's into the shared library.
    152     ProjLibsOptions := -Wl,--whole-archive $(ProjLibsOptions) \
    153                        -Wl,--no-whole-archive
    154     # Allow unresolved symbols.
    155     LLVMLibsOptions += -Wl,--allow-shlib-undefined
    156     # Link in python
    157     LLVMLibsOptions += $(PYTHON_BUILD_FLAGS) -lrt -L/usr/local/lib -lexecinfo
    158 endif
    159