.title ASE 시작하기

= ASE 시작하기 =

본 문서는 ASE를 사용하기위해서 필요한 정보를 제공한다.

== 소스코드 디렉토리 ==

소스코드는 다음과 같은 디렉토리로 구성된다.

{{{
ase +- cmn  .................... 공통 함수와 매크로를 포함한다.
    +- utl  .................... 보다 일반적인 공통 함수와 매크로를 포함한다.
    +- awk  .................... AWK 처리기
    +- lsp  .................... LISP 처리기
    +- com  .................... 각 처리기들의 COM 래퍼모듈
    +- test +- awk  ............ AWK 처리기 시험 프로그램
            +- lsp  ............ LISP 처리기 시험 프로그램
            +- com  ............ COM 래퍼모듈 시험 프로그램
}}}

== 빌드 ==

각종 운영체제에서 어떻게 ASE를 빌드하는지 보여준다.

=== Unix/Linux ===

[[configure]]스크립트를 실행한후 [[make]]프로그램을 실행한다. 

{{{
$ ./configure
$ make 
}}}
[[configure]]스크립트는 해당 시스템의 정보를 수집하여 빌드환경을 설정하고 [[make]]는 각각의 서브다이렉트리를 방문해서 바이너리 파일을 만든다. 라이브러리 파일을 [[release/lib]]에, 실행파일들읜 [[release/bin]]에 만들어 진다.

[[--enable-debug]]를 [[configure]]에 사용한 경우에는, 빌드환경이 디버깅에 적합하도록 만들어진다. [[make]]를 실행하면 결과 파일들은 [[debug/lib]]와 [[debug/bin]]에 만들어 진다.

{{{
$ ./configure --enable-debug
$ make
}}}

다음의 표는 빌드환경별로 파일이 만들어지는 위치를 보여준다.

{{{
---------------------------------------------------------------------------
모드     실행파일             라이브러리파일       헤더파일
---------------------------------------------------------------------------
release  ${top}/release/bin   ${top}/release/lib   ${top}/release/inc
debug    ${top)/debug/bin     $(top)/debug/lib     ${top}/debug/inc
---------------------------------------------------------------------------

* ${top} - 최상위 디렉토리
}}}

특정한 컴파일러와 컴파일러 옵션을 사용하고 싶을때는 [[configure]]를 실행할때 이를 명시해야 한다. 다음의 예들을 보라.

{{{
# HP-UX B.11.23 with HP ANSI C 
CC=cc CFLAGS="-O2 +DD64" LDFLAGS="+DD64" ./configure # 64-bit
CC=cc CFLAGS="-O2 +DD32" LDFLAGS="+DD32" ./configure # 32-bit

# SCO OpenServer Release 5.0.7 (SCO_SV 3.2 5.0.7) with SCO OpenServer Development System
CC=cc CFLAGS="-Xc -a ansi -O2" ./configure

# Solaris 10 with GCC
CC=gcc CFLAGS="-Wall -O2 -m64" LDFLAGS="-m64" ./configure # 64-bit
CC=gcc CFLAGS="-Wall -O2" ./configure # 32-bit
}}}

C++컴파일러와 옵션은 [[CXX]]와 [[CXXFLAGS]]을 사용해서 명시하면 된다.

JNI헤더파일을 찾을수 있으면 [[configure]]는 JNI라이브러리와 클래스파일들이 만들어 질수 있도록 빌드환경을 설정한다. 이를 위해서 [[javac]]명령어를 [[PATH]]환경변수에 설정된 경로에서 찿고, 이 정보를 이용해서 JNI헤더파일을 찾아낸다. 아파치재단의 {ant,http://ant.apache.org}를 이용하여 자바클래스파일들을 만들수도 있다. 이를 위해서 [[build.xml]]파일이 최상위 디렉토리에 제공된다.

=== OpenVMS ===

OpenVMS에서는 [[mms]]나 [[mmk]]명령어를 사용해야 한다. 다만 [[configure]]같은 환경설정 스크립트가 제공되지 않으므로, 필요한 경우 [[descrip.mms]]파일을 직접 편집해야 한다.

예를 들어, awk라이브러리와 시험프로그램을 만들려면 필요한 서브디렉토리에서 [[mms]]나 [[mmk]]를 실행하면 된다.

{{{
set default [.ase.cmn]
mms
set default [-.awk]
mms
set default [-.utl]
mms
set default [-.test.awk]
mms
}}}

OpenVMS에 익숙하지 않은 사용자라면 다음의 방법으로 만들어진 시험프로그램을 실행해볼수 있다.

{{{
; define the foreign command.
aseawk :== $DISK$GEIN_SYS:[USERS.BACON.ASE.TEST.AWK]aseawk.exe
; run the command.
aseawk -f hello.awk
}}}

=== MS-Windows ===

윈도우즈에서는 비쥬얼스튜디오6이나 그 이후 버전이 필요하다. 닷넷관련 프로젝트를 빌드하려면 비쥬얼슈트디오2003이나 그 이후 버전이 필요하다.

== 바이너리파일 ==

빌드에 성공하면 다음과 같은 파일들이 만들어 진다.

{{{
lib +- libaseawk.a
    +- libaselsp.a
    +- libasecmn.a 
    +- libaseutl.a 

bin
}}}